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

Mic*_* W. 6 ubuntu ruby-on-rails passenger nginx

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

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

应用程序本身在生产模式下与杂种或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;
}
Run Code Online (Sandbox Code Playgroud)

小智 3

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

rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)

你的 nginx.conf 对我来说看起来很合适。确保 nginx 用户(例如www-data)有权访问您的 Rails 应用程序。

祝你好运