

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 自定义堆栈以连接到 RDS 数据库
<a name="customizing-rds-connect-customize"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

一旦[创建了用作 PHP 应用程序服务器后端数据库的 RDS 实例](customizing-rds-connect-create.md)，就可以 MyStack从中[Chef 11 Linux 堆栈入门](gettingstarted.md)进行自定义。

**将 PHP 应用程序服务器连接到 RDS 数据库**

1. 打开 OpsWorks Stacks 控制台，使用包含一个实例的 PHP App Server 层创建一个堆栈，然后部署 SimplePHPApp，如中所[Chef 11 Linux 堆栈入门](gettingstarted.md)述。此堆栈使用 Simple 版本 1PHPApp，它不使用数据库连接。

1. [更新堆栈配置](workingstacks-edit.md)以使用包括 `appsetup.rb` 配方、相关模板和属性文件的自定义说明书。

   1. 将 **Use custom Chef cookbooks** 设置为 **Yes**。

   1. 将 **Repository type** 设置为 **Git**，并将 **Repository URL** 设置为 `git://github.com/amazonwebservices/opsworks-example-cookbooks.git`。

1. 将以下代码添加到堆栈的 **Custom Chef JSON** 框中，以将 RDS 连接数据分配给 `appsetup.rb` 用来创建配置文件的 `[:database]` 属性。

   ```
   {
     "deploy": {
       "simplephpapp": {
         "database": {
           "username": "opsworksuser",
           "password": "your_password",
           "database": "rdsexampledb",
           "host": "rds_endpoint",
           "adapter": "mysql"
         }
       }
     }
   }
   ```

   使用以下属性值：
   + **username**：在创建 RDS 实例时指定的主用户名。

     此示例使用 `opsworksuser`。
   + **password**：创建 RDS 实例时指定的主密码。

     填写您指定的密码。
   + **database**：在创建 RDS 实例时创建的数据库。

     此示例使用 `rdsexampledb`。
   + **host**：您在上一部分中创建实例时从 RDS 控制台获得的 RDS 实例终端节点。不要包括端口号。
   + **adapter**：适配器。

     本示例的 RDS 实例使用 MySQL，所以 **adapter** 设置为 `mysql`。与其他属性不同，**adapter** 不由 `appsetup.rb` 使用，而是被 PHP 应用程序服务器层的内置配置配方用来创建不同的配置文件。

1. [编辑 PHPApp Simple 配置](workingapps-editing.md)以指定使用后端数据库PHPApp 的 Simple 版本，如下所示：
   + **Document root**：将此选项设置为 `web`。
   + **Branch/Revision**：将此选项设置为 `version2`。

   其余选项保持不变。

1. [编辑 PHP 应用程序服务器层](workinglayers-basics-edit.md)来设置数据库连接，方法是将 添加到层的 Deploy 配方中。

1. [部署新的简单PHPApp版本](workingapps-deploying.md)。

1. 部署 PHPApp Simple 后，前往**实例页面并单击 php-app1 实例**的公有 IP 地址来运行应用程序。您应在浏览器中看到以下页面，您可以在其中输入文本，然后将其存储在数据库中。  
![\[Text input field labeled "Your Thoughts" with a "Share Your Thought" button.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gsb7.png)

**注意**  
如果您的堆栈有 MySQL 层， OpsWorks Stacks 会自动将相应的连接数据分配给属性。`[:database]`但是，如果您将自定义 JSON 分配给定义不同 `[:database]` 值的堆栈，则它们会覆盖默认值。因为 `[:deploy]` 属性安装在每个实例上，所以任何依赖 `[:database]` 属性的配方都将使用自定义连接数据而非 MySQL 层数据。如果您想让一个特定应用程序服务器层使用自定义连接数据，则将自定义 JSON 分配给该层的 Deploy 事件，并限制部署只到该层。有关如何使用部署属性的更多信息，请参阅[部署应用程序](workingapps-deploying.md)。有关重写 OpsWorks Stacks 内置属性的更多信息，请参阅[覆盖属性](workingcookbook-attributes.md)。