пассажирские рельсы загружаются неправильно - PullRequest
0 голосов
/ 11 ноября 2009

Я пытаюсь заставить работать старое приложение rails 2.1, настроенное с кластером mongrel.

пассажир правильно установлен в моей системе (apache) с этой конфигурацией

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

RailsSpawnMethod smart
PassengerMaxPoolSize 1
PassengerMaxInstancesPerApp 1
PassengerPoolIdleTime 2000
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0

мой проект находится на

/var/sites/site

это конфигурация apache

<Virtualhost tagi:80>
  ServerName site.com
  ServerAlias www.site.com

  DocumentRoot /var/sites/site/current/

  #PassengerHighPerformance on
  ##PassengerMaxRequests 5000
  PassengerStatThrottleRate 5

  <Directory />
    AllowOverride AuthConfig
  </Directory>

  ErrorLog /var/log/apache2/site-error.log
  CustomLog /var/log/apache2/site-access.log combined
  ServerSignature Off
</Virtualhost>

Приложение mongrel загружается правильно и работает отлично. Но с apache2 + passanger загрузка не работает, и я получаю список каталогов по умолчанию от apache.

это права доступа к файлам конфигов

-rw-r----- 1 git web 2.7K 2009-11-11 11:34 boot.rb
-rw-r----- 1 git web  600 2009-11-11 13:51 database.yml
-rw-r----- 1 git web 1.7K 2009-11-11 11:34 deploy.rb
-rw-r----- 1 git web 3.9K 2009-11-11 14:04 environment.rb
drwxr-x--- 2 git web 4.0K 2009-11-11 11:34 environments
-rw-r----- 1 git web  754 2009-11-11 11:34 gmaps_api_key.yml
drwxr-x--- 2 git web 4.0K 2009-11-11 11:34 initializers
-rw-r----- 1 git web 1.8K 2009-11-11 11:34 routes.rb

Понятия не имею. Логи apache понятны.

на моем сервере уже запущено 5 приложений с такой же конфигурацией.

есть предложения?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2009

С этим боролся долгое время. Я нашел способ заставить это работать, особенно при запуске нескольких экземпляров Passenger в разных средах (производство, отладка, тестирование и т. Д.), Сделать что-то вроде этого:

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName server.com
        ServerAlias www.server.com
        DocumentRoot /var/sites/current/public
        RailsBaseURI /current
        RailsEnv production
</VirtualHost>

<VirtualHost *:80>
        ServerName dev.server.com
        DocumentRoot /var/sites/dev-version/public
        RailsBaseURI /dev-version
        RailsEnv development
</VirtualHost>

и затем установите ссылки sym из / var / sites /, чтобы они указывали на

lrwxrwxrwx 1 root root 13 Aug 24 17:41 current -> /code/site5
lrwxrwxrwx 1 root root 19 Aug 24 17:41 test-version -> /code/site-test
lrwxrwxrwx 1 root root 19 Sep 21 09:41 dev-version -> /code/development

Таким образом, Пассажир может определить разницу между сайтами, так как все пути DocumentRoot различны. У вас может не быть этой проблемы, если вы указываете на каталоги кода напрямую, а не через символические ссылки.

0 голосов
/ 11 ноября 2009

Точка DocumentRoot в каталоге приложений public. Я не уверен, что такое /var/sites/site/current/, но это, вероятно, не то, что вы хотите.

Также вы можете попытаться объяснить пассажиру более четко, где вы хотите, чтобы он монтировал приложение rails, добавив RailsBaseURI / в ваш vhost.

Дайте это попробовать, и мы можем идти оттуда.

...