当我使用
eb deploy
在 aws beanstalk 上部署我的应用程序时,出现错误
rake aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
.ebextensions/postgres.config:
packages:
yum:
postgresql93-devel: []
配置/数据库.yml:
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: 5
production:
<<: *default
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>
我也遇到了完全相同的问题。
问题是您必须通过环境变量将数据库连接到应用程序。
首先您需要创建一个要连接的 RDS 实例。此链接向您展示了如何操作:https://aws.amazon.com/getting-started/tutorials/create-connect-postgresql-db/?nc1=h_ls
然后,实例创建完成后,您需要进入RDS服务页面,在左侧菜单中选择实例。选择您在列表中创建的实例,然后进入“连接”部分。这些是您放入这些环境变量中的值,其中 HOSTNAME 值是端点。
希望它有帮助,对我有用!
我遇到了类似的问题,但就我而言,RDS 连接超时。解决方案是将我的 EC2 实例的安全组添加到 RDS 安全组的“入站”部分。
为此,请转到 EC2 页面并搜索“安全组”,您可以在其中找到您的 RDS 和 EC2 安全组,单击 RDS 安全组并添加 EC2 安全组。
我也遇到了
PG::ConnectionBad
错误,超时了。感谢@Mateus 指出该怎么做,但我会扩展他的答案以获得帮助。
为了证明问题(并且您已经解决了它),只需向您的服务器发送简单的
eb ssh
,然后运行:
psql -h xxxxxxxxxxx.xxxxxxxxxxxxxx.ap-southeast-2.rds.amazonaws.com -d ebdb -U postgres
直接连接到RDS实例。它要么立即失败,要么需要很长时间然后超时。完成后,它会询问您的密码,然后就可以工作了!
我必须将 EC2 实例的安全组添加到 RDS 安全组的入站部分。
要对 ElasticBeanstalk 执行此操作:
然后重新运行上面的测试,应该可以了!