3

问题

在生产环境中使用我的 rails 应用程序会导致 500 错误。检查生产日志的结果是:gist。检查详细的 postgresql 日志会导致:gist(实际的数据库凭据已被替换)。无论 database.yml 文件中指定了什么,postgres 日志都会显示每次连接尝试时端口号的增量。

环境

服务器:Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic i686)

机架服务器:独角兽

导轨 v: 3.2.13

Ruby v: 1.9.3p0(真的很老,也许这里有问题?)

我试过的

仔细检查 database.yml:
尝试使用和不使用主机和端口,检查缩进并验证 yaml 格式。

production:
  adapter: postgresql
  database: <db_production>
  username: <db_user>
  password: <db_password>
  host: localhost
  port: 5432 

运行 rake、rails c 和 rails db:
我可以登录并成功运行所有这些命令。我必须在这里指定环境,也许这是问题所在?环境没有以某种方式设置吗?

bundle exec rails db production

跑步:

Rails.env?

导致生产,但这是在明确登录到 rails c 生产之后。

更改 pg_hba.conf
我尝试了在其他 SO 问题中找到的几个设置。本地的原始设置是:

local    all    all    peer

然后尝试:

local    all    all    md5

然后尝试:

local    all    all    trust

在所有这些更改之后,我确保重新启动 pg 或 pg_ctl reload 以获取更改。

登录到 pg outside 或 rails:
即使在每次更改 pg_hba.conf 之后,我仍然可以使用 database.yml 中的相同凭据登录到我的生产数据库并查看我的所有数据,并确认所有迁移和数据库创建都已运行。

跑步:

sudo -u <db_user> psql <db_production>

按预期工作。

结论

对我来说很明显,问题不在于 postgres,而在于 rails 配置,也许环境没有切换到生产环境,因此它正在尝试使用 dev db creds?这在我的生产 yml 文件中不存在。

4

1 回答 1

1

安装 postgres 后是否重新启动系统?

您可以从 pg 控制台访问 postgres 吗?

按照以下链接正确安装postgers。

http://railskey.wordpress.com/2012/05/19/postgresql-installation-in-ubuntu-12-04/

于 2013-04-25T20:32:40.647 回答