我的某个网络服务器存在严重问题...在对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;
}
答案 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 自己应用补丁,您应该能够在日志中看到错误消息。