建立、上傳和部署應用程式 - 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上傳 CodeDeploy 套件,或瀏覽並選取檔案。

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

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

    所需的資料碼部署應用程式部署:

    • CodeDeployApplicationName:您提供 CodeDeploy 應用程式的名稱。

    • CodeDeployGroupName:由於 CodeDeploy 應用程式和群組都是從您在 HA 堆疊 RFC 中提供 CodeDeploy 應用程式的名稱建立的,因此這是與 CodeDeployApplicationName 相同的名稱。

    • S3Bucket體:您提供 S3 儲存貯體的名稱。

    • S3BundleTypeS3Key:這些是您部署的 WordPress 應用程式套件的一部分。

    • VpcId:相關的 VPC。

    1. 建立 RFC 頁面上,從 RFC CT 挑選清單選取類別部署、子類別應用程式、項目 CodeDeploy 應用程式和操作部署

    2. 保留預設的基本選項,並如所示設定值。

      注意

      參考先前建立的 CodeDeploy 應用程式、CodeDeploy 部署群組、S3 儲存貯體和套件。

      Subject: WP-CD-Deploy-RFC Description: DeployWordPress S3Bucket: BUCKET_NAME S3Key: wordpress.zip S3BundleType: zip CodeDeployApplicationName: WordPress CodeDeployDeploymentGroupName: WordPress CodeDeployIgnoreApplicationStopFailures: false RevisionType: S3 VpcId: VPC_ID Name: WP-CD-Deploy-Op TimeoutInMinutes: 60
    3. 完成後按一下提交