Ruby on rails 为什么带有乘客/nginx的Rails仅在开发模式下工作?没有可用的日志
我有一个严重的问题,我们的一个网站服务器。。。在对运行良好的mongrel/haproxy集群进行了内部alpha测试之后,我们希望将nginx与passenger一起用于我们的第一台生产服务器(客户将访问此服务器) 但是,我只能通过使用乘客/nginx的开发模式运行rails应用程序 该应用程序本身在生产模式下与mongrel或webrick完美配合 这个案例中我最大的问题是在nginx或rails日志中找不到任何信息(仅当我使用mongrel或webrick时) 权限是正确的。乘客状态显示应用程序正在运行,但我始终会看到static 500.html-error页面 如果你们能给我一个提示,帮我解决这个问题,那就太好了 我把配置放在帖子的底部。。。这个精确的配置与Ruby on rails 为什么带有乘客/nginx的Rails仅在开发模式下工作?没有可用的日志,ruby-on-rails,ubuntu,nginx,passenger,Ruby On Rails,Ubuntu,Nginx,Passenger,我有一个严重的问题,我们的一个网站服务器。。。在对运行良好的mongrel/haproxy集群进行了内部alpha测试之后,我们希望将nginx与passenger一起用于我们的第一台生产服务器(客户将访问此服务器) 但是,我只能通过使用乘客/nginx的开发模式运行rails应用程序 该应用程序本身在生产模式下与mongrel或webrick完美配合 这个案例中我最大的问题是在nginx或rails日志中找不到任何信息(仅当我使用mongrel或webrick时) 权限是正确的。乘客状态显示应
rails\u env开发一起工作代码>但我想使用生产模式;-)
非常感谢你的帮助
版本:
Ubuntu 8.04.2 64位/
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;
}
用户www数据;
工人4;
错误日志/error.log;
#pid日志/nginx.pid;
事件{
工人(1024);;
}
http{
passenger_root/usr/lib/ruby/gems/1.8/gems/passenger-2.2.11;
乘客/usr/bin/ruby1.8;
乘客日志第3级;
包括mime.types;
默认_类型应用程序/八位字节流;
#日志格式主“$remote\u addr-$remote\u user[$time\u local]“$request””
#“$status$body\u bytes\u sent”$http\u referer”
#“$http_user_agent”“$http_x_forwarded_for””;
访问日志/access.log;
发送文件到;
#tcp_nopush on;
#保持激活超时0;
保持生命超时65;
#gzip on;
服务器{
听80;
服务器名称;
root/srv/app01/public;
乘客_开启;
}
带Nginx的乘客默认在生产模式下运行。使用乘客安装Nginx模块
命令安装与乘客模块一起编译的Nginx。
是否确实已为生产模式创建并迁移了数据库
rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production
我觉得你的nginx.conf很不错。请确保nginx用户(例如www-data
)可以访问你的rails应用程序
祝你好运我在nginx后面的Passenger上运行Rails 2.3.5,我也遇到了同样的问题。我的解决方案总是切换到Passenger/nginx中的开发模式或WEBrick中的生产模式进行调试,但听起来你似乎已经尝试了这两种模式
您是否尝试取消对nginx.conf中的行error\u log logs/error.log;
的注释?只需从应用程序目录中删除config.ru即可
乘客将从机架切换到rails,一切正常这是rails中的一个错误。故障保护中间件没有正确地将错误消息刷新到日志文件中。我在几个月前报告并修复了此问题,但他们尚未发布此问题:
自己应用补丁,您应该能够在日志中看到错误消息。哦,我忘了,rails是2.3.5版,我不知道乘客,但我知道nginx…您不应该在服务器下有位置部分吗?并且您在服务器或http上缺少一个关闭
谢谢您的评论。。。我想我错过了},因为我想缩短配置代码。。。。在我删除的配置文件中有很多被注释掉的示例。。。然而,配置文件应该是有效的,因为正如我所说的,它在开发模式下运行得很好,所以错误可能不是来自nginx!嗨,谢谢你的回答。。。数据库设置正确,文件权限应该正确,因为nginx+passenger工作在开发模式下。。。你有什么提示我可以在哪里找到调试/日志消息吗?嗨,谢谢你的回答。。。真遗憾,开发模式对我们来说太慢了,我们需要缓存和所有的东西。。。正如你在上面的帖子中看到的,我取消了这行的注释。也许我们必须通过禁用一些功能并重试来检查到底是什么问题(缓存或其他),我不建议永久运行在开发中,只是暂时查找错误的原因。无论如何,据我所知,这是一个乘客错误。令人沮丧的。