Пассажирский автономный работает, но Пассажирский модуль для Apache не работает - PullRequest
4 голосов
/ 13 февраля 2012

У меня есть веб-приложение RoR, которое я пытаюсь использовать в Passenger на Apache.Странно то, что я могу получить доступ к веб-приложению, если использую Passenger Standalone, но я не могу получить доступ к веб-приложению, используя Apache с модулем Passenger.

Кажется, что пассажирский модуль работает, о чем свидетельствует тот факт, что я могу запустить Apache без ошибок и что статус пассажира возвращает следующее:

----------- General information -----------
max      = 6
count    = 0
active   = 0
inactive = 0
Waiting on global queue: 0

----------- Application groups ----------- 

При попытке получить доступ квеб-приложение. Я получаю список каталогов общих папок.

Вот мой файл виртуальных хостов:

<VirtualHost *:80>
ServerAdmin smith@example.com

DocumentRoot /home/smith/www/dashboard/public
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /home/smith/www/dashboard/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

В конце моего файла apache2.conf есть следующее:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger 3.0.11/ext/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.11
   PassengerRuby /usr/bin/ruby1.8

Я дергаю себя за волосы, пытаясь понять это.Буду признателен за помощь.

Спасибо.

1 Ответ

6 голосов
/ 20 февраля 2012

После нескольких недель проб и ошибок я наконец смог исправить это с помощью RTFM.Я удивлен, что не было ответов на мой вопрос о Stackoverflow, и я не смог найти другие статьи, которые помогли бы с моим вопросом.Эта проблема должна затрагивать всех, кто развертывает приложение RoR с помощью Capistrano на сервере Linux с Apache2 и Passenger.

У меня есть Capistrano, развертывающее приложение в / home / smith / www / dashboard, которое создает текущую папкукакие ссылки на релизы /

Пассажиру необходимо найти config / environment.rb для запуска приложения Rails.По умолчанию Phusion Passenger предполагает, что корневой каталог приложения является родительским каталогом общего каталога. См .: http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerAppRoot

Проблема заключается в том, что при использовании Capistrano по умолчанию приложение развертывается в

/ home / smith / www / dashboard / current /

Поэтому по умолчанию Passenger считает следующий путь:

/ home / smith / www / dashboard / config / environment.rb

Passenger предоставляет возможность установить опцию конфигурации PassengerAppRoot в файле виртуального хоста Apache следующим образом:

PassengerAppRoot / home / smith / www / dashboard / current

Thisпозволяет Пассажиру правильно найти файл config / environment.rb:

PassengerAppRoot /home/scervera/www/dashboard/current/config/environment.rb

Здесь находится мой виртуальный хостfile:

<VirtualHost *:80>
    ServerName www.example.com        
    DocumentRoot /home/smith/www/dashboard/current/public

   <Directory /home/smith/www/dashboard/current/public>
        Options FollowSymLinks
    AllowOverride none
    Order allow,deny
    Allow from all
   </Directory>

    PassengerAppRoot /home/smith/www/dashboard/current

</VirtualHost>

Могут быть и другие способы исправить это, но я считаю, что это "по книге".

...