Apache2: mod_wsgi и пассажир не ладят
Я пытаюсь запустить экземпляр apache2 на сервере Ubuntu с двумя виртуальными хостами. Один для redmine(пассажирский фьюжн) и один для 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>
Кто-нибудь знает, почему эти два сайта теряют другой, в зависимости от того, который инициализируется первым? Это очень расстраивает
1 ответ
Для достижения ваших целей вам необходим один виртуальный хост с двумя каталогами. Два виртуальных хоста, привязанные к *: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>