为什么带有Passenger / nginx的Rails只能在开发模式下工作?没有可用的日志

时间:2010-03-11 12:09:08

标签: ruby-on-rails ubuntu nginx passenger

我的某个网络服务器存在严重问题...在对mongrel / haproxy-cluster进行内部alpha测试后运行良好,我们希望将nginx与乘客一起用于我们的第一台生产服务器(客户将访问这个服务器)。

但是,我只能通过开发模式使用passenger / nginx运行rails应用程序。

应用程序本身在生产模式下与mongrel或webrick运行完美。

我遇到的最大问题是我在nginx或rails-logs中找不到任何信息(仅当我使用mongrel或webrick时)。

权限是正确的。乘客状态显示应用程序正在运行,但我总是收到静态500.html错误页面...

如果你们能给我一个提示并帮助我解决问题,那就太好了。

我把配置放在帖子的底部...这个确切的配置适用于rails_env development;,但我想使用生产模式; - )

非常感谢你的帮助!


版本: Ubuntu 8.04.2 64bit / nginx-0.7.64(通过乘客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 个答案:

答案 0 :(得分:3)

默认情况下,Nginx的乘客在生产模式下运行。使用passenger-install-nginx-module命令安装使用Passenger模块编译的nginx。 您确定已为生产模式创建和迁移数据库吗?

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

你的nginx.conf对我来说很合适。确保nginx用户(E.g www-data)可以访问您的rails应用程序。

祝你好运

答案 1 :(得分:2)

从您的应用目录中删除config.ru

乘客将从机架切换到导轨,一切都会正常工作

答案 2 :(得分:0)

我在nginx后面的Passenger上运行Rails 2.3.5,我遇到了同样的问题。我的解决方案总是切换到Passenger / nginx中的开发模式或WEBrick中的生产模式进行调试,但听起来你已经试过了。

您是否尝试取消注释nginx.conf中的行error_log logs/error.log;

答案 3 :(得分:0)

这是Rails中的一个错误。故障安全中间件未正确将错误消息刷新到日志文件。几个月前我报告并修复了这个问题,但他们还没有发布它:https://rails.lighthouseapp.com/projects/8994/tickets/3577-failsafe-middleware-should-flush-the-logger 自己应用补丁,您应该能够在日志中看到错误消息。