如何設定資料庫連線 - AWS OpsWorks

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

如何設定資料庫連線

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

您可以使用自訂配方,來設定應用程式伺服器與其後端資料庫之間的連線。配方會視需要設定應用程式伺服器,一般是透過建立組態檔案。該方案從堆棧配置中的一組屬性和 AWS OpsWorks Stacks 安裝在每個實例上的部署屬性中獲取連接數據,例如主機和數據庫名稱。

例如,第 2 步Chef 11 Linux 堆疊入門是基於一個堆棧命名 MyStack 為兩層,PHP 應用程序服務器和 MySQL,每個都有一個實例。您可以將名為 SimplePapp 的應用程式部署到 PHP 應用程式伺服器執行個體,該執行個體使用 MySQL 執行個體上的資料庫做為後端資料存放區。當您部署應用程式時, AWS OpsWorks Stacks 會安裝包含資料庫連線資訊的堆疊組態和部署屬性。下列範例顯示資料庫連線屬性 (以 JSON 呈現):

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

屬性值由 AWS OpsWorks Stacks 提供,並且可以根據用戶提供的信息生成或根據用戶提供的信息。

若要允許 SimplePapp 存取資料存放區,您必須指派名為 PHP 應用程式伺服器層的部署生命週期事件的自訂配方,appsetup.rb來設定 PHP 應用程式伺服器與 MySQL 資料庫之間的連線。當您部署 SimplePapp 時, AWS OpsWorks 堆疊會執行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

描述 connect— hostuser等等的變數是從部署 JSON 的屬性中設定對應的值。[:deploy][:app_name][:database]為求簡化,此範例假設您已建立名為 urler 的表格,因此表格名稱是由技術指南屬性檔案中的 [:phpapp][:dbtable] 所呈現。

這個配方實際上可以將 PHP 應用程序服務器連接到任何 MySQL 數據庫服務器,而不僅僅是 MySQL 層的成員。要使用不同的 MySQL 服務器,您只需要將[:database]屬性設置為適合您的服務器的值,您可以通過使用自定義 JSON 來完成。 AWS OpsWorks 然後,Stacks 將這些屬性和值合併到堆棧配置和部署屬性中,並appsetup.rb使用它們創建設置連接的模板。如需覆寫堆疊組態和部署 JSON 的詳細資訊,請參閱覆寫屬性