AWS ElasticBeanstalk EC2给出PostgreSQL连接错误

qltillow  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(3)|浏览(175)

当我使用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: []


config/database.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'] %>

r55awzrz

r55awzrz1#

我也有同样的问题。
问题是,您必须通过环境变量将数据库连接到应用程序。
首先,您需要创建一个RDS示例来连接。此链接向您展示如何操作:https://aws.amazon.com/getting-started/tutorials/create-connect-postgresql-db/?nc1=h_ls
然后,在创建示例之后,您需要转到RDS服务页面,并在左侧菜单中选择示例。在列表中选择您创建的示例,并继续到名为“连接”的部分。这些是您放在这些环境变量中的值,HOSTNAME值是端点。
希望对我有帮助,对我有用!

wlzqhblo

wlzqhblo2#

我也遇到过类似的问题,但在我的情况下,RDS连接超时了。解决方案是将我的EC2示例的安全组添加到RDS安全组的“入站”部分。
要执行此操作,请转到EC2页面并搜索“Security Groups”,在那里您可以找到RDS和EC2安全组,单击RDS安全组并添加EC2安全组。

yqyhoc1h

yqyhoc1h3#

我也遇到了PG::ConnectionBad错误,它超时了。感谢@Mateus指出了该怎么做,但我将详细介绍他的答案,以提供帮助。

诊断和测试

为了证明问题(并且您已经修复了它),请将eb ssh简单地连接到您的服务器,然后运行:

psql -h xxxxxxxxxxx.xxxxxxxxxxxxxx.ap-southeast-2.rds.amazonaws.com -d ebdb -U postgres

字符串
直接连接到RDS示例。它要么会立即失败,要么会花很长时间然后超时。当您完成后,它会要求您输入密码,然后工作!

解决问题

我必须将EC2示例的安全组添加到RDS安全组的Inbound部分。
要为ElasticBeanstalk执行此操作,请执行以下操作:

  • 转到AWS控制台中的RDS,然后选择数据库示例
  • 向下滚动至“安全组规则”,然后单击入站的安全组。(EC2安全组-入站)
  • 这将带您进入安全组列表,筛选为RDS组。我建议您复制此选项卡,删除筛选器,然后查找您的EB环境的组。有两个组。查找与 * 已经 * 具有入站规则的安全组ID等效的组。然后复制该安全组ID。
  • 返回到具有选定SecurityGroup的第一个选项卡,单击"入站规则“选项卡->”编辑入站规则
  • 类型:PostgreSQL(协议TCP;端口范围5432)
  • 来源:自定义
  • 粘贴新EB的安全组ID
  • 产品描述:<your_own_description_to_help_you_remember_what_it_is>
  • 保存.

x1c 0d1x的数据
然后重新运行上面的测试,它应该工作!

相关问题