將具有外部 Amazon RDS 資料庫的高可用性PHP應用程式部署到 Elastic Beanstalk - AWS Elastic Beanstalk

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

將具有外部 Amazon RDS 資料庫的高可用性PHP應用程式部署到 Elastic Beanstalk

本教學將逐步引導您完成啟動外部RDS資料庫執行個體的程序 AWS Elastic Beanstalk,以及設定執行PHP應用程式以連線至該執行個體的高可用性環境。執行 Elastic Beanstalk 外的資料庫執行個體,會將該資料庫自您環境的生命週期解偶。如此一來,您即可自多個環境連接至相同的資料庫、更換資料庫,或執行藍/綠部署而不影響您的資料庫。

本教學課程使用範例PHP應用程式,該應用程式使用「我的資料SQL庫」來儲存使用者提供的 範例應用程式會使用組態檔PHP設定設定,並在資料庫中建立資料表供應用程式使用。此外,亦說明如何於部署期間使用 Composer 檔案來安裝套件。

必要條件

在開始之前,請從以下位置下載範例應用程式來源套件 GitHub:eb-demo-php-simple-app- 1.3.zip

此 Amazon 關聯式資料庫服務 (AmazonRDS) 任務教學中的程序假設您正在預設的 Amazon 虛擬私有雲端 (AmazonVPC) 中啟動資源。所有新帳戶都會VPC在每個區域中包含一個預設值。如果您沒有預設值VPC,程序會有所不同。使用 Elastic Beanstalk 與 Amazon RDS如需EC2傳統和自訂VPC平台的說明,請參閱。

在 Amazon 中啟動數據庫實例 RDS

若要將外部資料庫與在 Elastic Beanstalk 中執行的應用程式搭配使用,請先透過 Amazon 啟動資料庫執行個體。RDS當您使用 Amazon 啟動執行個體時RDS,它完全獨立於 Elastic Beanstalk 和 Elastic Beanstalk 環境,且不會被 Elastic Beanstalk 終止或監控。

使用 Amazon 主RDS控台啟動異地同步備份我的SQL資料庫執行個體。選擇異地同步備份部署可確保您的資料庫將會容錯遷移,並在主要資料庫執行個體停止服務時繼續運作。

在預設值中啟動RDS資料庫執行個體 VPC
  1. 開啟主RDS控台

  2. 在導覽窗格中,選擇 Databases (資料庫)。

  3. 選擇 Create database (建立資料庫)。

  4. 選擇 Standard Create (標準建立)

    重要

    請勿選擇 Easy Create (輕鬆建立)。如果選擇它,則無法配置必要的設置來啟動此RDS數據庫。

  5. Additional configuration (其他設定) 下方的 Initial database name (初始資料庫名稱) 中輸入 ebdb

  6. 檢閱預設設定,並根據您的特定要求來調整這些設定。請注意以下選項:

    • 資料庫執行個體類別 — 為您的工作負載選擇具有適當記憶體和CPU電力的執行個體大小。

    • 異地同步備份部署 – 若要達到高可用性,請將此項設定為在不同的 AZ 中建立 Aurora 複本/讀取器節點

    • 主要使用者名稱主要密碼 – 資料庫使用者名稱和密碼。記下這些設定,以供稍後使用。

  7. 檢查其餘選項的預設設定,然後選擇 Create database (建立資料庫)

接著,修改連接至資料庫執行個體的安全群組,以允許適當連接埠的傳入流量。此安全群組與您稍後將連接至 Elastic Beanstalk 環境的相同,因此,您新增的規則將授予相同安全群組內其他資源的流量傳入許可。

修改連接到RDS執行個體的安全性群組上的輸入規則
  1. 打開 Amazon RDS 控制台

  2. 選擇 Databases (資料庫)。

  3. 選擇您的資料庫執行個體名稱以檢視其詳細資料。

  4. Connectivity (連線) 區段中,記下顯示於此頁面的 Subnets (子網路)、Security groups (安全群組) 和 Endpoint (端點)。這樣您稍後便可使用這些資訊。

  5. Security (安全性) 下,可查看與資料庫執行個體相關聯的安全群組。開啟連結以在 Amazon EC2 主控台中檢視安全群組。

  6. 在安全群組的詳細資訊中,選擇 Inbound (傳入)

  7. 選擇編輯

  8. 選擇 Add Rule (新增規則)。

  9. 針對 Type (類型),選擇您的應用程式所使用的資料庫引擎。

  10. 對於 Source (來源),輸入 sg- 檢視可用的安全群組清單。選擇與 Elastic Beanstalk 環境中使用之 Auto Scaling 群組相關聯的安全群組。這是為了使環境中的 Amazon EC2 實例可以訪問數據庫。

    用於編輯 Amazon EC2 主控台中安全群組輸入規則的螢幕影像。
  11. 選擇 Save (儲存)。

建立資料庫執行個體約需要 10 分鐘。同時,建立您的 Elastic Beanstalk 環境。

建立 Elastic Beanstalk 環境

使用 Elastic Beanstalk 主控台建立 Elastic Beanstalk 環境。選擇平PHP台並接受默認設置和示例代碼。啟動環境之後,您可以將環境設定為連線至資料庫,然後部署從中下載的範例應用程式 GitHub。

啟動環境 (主控台)
  1. 使用此預先配置的鏈接打開 Elastic Beanstalk 控制台:控制台。newApplication applicationName= 教程 & = environmentType LoadBalanced

  2. Platform (平台),選取符合您應用程式所使用語言的平台和平台分支。

  3. 針對 Application code (應用程式程式碼),選擇 Sample application (範例應用程式)

  4. 選擇 Review and launch (檢閱和啟動)

  5. 檢視可用選項。選擇您要使用的可用選項,當您準備就緒時,請選擇 Creat app (建立應用程式)

使用大約需要五分鐘時間建立環境,並且建立下列資源:

  • EC2執行個 — 設定為在您選擇的平台上執行 Web 應用程式的 Amazon 彈性運算雲端 (AmazonEC2) 虛擬機器。

    每個平台會執行特定的一套軟體、設定檔和指令碼,來支援特定的語言版本、架構、Web 容器或其組合。大多數平台使用 Apache 或NGINX作為位於 Web 應用程序前面的反向代理,將請求轉發給它,提供靜態資產以及生成訪問和錯誤日誌。

  • 執行個體安全群組 — 設定為允許連接埠 80 上輸入流量的 Amazon EC2 安全群組。此資源可讓負載平衡器的HTTP流量到達EC2執行 Web 應用程式的執行個體。在預設情況下,不允許傳輸資料從其他通訊埠傳送。

  • 負載平衡器 - Elastic Load Balancing 負載平衡器,可設定將請求分配到執行您應用程式的執行個體。負載平衡器也讓您的執行個體不需直接連接到網際網路。

  • 負載平衡器安全群組 — 設定為允許連接埠 80 上輸入流量的 Amazon EC2 安全群組。此資源可讓來自網際網路的HTTP流量到達負載平衡器。在預設情況下,不允許傳輸資料從其他通訊埠傳送。

  • Auto Scaling 群組 - Auto Scaling 群組,設為在執行個體終止或無法使用時,取代該執行個體。

  • Amazon S3 儲存貯體 - 儲存位置,用來儲存當您使用 Elastic Beanstalk 時所建立的原始程式碼、日誌和其他成品。

  • Amazon CloudWatch 警示 — 兩個 CloudWatch 警示,用於監控環境中執行個體的負載,並在負載過高或過低時觸發警示。當警示觸發時,您的 Auto Scaling 群組會擴展或縮減以進行回應。

  • AWS CloudFormation 堆疊 — Elastic Beanstalk 用 AWS CloudFormation 來啟動環境中的資源並傳播組態變更。資源定義於範本中,您可在 AWS CloudFormation 主控台中檢視此範本。

  • 域名稱 — 在表單中路由到 Web 應用程式的網域名稱 subdomain.region. 彈性無線網站.

    注意

    為了增強 Elastic Beanstalk 應用程式的安全性,在公用尾碼清單 () 中註冊了彈性豆莖網域。PSL為了加強安全性,如果您需要在 Elastic Beanstalk 應用程式的預設網域名稱中設定敏感性 Cookie,我們建議您使用具 __Host- 前置詞的 Cookie。此做法將有助於保護您的網域免受跨網站要求偽造嘗試 () 的侵害。CSRF如需更多資訊,請參閱 Mozilla 開發人員網路中的設定 Cookie 頁面。

這些資源全都由 Elastic Beanstalk 管理。當您終止環境時,Elastic Beanstalk 會終止其中的所有資源。您啟動的RDS資料庫執行個體不在您的環境之外,因此您必須負責管理其生命週期。

注意

Elastic Beanstalk 建立的 Amazon S3 儲存貯體會在環境間共享,且不會在環境終止時刪除。如需詳細資訊,請參閱將 Elastic Beanstalk 與 Amazon S3 搭配使用

設定安全群組、環境屬性和擴展

將資料庫執行個體的安全群組新增至執行環境。此程序會透過其他連接的安全群組,使 Elastic Beanstalk 重新佈建您環境中的所有執行個體。

欲將安全群組新增至您的環境
  • 執行以下任意一項:

    • 使用 Elastic Beanstalk 主控台新增安全群組

      1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

      2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

        注意

        如果您有許多環境,請使用搜尋列來篩選環境清單。

      3. 在導覽窗格中,選擇 Configuration (組態)

      4. Instances (執行個體) 組態類別中,選擇 Edit (編輯)

      5. EC2安全群組下,除了 Elastic Beanstalk 建立的執行個體安全性群組之外,還選擇要連接至執行個體的安全性群組。

      6. 若要儲存變更,請選擇頁面底部的儲存變更

      7. 閱讀警告的內容,然後選擇 Confirm (確認)

    • 若要使用組態檔案新增安全群組,請使用 securitygroup-addexisting.config 範例檔案。

接著,使用環境屬性,將連線資訊傳送至環境。此範例應用程式使用一組預設屬性,這些屬性符合您於環境佈建資料庫時 Elastic Beanstalk 所設定的屬性。

設定 Amazon RDS 資料庫執行個體的環境屬性
  1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇組態

  4. 更新、監控和日誌記錄組態類別中,選擇編輯

  5. Environment Properties (環境屬性) 區段,定義應用程式建立連線字串所讀取的變數。為了與具有整合式RDS資料庫執行個體的環境相容,請使用下列名稱和值。您可以在RDS主控台中找到除密碼以外的所有值。

    屬性名稱 描述 屬性值

    RDS_HOSTNAME

    資料庫執行個體的主機名稱。

    在 Amazon RDS 主控台的「連線和安全性」索引標籤上:端點

    RDS_PORT

    資料庫執行個體接受連線的連接埠。預設值在不同資料庫引擎中有所差異。

    Amazon RDS 主控台上的「連線和安全性」索引標籤上:連接

    RDS_DB_NAME

    資料庫名稱,ebdb

    在 Amazon RDS 主控台的「組態」索引標籤上:資料庫名稱

    RDS_USERNAME

    您為資料庫設定的使用者名稱。

    在 Amazon RDS 主控台的「組態」索引標籤上:主要使用者名稱

    RDS_PASSWORD

    您為資料庫設定的密碼。

    在 Amazon RDS 控制台中不提供參考。

    添加了屬性的環境RDS屬性配置部分
  6. 若要儲存變更,請選擇頁面底部的儲存變更

最後,請增加執行個體計數下限,藉此設定您的環境 Auto Scaling 群組。隨時至少執行兩個執行個體,避免您環境中的 Web 伺服器出現單點故障,且無須停止網站服務即可部署變更。

若要設定您環境的 Auto Scaling 群組,以維持高可用性
  1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇 Configuration (組態)。

  4. Capacity (容量) 組態類別中,選擇 Edit (編輯)

  5. Auto Scaling 群組區段,將最小執行個體設定為 2

  6. 若要儲存變更,請選擇頁面底部的儲存變更

部署範例應用程式

現在,您的環境已準備好執行範例應用程式並連接到 Amazon RDS。將範例應用程式部署至您的環境。

注意

如果您還沒有 GitHub,請從下載源代碼包:eb-demo-php-simple-app- 1.3.zip

若要部署原始碼套件
  1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在環境概觀頁面上,選擇 Upload and deploy (上傳和部署)。

  4. 使用畫面顯示對話方塊來上傳原始碼套件。

  5. 選擇 Deploy (部署)。

  6. 部署完成後,您可以選擇URL要在新索引標籤中開啟網站的網站。

該網站收集用戶評論,並使用我的數據SQL庫來存儲數據。若要新增評論,請選擇 Share Your Thought (分享您的想法)、輸入評論,然後選擇 Submit Your Thought (提交您的想法)。本 Web 應用程式會將評論寫入資料庫,環境中的任何執行個體均可讀取,而且執行個體停止服務時也不會遺失。

User interface for sharing thoughts, with a posted comment about Elastic Beanstalk on AWS.

清除

當您完成使用 Elastic Beanstalk 時,即可終止您的環境。Elastic Beanstalk 會終止與您的環境相關聯的所有 AWS 資源,例如 Amazon EC2 執行個體、資料庫執行個體、負載平衡器、安全群組和警示。

從控制台終止 Elastic Beanstalk 環境
  1. 開啟彈性魔豆控制台,然後在區域清單中選取您的. AWS 區域

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 選擇 Actions (動作),然後選擇 Terminate Environment (終止環境)。

  4. 使用畫面顯示對話方塊來確認環境終止。

您可以使用 Elastic Beanstalk,隨時輕鬆地為您的應用程式建立新環境。

此外,您可終止於 Elastic Beanstalk 環境外建立的資料庫資源。當您終止 Amazon 資料RDS庫執行個體時,您可以拍攝快照並稍後將資料還原到另一個執行個體。

終止您的RDS資料庫執行個體
  1. 打開 Amazon RDS 控制台

  2. 選擇 Databases (資料庫)。

  3. 選擇資料庫執行個體。

  4. 選擇動作,然後選擇刪除

  5. 選擇是否建立快照,然後選擇 Delete (刪除)

後續步驟

隨著您繼續開發應用程式,您可能會希望無須手動建立 .zip 檔案並將其上傳至 Elastic Beanstalk 主控台,即可管理環境和部署應用程式。E lastic Beanstalk 命令列介面 (EBCLI) 提供從命令列建立、設定和部署應用程式至 Elastic Beanstalk 環境的 easy-to-use 指令。

範例應用程式會使用組態檔來PHP設定設定,並在資料庫中建立資料表 (如果尚未存在)。您亦可於環境建立期間,使用組態檔案進行執行個體的安全群組設定,以避免耗時的組態更新。如需更多資訊,請參閱使用組態檔案 (.ebextensions) 來進行進階的環境自訂

進行開發和測試時,建議您使用 Elastic Beanstalk 的功能,將受管的資料庫執行個體直接加入您的環境。如需於環境中設定資料庫的說明,請參閱將資料庫新增至您的 Elastic Beanstalk 環境

若您需要高效能資料庫,請考慮使用 Amazon Aurora。Amazon Aurora 是與我SQL相容的資料庫引擎,可以低成本提供商業資料庫功能。若要將應用程式連線到不同的資料庫,請重複安全性群組組態步驟,並更新相RDS關的環境特性

最後,如果您打算在生產環境中使用您的應用程式,您會想要為您的環境設定自訂網域名稱,並啟HTTPS用安全連線。