

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

# 如何設定資料庫連線
<a name="customizing-rds-setup"></a>

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

您可以使用自訂配方，來設定應用程式伺服器與其後端資料庫之間的連線。配方會視需要設定應用程式伺服器，一般是透過建立組態檔案。配方會從[堆疊組態中的一組屬性取得連線資料，例如主機和資料庫名稱，以及 Stacks 在每個執行個體上安裝的部署屬性](workingcookbook-json.md)。 OpsWorks 

例如， 的步驟 2 [Chef 11 Linux 堆疊入門](gettingstarted.md) 是以名為 MyStack 的堆疊為基礎，堆疊具有兩層：PHP App Server 和 MySQL，每個堆疊都有一個執行個體。您可以將名為 SimplePHPApp 的應用程式部署到使用 MySQL 執行個體上的資料庫做為後端資料存放區的 PHP App Server 執行個體。當您部署應用程式時， OpsWorks Stacks 會安裝包含資料庫連線資訊的堆疊組態和部署屬性。下列範例顯示資料庫連線屬性 (以 JSON 呈現)：

```
{
  ...
  "deploy": {
    "simplephpapp": {
      ...
      "database": {
        "reconnect": true,
        "password": null,
        "username": "root",
        "host": null,
        "database": "simplephpapp"
        ...
      },
      ...
    }
  }
}
```

屬性值由 Stacks OpsWorks 提供，並產生或根據使用者提供的資訊。

若要允許 SimplePHPApp 存取資料存放區，您必須將名為 的自訂配方指派給 PHP App Server layer 的部署[生命週期事件](workingcookbook-events.md)，以設定 `appsetup.rb` PHP 應用程式伺服器與 MySQL 資料庫之間的連線。當您部署 SimplePHPApp 時， OpsWorks Stacks 會執行 `appsetup.rb`，這會建立名為 的組態檔案`db-connect.php`來設定連線，如下列摘錄所示。

```
node[:deploy].each do |app_name, deploy|
  ...
  template "#{deploy[:deploy_to]}/current/db-connect.php" do
    source "db-connect.php.erb"
    mode 0660
    group deploy[:group]

    if platform?("ubuntu")
      owner "www-data"
    elsif platform?("amazon")   
      owner "apache"
    end

    variables(
      :host =>     (deploy[:database][:host] rescue nil),
      :user =>     (deploy[:database][:username] rescue nil),
      :password => (deploy[:database][:password] rescue nil),
      :db =>       (deploy[:database][:database] rescue nil),
      :table =>    (node[:phpapp][:dbtable] rescue nil)
    )
    ...
  end
end
```

描述連線特性的變數 `host`-`user`、 等 - 會從[部署的 JSON](workingcookbook-json.md#workingcookbook-json-deploy) `[:deploy][:app_name][:database]` 屬性設定對應的值。為求簡化，此範例假設您已建立名為 `urler` 的表格，因此表格名稱是由技術指南屬性檔案中的 `[:phpapp][:dbtable]` 所呈現。

此配方實際上可以將 PHP 應用程式伺服器連線到任何 MySQL 資料庫伺服器，而不只是 MySQL layer 的成員。若要使用不同的 MySQL 伺服器，您只需要將`[:database]`屬性設定為適合您伺服器的值，您可以使用[自訂 JSON](workingstacks-json.md) 來執行此操作。 OpsWorks 堆疊接著會將這些屬性和值併入堆疊組態和部署屬性，`appsetup.rb`並使用它們來建立設定連線的範本。如需覆寫堆疊組態和部署 JSON 的詳細資訊，請參閱[覆寫屬性](workingcookbook-attributes.md)。