将Rails应用程序投入生产 - rake db:schema:加载不起作用

时间:2013-03-06 18:58:29

标签: ruby-on-rails postgresql

我正在尝试将新的Rails应用程序部署到Bitnami / Ubuntu / Virtual Server。我很远,使用SSH终端。

我已成功使用Capistrano进行封装:更新。我的消息来源是github,然后Capistrano将它放在服务器上。

所以,我在服务器上有这个目录:

/opt/bitnami/projects/ndeavor/releases/20130306180756

服务器还运行PostgreSQL堆栈。我创建了Postgresql用户和空数据库。我相信我的下一步是使用SSH控制台运行此命令:

bitnami@linux:/opt/bitnami/projects/ndeavor/releases/20130306180756$  rake RAILS_ENV=production db:schema:load 

问题1 =这是正确的下一步吗?

当我运行该命令时,我得到了这个:

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

问题2 =如何让Rake找到PostgreSQL套接字?

我可以在database.yml文件中输入这样的内容:

 socket: /var/pgsql_socket

但是,我不知道正确的条目应该是什么

感谢您的帮助!!

UPDATE1

我也尝试过像这样的database.yml文件:

production:
adapter: postgresql
encoding: unicode
database: ndeavor_production
pool: 5
username: (user name)
password: (password)
socket: /var/run/postgresql

但是,我得到了同样的错误:

Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

为什么不至少要求我提供Unix域套接字“/ var / run / postgresql”??

UPDATE2

我发现了这个:

“我已经通过将postgresql.conf文件中的unix_socket_directory声明为/ var / run / postgresql解决了我的问题。对于标准版本,它看起来似乎应该有一个共同的位置?

如果使用未修改的PG源构建,则默认套接字位置为 确实/ tmp。但是,Debian和相关的发行版都觉得这样 违反了一些发行版标准或其他,所以他们修改源代码 制作默认位置/ var / run / postgresql。所以这取决于 你正在使用它的构建。“

但是,我不确定是否应该更改postgresql.conf文件或Rails database.yml文件

UPDATE3

我查看了/ var / run / postgresql目录,它是空的。

我找不到.s.PGSQL.5432所在的位置

1 个答案:

答案 0 :(得分:0)

正如Bob所说,指定主机和端口可以解决问题。由于他没有详细解释这一点,我想指明。

默认端口是5432,默认的“host”是它期望套接字的路径。端口始终为数字,但可以为网络主机或包含套接字的目录的任何libpq连接 设置主机。例如,使用psql与

连接
psql -h /tmp -p 5432 -U chris mydb

这将通过/tmp/.s.PGSQL.5432套接字连接。现在Ruby有些不同,但pg gem使用libpq所以它的行为应该相同。

如果您不知道套接字的位置,接下来要尝试的是网络地址,尤其是localhost。