我有一个运行在Apache和Phusion Passenger的生产服务器上的Rails应用程序.当使用Mongrel时,应用程序在本地工作正常,但每当我尝试在生产服务器上加载URL时,它返回HTTP 500.我知道服务器工作正常,因为我可以获取应用程序的静态元素(例如,JavaScript文件) ,样式表,图像)就好了.我还检查了Passenger状态,它正在加载应用程序(它必须是,因为应用程序的500内部服务器错误页面被返回,而不仅仅是默认的Apache).此外,当我通过加载应用程序script/console production
并执行类似操作时app.get("/")
,也会返回500.
问题是日志文件中没有任何内容可以指示问题.production.log
是空的.Apache错误日志也显示Apache没有问题.我很难知道发生了什么,我不知道如何诊断问题.
我知道我可能有点模糊,但任何人都可以提出问题的建议吗?或者至少我可以去诊断一下吗?
这个特定情况的答案是我的应用程序的问题.其中一个模型类使用与应用程序其余部分不同的数据库连接.未正确配置此数据库连接.我认为没有任何内容写入日志文件的原因是Rails在不知道该怎么做的情况下拯救了.
由于其他人可能有助于了解我如何诊断出这个问题,这是我的思考过程:
问题不在于Apache:没有错误写入Apache日志文件.
问题可能不是乘客:Passenger没有写任何错误到Apache日志文件,它似乎正在加载我的应用程序,因为passenger-status
显示它已加载,它显示我的应用程序的500内部服务器错误页面(不默认的Apache一个).
从那里我猜测它必须在我的应用程序中发生在初始化阶段很早就发生的事情,但不是导致应用程序完全保释并抛出异常的东西.我在Phusion Passenger Google Group中逛了一圈,并最终偶然发现了这篇有用的帖子,该帖子暗示错误可能是数据库连接问题.果然,删除这个配置错误的数据库和所有对它的引用使应用程序工作!