OpsWorks 已部署,但我的操作均无效。我的 database.yml 文件是不是搞砸了?
Posted
技术标签:
【中文标题】OpsWorks 已部署,但我的操作均无效。我的 database.yml 文件是不是搞砸了?【英文标题】:OpsWorks gets deployed, but non of my actions work. Is my database.yml file messing things up?OpsWorks 已部署,但我的操作均无效。我的 database.yml 文件是否搞砸了? 【发布时间】:2014-09-03 20:23:41 【问题描述】:当我使用本地 mysql 服务器在本地运行我的 rails 服务器时,我的端点工作正常,并且正在将内容插入并更新到 mysql 数据库中,一切都很漂亮。
但是,当我部署到 AWS OpsWorks 时,应用程序已部署,我可以看到 /public
文件夹中的内容,但我的所有操作都不起作用,我不太确定如何调试它.
当我检查日志时,看到 bundle install
被调用,甚至随后...
[2014-07-13T14:37:34+00:00] INFO: No database adapter specified for bgs_api, guessing
[2014-07-13T14:37:35+00:00] INFO: Looks like bgs_api uses mysql2 in its Gemfile
.. 但与表的实际创建或迁移的执行无关。
关于我的实例和应用...
我有一个 EC2 实例,上面有 Rails 和 MySQL 层。
我正在使用database.yml
文件,但我不确定这是否意味着我可以在部署应用程序时忽略放入自定义 JSON。这就是我目前正在做的事情。
这是我的database.yml
文件
development:
adapter: mysql2
encoding: utf8
reconnect: true
database: xyz #name for local database defined by me
username: abc #username for local database user defined by me
password: 123 #password for local database user defined by me
pool: 5
host: localhost
production:
adapter: mysql2
encoding: utf8
reconnect: true
database: xyz #name for opsworks database defined by me
username: root #username for opsworks database defined by opsworks
password: abc #password for opsworks database defined by opsworks
pool: 5
host: localhost
我不确定的一个特别的事情是生产主机值......我想它会是localhost
,因为这个 get 在 ec2 insatnce 上运行。
任何有关调试的帮助或指导都会有很大帮助。谢谢!
【问题讨论】:
【参考方案1】:您需要通过自定义 JSON 发送数据库详细信息。这是因为 APP 没有自动从配置中获取连接详细信息。即使您确实将其添加到代码库中,它也会被配方覆盖。
"deploy":
"app_name":
"database":
"password":"",
"adapter":"mysql2",
"username":"",
"database":"",
"host":"localhost"
您需要运行创建数据库等的正常任务。作为安装应用程序的一部分,您应该单独执行此操作。一个不错的选择是使用部署挂钩:opsworks hooks
【讨论】:
如果我从未创建过用户名,我应该为它添加什么? Nvm,当您创建一个应用程序时,它会询问数据库名称,如果您不提供,它将使用应用程序短名称。顺便说一句,我还没有接受答案,因为我还没有确认它修复了问题。以上是关于OpsWorks 已部署,但我的操作均无效。我的 database.yml 文件是不是搞砸了?的主要内容,如果未能解决你的问题,请参考以下文章
AWS OpsWorks - 无法使用 AWS OpsWorks 部署我的应用程序,尤其是无法成功迁移
Opsworks:Rails App Layer:指定 Ruby 次要版本
Chef 12 + AWS Opsworks + 从 s3 部署应用程序