调试生产服务器(linode)ruby on rails

时间:2012-10-14 19:38:43

标签: ruby-on-rails capistrano postgresql-9.1 unicorn linode

在部署网站方面,我是一个完整的新手,请原谅这个问题的模糊性。

我已经按照ryan bates剧集#337(https://github.com/railscasts/337-capistrano-recipes)来部署我的rails应用程序。我正在使用ubuntu 10.04 lts,nginx,unicorn和capistrano与postgres。

帽子部署后:冷却一切似乎都很好。

但是当我点击我的ip时,我的rails应用程序给了我这个错误:

We're sorry, but something went wrong.

我知道这不是一个非常有用的错误消息。我假设它与数据库有关,因为我之前在使用postgresql在heroku上部署时已经看过它。

我不知道如何在linode服务器上检查我的日志文件,并获得有关如何调试它的更多信息。

非常感谢任何指导。

提前谢谢大家。

2 个答案:

答案 0 :(得分:2)

您需要使用ssh登录linode服务器并亲自查看日志文件。

来自Railscast中的config/deploy.rb文件的这一行:

set :deploy_to, "/home/#{user}/apps/#{application}"

告诉您应用程序部署到的linode服务器上的哪个目录。在该目录中,您应该看到名为shared/log的目录;你的日志应该在那里。

答案 1 :(得分:1)

我在 OpenShift 上部署Rails应用程序时遇到了类似的问题。

在我的情况下,错误是由缺少的资产生成的,未在清单文件中定义。

事实证明它必须对资产做一些事情。我开始挖掘它,我发现它是在Rails无法找到您正在寻找的资产时生成的,因为它们丢失或者未编译或者它们未包含在清单中(直接通过名称或间接通过require_tree)。

第一个案例很清楚。您应该将它们包含在应用程序的代码中,或者将它们添加到您的设备中。第二种情况对您来说不是问题,因为OpenShift会为您做到这一点。但如果您确实遇到问题,请在论坛中搜索有关未编译资产的问题。

第三种情况有两种解决方案。有一个正确的,快速的。我需要专家对第二个问题的看法。它们是:您需要将资产(通常是样式表和/或某些第三方工具)添加到要在环境application.rb中预编译的项目列表。

config.assets.precompile += ['960sm.css']

或者我找到的快捷方式,它将普遍适用于您的所有资产:  config/environments/production.rb

中有一个设置
config.assets.compile = true

将它设置为true,这样可以解决问题。

我希望这会有所帮助。我花了两周的时间来研究同样的问题。