Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在不同服务器上设置数据库的ip地址_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails 在不同服务器上设置数据库的ip地址

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文件,用另一台服务器

我在远程服务器上部署了一个示例Rails应用程序,postgres托管在同一台服务器上。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='*'
并重新启动数据库。做