

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂堆疊以連線至 RDS 資料庫
<a name="customizing-rds-connect-customize"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

在您[建立 RDS 執行個體](customizing-rds-connect-create.md)以當成 PHP 應用程式伺服器的後端資料庫使用之後，即可從 [Chef 11 Linux 堆疊入門](gettingstarted.md)自訂 MyStack。

**將 PHP 應用程式伺服器連線至 RDS 資料庫**

1. 開啟 OpsWorks Stacks 主控台，並使用包含一個執行個體的 PHP App Server layer 建立堆疊，並部署 SimplePHPApp，如 中所述[Chef 11 Linux 堆疊入門](gettingstarted.md)。此堆疊使用 SimplePHPApp 的第 1 版，而此版本不使用資料庫連線。

1. [更新堆疊組態](workingstacks-edit.md)以使用包括 `appsetup.rb` 配方的自訂技術指南，以及相關的範本和屬性檔案。

   1. 將 **Use custom Chef cookbooks (使用自訂 Chef 技術指南)** 設為 **Yes (是)**。

   1. 將 **Repository type (儲存庫類型)** 設定為 **Git**，並將 **Repository URL (儲存庫 URL)** 設為 `git://github.com/amazonwebservices/opsworks-example-cookbooks.git`。

1. 將下列內容新增至堆疊的 **Custom Chef JSON (自訂 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`。與其他屬性不同，**轉接器**不會由 使用`appsetup.rb`。PHP App Server layer 的內建設定配方會改用它來建立不同的組態檔案。

1. [編輯 SimplePHPApp 組態](workingapps-editing.md)，以指定使用後端資料庫的 SimplePHPApp 版本，如下所示：
   + **Document root (文件根)**：將此選項設為 `web`。
   + **Branch/Revision (分支/修訂)**：將此選項設為 `version2`。

   將其餘的選項保持不變。

1. [編輯 PHP App Server layer](workinglayers-basics-edit.md)，透過將 `phpapp::appsetup`新增至 layer 的部署配方來設定資料庫連線。

1. [部署新 SimplePHPApp 版本](workingapps-deploying.md)。

1. 部署 SimplePHPApp 時，前往 **Instances (執行個體)** 頁面並按一下 php-app1 執行個體的公有 IP 地址，來執行應用程式。您應該會在瀏覽器中看到下列頁面，以讓您輸入文字，並將其存放在資料庫中。  
![\[Text input field labeled "Your Thoughts" with a "Share Your Thought" button.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/gsb7.png)

**注意**  
如果您的堆疊有 MySQL layer， OpsWorks Stacks 會自動將對應的連線資料指派給`[:database]`屬性。不過，如果您將自訂 JSON 指派給定義不同 `[:database]` 值的堆疊，則它們會覆寫預設值。由於`[:deploy]`屬性會安裝在每個執行個體上，任何依賴`[:database]`屬性的配方都會使用自訂連線資料，而不是 MySQL layer 的資料。如果您想要特定應用程式伺服器 layer 使用自訂連線資料，請將自訂 JSON 指派給 layer 的部署事件，並將該部署限制為該 layer。如需如何使用部署屬性的詳細資訊，請參閱[部署應用程式](workingapps-deploying.md)。如需覆寫 OpsWorks Stacks 內建屬性的詳細資訊，請參閱[覆寫屬性](workingcookbook-attributes.md)。