Ruby on rails 在不同服务器上设置数据库的ip地址
我在远程服务器上部署了一个示例Rails应用程序,postgres托管在同一台服务器上。database.yml文件是这样的Ruby on rails 在不同服务器上设置数据库的ip地址,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我在远程服务器上部署了一个示例Rails应用程序,postgres托管在同一台服务器上。database.yml文件是这样的 production: adapter: postgresql encoding: unicode database: remotepg_production pool: 5 host: localhost username: mrmann password: secret 一切都很顺利。然后我进入database.yml文件,用另一台服务器
production:
adapter: postgresql
encoding: unicode
database: remotepg_production
pool: 5
host: localhost
username: mrmann
password: secret
一切都很顺利。然后我进入database.yml文件,用另一台服务器上postgres数据库的ip地址替换host:localhost
,如下所示
production:
adapter: postgresql
encoding: unicode
database: remotepg_production
pool: 5
host: 178.XXX.XXX.XXX #ip address of server with other postgres database
username: mrmann
password: secret
当我使用Rails应用程序在服务器上重新启动postgres时,示例应用程序现在为我提供了Rails的“出错”页面
两个数据库上的用户名和用户名密码相同。你能告诉我问题出在哪里吗?谢谢
更新
这些是我要连接到的数据库所在服务器上的pg_hba.conf中的设置
local all postgres peer
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
假Rails应用程序IP:192.241.XXX.X
假数据库IP:192.34.XX.XXX您有权访问数据库日志吗?如果您的连接尝试连接到数据库,那么应该会有一些消息。我的建议是,您需要将该IP添加到服务器的pg_hba.conf文件并重新加载Postgres。 更清楚地说,要添加到服务器pg_hba.conf的IP是应用程序连接的IP,您还应该检查数据库的
listen_addresses
设置的值。如果后者未设置为“*”或应用程序的IP,则需要在postgresql.conf中更改它并重新启动db集群
[编辑,提供新信息]
pg_hba.conf中的行应该是
host all all 192.241.XXX.X md5
重新加载(而不是重新启动)postgres(例如,
pg_ctl Reload
),然后再次尝试连接。如果失败,请查找数据库日志并查看它显示的内容。如果没有消息,则可能是防火墙问题。如果怀疑是后者,请在iptables-nvL的输出中查找与端口5432相关的任何规则。您有权访问数据库日志吗?如果您的连接尝试连接到数据库,那么应该会有一些消息。我的建议是,您需要将该IP添加到服务器的pg_hba.conf文件并重新加载Postgres。
更清楚地说,要添加到服务器pg_hba.conf的IP是应用程序连接的IP,您还应该检查数据库的listen_addresses
设置的值。如果后者未设置为“*”或应用程序的IP,则需要在postgresql.conf中更改它并重新启动db集群
[编辑,提供新信息]
pg_hba.conf中的行应该是
host all all 192.241.XXX.X md5
重新加载(而不是重新启动)postgres(例如,pg_ctl Reload
),然后再次尝试连接。如果失败,请查找数据库日志并查看它显示的内容。如果没有消息,则可能是防火墙问题。如果怀疑是后者,请在iptables-nvL
的输出中查找与端口5432相关的任何规则。我应该可以访问数据库日志,但找不到它们的位置(您能帮忙吗?)。根据您的指示,我假设我需要将数据库的IP添加到托管rails应用程序的服务器的pg_hba.conf,或者您的意思是将托管rails应用程序的服务器的IP添加到带有额外数据库的服务器的pg_hba.conf?我设置的日志位置始终位于:select current_setting('data_directory'))||“/”| |当前_设置(“日志_目录”)在/etc/postgresql/9.1/main/postgresql.conf
中,我只是将rails应用程序的服务器ip地址设置为侦听地址。现在完成了。但是,当我尝试重新启动postgres时,它说2013-07-25 17:10:35 UTC日志:无法绑定IPv4套接字:无法分配请求的地址2013-07-25 17:10:35 UTC提示:端口5432上是否已运行另一个邮局主管?如果没有,请等待几秒钟,然后重试。2013-07-25 17:10:35 UTC警告:无法为“178.XXX.XXX.X”创建侦听套接字2013-07-25 17:10:35 UTC致命错误:无法在我要连接的postgres数据库的pg_hba.conf文件中创建任何TCP/IP套接字
,我还添加了主机remotepg_production all 178.XXX.XXX.X ident
,以允许位于该ip地址的服务器上的“all”用户连接到remotepg_production,但在尝试重新启动时收到与上次注释相同的错误postgres@Leahcim尝试使用listen\u addresses='*'
并重新启动数据库。您是否收到相同的错误?我应该可以访问数据库日志,但我找不到它们在哪里(您能帮忙吗?)。根据您的指示,我假设我需要将数据库的IP添加到托管rails应用程序的服务器的pg_hba.conf,或者您的意思是将托管rails应用程序的服务器的IP添加到带有额外数据库的服务器的pg_hba.conf?我设置的日志位置始终位于:select current_setting('data_directory'))||“/”| |当前_设置(“日志_目录”)在/etc/postgresql/9.1/main/postgresql.conf
中,我只是将rails应用程序的服务器ip地址设置为侦听地址。现在完成了。但是,当我尝试重新启动postgres时,它说2013-07-25 17:10:35 UTC日志:无法绑定IPv4套接字:无法分配请求的地址2013-07-25 17:10:35 UTC提示:端口5432上是否已运行另一个邮局主管?如果没有,请等待几秒钟,然后重试。2013-07-25 17:10:35 UTC警告:无法为“178.XXX.XXX.X”创建侦听套接字2013-07-25 17:10:35 UTC致命错误:无法在我要连接的postgres数据库的pg_hba.conf文件中创建任何TCP/IP套接字
,我还添加了主机remotepg_production all 178.XXX.XXX.X ident
,以允许位于该ip地址的服务器上的“all”用户连接到remotepg_production,但在尝试重新启动时收到与上次注释相同的错误postgres@Leahcim尝试使用listen\u addresses='*'
并重新启动数据库。做