Почему Rails с Passenger / nginx работает только в режиме разработки? Нет доступных журналов - PullRequest
6 голосов
/ 11 марта 2010

У меня серьезная проблема с одним из наших веб-серверов ... после внутреннего альфа-тестирования с кластером mongrel / haproxy, который работал хорошо, мы хотели использовать nginx с passenger для нашего первого рабочего сервера (клиенты получат доступ этот сервер).

Тем не менее, я могу запускать приложение rails только через режим разработки с passenger / nginx.

Само приложение отлично работает с монгрелом или вебриком в производственном режиме.

Моя самая большая проблема в этом случае заключается в том, что я не нахожу ЛЮБОЙ информации в логах nginx или rails-log (только когда я использую mongrel или webrick).

Разрешения верны. Статус пассажира показывает, что приложение запущено, но я всегда получаю статическую страницу с ошибкой 500.html ...

Было бы так здорово, если бы вы, ребята, могли бы дать мне подсказку и помочь мне решить проблему.

Я поставил конфиг внизу поста ... Этот точный конфиг работает с rails_env development;, но я бы хотел использовать производственный режим; -)

Большое спасибо за помощь!


Версия: Ubuntu 8.04.2 64bit / nginx-0.7.64 (скомпилировано и установлено с помощью passenger-2.2.11)

cat /opt/nginx/conf/nginx.conf

user  www-data;
worker_processes  4;

error_log  logs/error.log;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
      passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-2.2.11;
      passenger_ruby /usr/bin/ruby1.8;


    passenger_log_level 3;
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  <<servername>>;


 root /srv/app01/public;
 passenger_enabled on;
}

Ответы [ 4 ]

3 голосов
/ 12 марта 2010

Пассажир с Nginx по умолчанию работает в производственном режиме.Используйте команду passenger-install-nginx-module для установки nginx, скомпилированного с модулем Passenger.Вы уверены, что создали и перенесли базу данных для производственного режима?

rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production

Ваш nginx.conf выглядит мне правильно.Убедитесь, что у пользователя nginx (например, www-data) есть доступ к вашему приложению rails.

Удачи

2 голосов
/ 30 марта 2010

просто удалите config.ru из вашего каталога приложений

пассажир переключится со стойки на рельсы и все будет работать

0 голосов
/ 04 апреля 2010

Это ошибка в Rails. Отказоустойчивое промежуточное программное обеспечение неправильно сбрасывает сообщение об ошибке в файлы журнала. Я сообщил и исправил эту проблему несколько месяцев назад, но они еще не выпустили: https://rails.lighthouseapp.com/projects/8994/tickets/3577-failsafe-middleware-should-flush-the-logger Примените патч самостоятельно, и вы сможете увидеть сообщение об ошибке в журналах.

0 голосов
/ 16 марта 2010

Я запускаю Rails 2.3.5 на Passenger за nginx, и у меня была та же проблема. Мое решение - всегда переключаться в режим разработки в Passenger / nginx или в рабочий режим в WEBrick для отладки, но похоже, что вы пробовали оба.

Вы пытались раскомментировать строку error_log logs/error.log; в вашем nginx.conf?

...