Я пытаюсь запустить экземпляр apache2 на сервере ubuntu с двумя виртуальными хостами. Один для redmine (пассажир phusion) и один для ReviewBoard (mod_wsgi). Я не создал ни одной конфигурации сервера, которая позволила бы им быть доступными, и происходят некоторые любопытные вещи.
Я пытаюсь получить www.domain.com/redmine и www.domain.com/reviews. В зависимости от порядка инициализации двух сайтов при запуске sudo service apache2 restart
зависит от того, на какой сайт я могу попасть. Например, если у меня есть в apache2.conf:
Include sites-enabled/reviews
Include sites-enabled/redmine
www.domain.com/reviews
буду там, где я могу добраться, но если они поменяются местами, я могу добраться до www.domain.com/redmine
.
Конфигурации в сайтах с поддержкой выглядят так:
#sites-enabled/redmine
<VirtualHost *:80>
ServerName redmine.ts.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /var/www/tracking
<Directory /var/www/tracking/redmine>
Order allow,deny
Allow from all
Options -MultiViews FollowSymLinks Indexes
PassengerResolveSymlinksInDocumentRoot on
RailsBaseURI /redmine
</Directory>
</VirtualHost>
#sites-enabled/reviews
<VirtualHost *:80>
ServerName reviews.ts.com
DocumentRoot /var/www/reviews/htdocs
# Error handlers
ErrorDocument 500 /errordocs/500.html
WSGIPassAuthorization On
WSGIScriptAlias "/reviews" "/var/www/reviews/htdocs/reviewboard.wsgi/reviews"
<Directory /var/www/reviews/htdocs>
AllowOverride All
Options -Indexes FollowSymLinks
Allow from all
</Directory>
# Alias static media requests to filesystem
Alias /reviews/media "/var/www/reviews/htdocs/media"
Alias /reviews/errordocs "/var/www/reviews/htdocs/errordocs"
Alias /reviews/favicon.ico "/var/www/reviews/htdocs/media/rbcommons/images/favicon.png"
</VirtualHost>
Кто-нибудь знает, почему эти два сайта используют другой, в зависимости от того, какой из них инициализирован первым? Это очень неприятно
Для достижения ваших целей вам понадобится один виртуальный хост с двумя каталогами под ним. Два виртуальных хоста, привязанных к *: 80 с разными настройками ServerName, приведут к двум отдельным именованным виртуальным хостам, и URL-адреса не будут расположены под одним хостом.
Это должно быть выполнено с помощью директивы alias, указывающей на каталоги, которые вы уже указали. Основываясь на ваших двух файлах конфигурации, он должен выглядеть примерно так.
<VirtualHost *:80>
ServerName www.domain.com
# Set a default root
DocumentRoot /var/www/html
# Define redmine subfolder and directory settings
Alias /redmine /var/www/tracking/redmine
<Directory /var/www/tracking/redmine>
Order allow,deny
Allow from all
Options -MultiViews FollowSymLinks Indexes
PassengerResolveSymlinksInDocumentRoot on
RailsBaseURI /redmine
</Directory>
# These settings may need to be moved under the directory definiton
WSGIPassAuthorization On
WSGIScriptAlias "/reviews" "/var/www/reviews/htdocs/reviewboard.wsgi/reviews"
<Directory /var/www/reviews/htdocs>
AllowOverride All
Options -Indexes FollowSymLinks
Allow from all
</Directory>
Alias /reviews/media "/var/www/reviews/htdocs/media"
Alias /reviews/errordocs "/var/www/reviews/htdocs/errordocs"
Alias /reviews/favicon.ico "/var/www/reviews/htdocs/media/rbcommons/images/favicon.png"
</VirtualHost>