0

我正在尝试将新的 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

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

谢谢你的帮助!!

更新1

我也尝试过这样的 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”?

更新2

我找到了这个:

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

如果您从未修改的 PG 源构建,则默认套接字位置确实是 /tmp。但是,Debian 和相关发行版认为这违反了某些发行版标准或其他,因此他们修改了源代码以将默认位置设为 /var/run/postgresql。所以这取决于你使用谁的版本。”

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

更新3

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

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

4

1 回答 1

0

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

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

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

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

如果您不知道套接字在哪里,接下来要尝试的显然是网络地址,尤其是 localhost。

于 2013-05-05T07:27:42.980 回答