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 次要版本

如何接收 OpsWorks 部署通知?

Chef 12 + AWS Opsworks + 从 s3 部署应用程序

我的 OpsWorks 实例在关闭五分钟后自行启动 - 为啥?

Opsworks 部署到自定义层