终于解决了这个首先我相信(我可能是错的,并且需要对此进行更正)在提出这个问题时,unicorn gem 中存在错误,这意味着日志条目没有被刷新,请参阅此报告以获取更多信息这个特殊问题https://github.com/rails/rails/issues/4277
我正在使用最新的 unicorn gem,现在一切都很好,但是关于 unicorn 配置文件的快速说明以及您可能看不到 nGinx/Unicorn 设置的生产日志条目的其他原因
1) 如果 nGinx 无法连接到您的 Web 服务器,它可能会返回 500 错误(如果您已将 nginx 配置设置为执行此操作)。ie unicorn 无法启动。
显然,如果 unicorn 失败了,那么您的 rails 就没有运行,您将寻找不存在的 rails 日志条目。如果是这种情况,请检查您的 unicorn 配置以查看您将 unicorn 错误写入的位置。我的 unicorn.rb 文件与此类似
root = "/home/some_user/some_app/current"
pid "#{root}/tmp/pids/unicorn.pid"
stderr_path "#{root}/log/unicorn.log"
stdout_path "#{root}/log/unicorn.log"
请注意,我将错误和正常的独角兽日志条目都指向同一个日志文件。标准是使用不同的日志文件,但我发现只需要查看一个独角兽日志文件对我来说更简单。
您可能会看到 500 个错误页面而不是您的 Web 服务器未运行时通常会看到的错误网关错误的原因是您可能将 nginx.conf 文件设置为从您的应用程序提供静态错误页面,所以您可能有这样的东西
server {
listen 80;
server_name my_domain_name.com;
root /path_to_my_app_root/current/public;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://ff1;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
如果您的服务器未运行,该error_page 500 502 503 504 /500.html;
行告诉 nginx 为您的应用程序提供静态 500.html 页面而不是坏网关 nginx 页面。这很酷,但是如果您不考虑到 rails 500 页面不一定会为您提供生产日志条目,那就会令人困惑。
总结一下。如果您看到您的应用程序 500.html 页面并且您在 production.log 中没有看到任何条目来帮助您追踪问题,请记住检查 unicorn.rb 配置中定义的 unicorn 错误日志文件以检查什么,如果任何,正在给出服务器无法启动的原因。