Я использую Passenger + Nginx для запуска приложения Rails. Если я использую "rails_env development;" приложение работает нормально.
Но если я работаю в производственном режиме, я получаю «К сожалению, что-то пошло не так».
Я запустил db: migrate для производства, и я могу получить доступ к базе данных в обычном режиме.
Странно то, что у меня нет новых записей в журналах (nginx и rails one), и я убедился, что пользователь nginx может писать в них.
Если я запускаю производство консоли rails, она работает нормально:
# rails console production
Loading production environment (Rails 3.2.0)
1.9.3-p125 :001 >
Есть идеи о том, что может происходить? Что еще я должен проверить?
----Редактировать----
После предложения @BenLee о добавлении пассажира_debug_log_file в nginx.conf я начал получать эту ошибку для обоих разработка и производство:
# /etc/init.d/nginx restart
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: [alert] Unable to start the Phusion Passenger watchdog: it seems to have crashed during startup for an unknown reason, with exit code 1 (-1: Unknown error)
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
Parando o nginx: [ OK ]
Iniciando o nginx: nginx: [alert] Unable to start the Phusion Passenger watchdog: it seems to have crashed during startup for an unknown reason, with exit code 1 (-1: Unknown error)
[ OK ]
Я искал информацию об этой ошибке, но все еще не нашел решения. Похоже, Watchdog существует и находится в нужном месте:
# ls -lh /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11/agents/
total 7,8M
drwxr-sr-x 2 root rvm 4,0K Fev 22 23:34 nginx
-rwxr-xr-x 1 root rvm 4,6M Fev 22 23:35 PassengerLoggingAgent
-rwxr-xr-x 1 root rvm 3,3M Fev 22 23:34 PassengerWatchdog
Если я удалю пассажир_debug_log_file, он запустится нормально. Но исходные проблемы возвращаются, приложение не запускается в производственном режиме.
Несмотря на то, что Фернандо, похоже, решил проблему путем обновления агентов, у меня была аналогичная проблема, но другое решение.
У меня также было такое поведение с приложением rails при использовании пассажира и nginx. Все нормально работало при настройке rails_env development; в nginx.conf. Однако при переходе от разработки к производству он больше не работал, и в соединении было отказано при попытке подключиться из браузера. Так или иначе, проблема была в файле production.rb и строке
config.force_ssl = true
Когда я это закомментировал, приложение работало в продакшене. И вместо настройки ssl в приложении rails я сделал это в nginx.conf.
Надеюсь, это поможет кому-то еще настроить приложение rails с пассажиром и nginx.
Похоже, это могло быть какое-то повреждение файла, возможно, находящееся в одном из агентов. Одна вещь, которая может помочь, - это переустановка свежих версий агентов. Вы можете сделать это через автономный пакет для пассажиров.
Для этого сначала подключитесь к серверу по SSH, а затем в любом каталоге (в приведенных ниже примерах я предполагаю, что это ваш домашний каталог, но подойдет любой каталог), запустите:
passenger package-runtime
Может показаться, что для этого потребуется много загрузки, настройки и установки, но не беспокойтесь. Все, что нужно сделать, это установить автономную версию для пассажиров в подкаталог с именем passenger-standalone
. После выполнения этой команды вы должны увидеть такую файловую структуру (при условии, что вы запустили команду в своем домашнем каталоге):
+ /home/you
+ passenger-standalone
+ 3.0.11-....
nginx-x.y.z.tar.gz
support.tar.gz
Так что это просто дерево с двумя файлами tar.gz (обратите внимание на 3.0.11-...
не является буквальным, но начинается с этой строки - полное имя зависит от системы; аналогично x.y.z
в одном из файлов tar.gz фактически будет номер версии). Затем распакуйте support.tar.gz, сделав что-то вроде этого:
cd passenger-standalone/3.0.11-....
tar xzvvf support.tar.gz
Это будет извлечено в текущий каталог. Среди прочего, это создаст agents
подкаталог с двумя новыми файлами:
+ /home/you
+ passenger-standalone
+ 3.0.11-....
+ agents
PassengerLoggingAgent
PassengerWatchdog
Идея состоит в том, чтобы скопировать эти файлы агентов поверх исходных системных файлов, чтобы исправить любые повреждения, которые могут присутствовать в версии системы. Но сначала установите соответствующие разрешения. Следуя с того места, где остановились приведенные выше команды, запустите:
cd agents
sudo chown root:rvm Passenger*
Затем сделайте резервную копию исходных агентов:
cd /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11/agents
sudo cp PassengerLoggingAgent PassengerLoggingAgent.backup
sudo cp PassengerWatchdog PassengerWatchdog.backup
Наконец, переместите сюда свежие версии из автономного пакета.
sudo mv /home/you/passenger-standalone/3.0.11-..../agents/Passenger* .
Затем перезапустите nginx. Если по какой-то причине вам нужно отменить это, просто восстановите резервные копии и снова перезапустите nginx.
В качестве необязательного шага очистки вам больше не нужны эти автономные файлы, поэтому вы можете удалить их следующим образом:
rm -rf /home/you/passenger-standalone