我正在尝试设置两个Rails应用程序。我希望它们都使用一个MySQL数据库。我的设置如下:
使用Elastic Beanstalk,我已经在两个不同的环境中设置了两个Rails应用程序。其中一个应用程序是我使用MySQL数据库设置的。所以现在我有两个RDS实例--每个rails应用一个EC2实例和一个RDS MySQL实例。
我在两个EC2实例中都设置了安全组,以便能够通过port 3306连接到MYSQL。
我已经将DB安全组设置为授权两个EC2实例,并使用第二个EC2实例(配置Beanstallk应用程序时未设置MySQL数据库的实例)的专用IP设置CIDR/IP。
在这两个Rails应用程序中,我将database.yml设置如下:
production:
adapter: mysql2
encoding: utf8
database: <%= ENV['RDS_DB_NAME'] %>
username: <%= ENV['RDS_USERNAME'] %>
password: <%= ENV['RDS_PASSWORD'] %>
host: <%= ENV['RDS_HOSTNAME'] %>
port: <%= ENV['RDS_PORT'] %>我使用第一个EC2实例中的ENV值为第二个实例(没有MySQL DB的那个实例)上的生产实例分配了ENV值。
这里我漏掉了什么?
我还将我的计算机的IP地址添加到了DB Securty Group中,并且我能够使用作为ENV使用的凭据连接到MySQL DB。
发布于 2013-04-27 06:07:56
问题解决了-我在database.yml文件中设置了DB凭据,而不是ENV变量。在弹性豆茎上使用git aws.push的每次推送都会覆盖环境变量。
发布于 2013-04-24 00:30:47
您可能会遗漏以下内容:
socket: /var/lib/mysql/mysql.sock发布于 2016-05-09 22:44:25
在我的例子中,这是因为我使用了错误的ENV变量名。您可以通过使用eb ssh连接到您的实例,然后使用printenv | grep RDS再次检查您是否正确设置了所有内容,这应该会给出类似如下的结果:
RDS_HOSTNAME=yourhostname.amazonaws.com
RDS_DB_NAME=ebdb
RDS_PASSWORD=yourpassword
RDS_USERNAME=yourusername
RDS_PORT=3306确保这些都反映在您的config/database.yml文件中--通过使用<%= ENV['varname'] %>或对它们进行硬编码。显然,前一种选择更可取。:)
https://stackoverflow.com/questions/16172766
复制相似问题