建立、上傳和部署應用程式 - AMS 進階應用程式開發人員指南

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

建立、上傳和部署應用程式

首先,建立 WordPress 應用程式套件,然後使用 CodeDeploy CTs 來建立和部署應用程式。

  1. 下載 WordPress、擷取檔案並建立 ./scripts 目錄。

    Linux 命令:

    wget https://github.com/WordPress/WordPress/archive/master.zip

    Windows:貼https://github.com/WordPress/WordPress/archive/master.zip到瀏覽器視窗並下載 zip 檔案。

    建立要在其中組合套件的暫時目錄。

    Linux︰

    mkdir /tmp/WordPress

    Windows:建立「WordPress」目錄,稍後您將使用目錄路徑。

  2. 將 WordPress 來源解壓縮至「WordPress」目錄,並建立 ./scripts 目錄。

    Linux︰

    unzip master.zip -d /tmp/WordPress_Temp cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress rm -rf /tmp/WordPress_Temp rm -f master cd /tmp/WordPress mkdir scripts

    Windows:前往您建立的「WordPress」目錄,並在該處建立「scripts」目錄。

    如果您在 Windows 環境中,請務必將指令碼檔案的中斷類型設定為 Unix (LF)。在記事本 ++ 中,這是視窗右下角的選項。

  3. 在 WordPress 目錄中建立 CodeDeploy appspec.yml 檔案 (如果複製範例,請檢查縮排,每個空間計數)。重要:確保「來源」路徑正確,可將 WordPress 檔案 (在本例中為 WordPress 目錄中) 複製到預期的目的地 (/var/www/html/WordPress)。在此範例中,appapppec.yml 檔案位於具有 WordPress 檔案的 目錄中,因此只需要 "/"。此外,即使您為 Auto Scaling 群組使用 RHEL AMI,也請保持原狀。Apppec.yml 檔案範例:

    version: 0.0 os: linux files: - source: / destination: /var/www/html/WordPress hooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/config_wordpress.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root
  4. 在 WordPress ./scripts 目錄中建立 bash 檔案指令碼。

    首先,config_wordpress.sh使用下列內容建立 (如果您願意,可以直接編輯 wp-config.php 檔案)。

    注意

    DBName 取代為 HA 堆疊 RFC 中指定的值 (例如 wordpress)。

    DB_MasterUsername 取代為 HA 堆疊 RFC 中指定的MasterUsername值 (例如 admin)。

    DB_MasterUserPassword 取代為 HA Stack RFC 中指定的MasterUserPassword值 (例如 p4ssw0rd)。

    DB_ENDPOINT 取代為 HA Stack RFC 執行輸出中的端點 DNS 名稱 (例如 srt1cz23n45sfg.clgvd67uvydk.us-east-1.rds.amazonaws.com)。您可以使用 GetRfc 操作 (CLI:get-rfc --rfc-id RFC_ID) 或在先前提交的 HA Stack RFC 的 AMS 主控台 RFC 詳細資訊頁面中找到此項目。

    #!/bin/bash chmod -R 755 /var/www/html/WordPress cp /var/www/html/WordPress/wp-config-sample.php /var/www/html/WordPress/wp-config.php cd /var/www/html/WordPress sed -i "s/database_name_here/DBName/g" wp-config.php sed -i "s/username_here/DB_MasterUsername/g" wp-config.php sed -i "s/password_here/DB_MasterUserPassword/g" wp-config.php sed -i "s/localhost/DB_ENDPOINT/g" wp-config.php
  5. 在相同的目錄中install_dependencies.sh,使用下列內容建立 :

    #!/bin/bash yum install -y php yum install -y php-mysql yum install -y mysql service httpd restart
    注意

    HTTPS 會在啟動時安裝為使用者資料的一部分,以允許運作狀態檢查從頭開始運作。

  6. 在相同的目錄中start_server.sh,使用下列內容建立 :

    • 對於 Amazon Linux 執行個體,請使用:

      #!/bin/bash service httpd start
    • 對於 RHEL 執行個體,請使用此 (額外的命令是允許 SELINUX 接受 WordPress 的政策):

      #!/bin/bash setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_connect 1 chcon -t httpd_sys_rw_content_t /var/www/html/WordPress/wp-content -R restorecon -Rv /var/www/html service httpd start
  7. 在相同的目錄中stop_server.sh,使用下列內容建立 :

    #!/bin/bash service httpd stop
  8. 建立 zip 套件。

    Linux︰

    $ cd /tmp/WordPress $ zip -r wordpress.zip .

    Windows:前往您的「WordPress」目錄,選取所有檔案並建立 zip 檔案,請務必將其命名為 wordpress.zip。

  1. 將應用程式套件上傳至 S3 儲存貯體。

    套件必須備妥,才能繼續部署堆疊。

    您會自動存取您建立的任何 S3 儲存貯體執行個體。您可以透過堡壘或透過 S3 主控台存取,並使用drag-and-drop或瀏覽上傳 WordPress 套件至 ,然後選取 zip 檔案。

    您也可以在 shell 視窗中使用以下命令;請確定您有 zip 檔案的正確路徑:

    aws s3 cp wordpress.zip s3://BUCKET_NAME/
  2. 部署 WordPress 應用程式套件。

    在開始之前收集下列資料,可讓部署更快進行。

    必要資料:

    • VPC-ID:此值會決定 S3 儲存貯體的位置。使用您先前使用的相同 VPC ID。

    • CodeDeployApplicationNameCodeDeployApplicationName:您在 HA 2-Tier堆疊 RFC 中使用的ApplicationName值會設定 CodeDeployApplicationName 和 CodeDeployDeploymentGroupName。此範例使用「WordPress」,但您可能已使用不同的值。

    • S3Location:對於 S3Bucket,請使用您先前建立BucketName的 。S3BundleTypeS3Key來自您放在 S3 存放區的套件。

    1. 輸出 CodeDeploy 應用程式的執行參數 JSON 結構描述,將 CT 部署到名為 DeployCDAppParams.json.

      aws amscm get-change-type-version --change-type-id "ct-2edc3sd1sqmrb" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > DeployCDAppParams.json
    2. 如下所示修改結構描述並將其儲存為 ,您可以刪除並取代內容。

      { "Description": "DeployWPCDApp", "VpcId": "VPC_ID", "Name": "WordPressCDAppDeploy", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPress", "CodeDeployDeploymentGroupName": "WordPress", "CodeDeployIgnoreApplicationStopFailures": false, "CodeDeployRevision": { "RevisionType": "S3", "S3Location": { "S3Bucket": "BUCKET_NAME", "S3BundleType": "zip", "S3Key": "wordpress.zip" } } } }
    3. 將 CreateRfc 的 JSON 範本輸出至目前資料夾中名為 DeployCDAppRfc.json:

      aws amscm create-rfc --generate-cli-skeleton > DeployCDAppRfc.json
    4. 修改並儲存 DeployCDAppRfc.json 檔案,您可以刪除和取代內容。請注意, RequestedStartTime和 現在RequestedEndTime是選用的;排除它們會建立 ASAP RFC,在核准後立即執行 (通常會自動執行)。若要提交排定的 RFC,請新增這些值。

      { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2edc3sd1sqmrb", "Title": "CD-Deploy-For-WP-RFC" }
    5. 建立 RFC,指定 DeployCDAppRfc 檔案和 DeployCDAppParams 執行參數檔案:

      aws amscm create-rfc --cli-input-json file://DeployCDAppRfc.json --execution-parameters file://DeployCDAppParams.json

      您會在回應中收到新 RFC 的 RfcId。儲存後續步驟的 ID。

    6. 提交 RFC:

      aws amscm submit-rfc --rfc-id RFC_ID

      如果 RFC 成功,您不會收到任何輸出。

    7. 若要檢查 RFC 狀態,請執行

      aws amscm get-rfc --rfc-id RFC_ID