Назад | Перейти на главную страницу

Apache2: mod_wsgi и пассажир не ладят

Я пытаюсь запустить экземпляр 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>