步驟 2:建立範例應用程式修訂 - AWS CodeDeploy

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

步驟 2:建立範例應用程式修訂

在此步驟中,您將建立範例應用程式修訂版,以部署到您的內部部署執行個體。

由於很難知道在內部部署執行個體上已安裝哪些軟體和功能,或者組織的原則允許安裝哪些軟體和功能,因此我們在此提供的範例應用程式修訂只是使用批次指令碼 (適用於 Windows Server) 或殼層指令碼 (適用於 Ubuntu Server 和 RHEL),將文字檔寫入內部部署執行個體上的位置。每個 CodeDeploy 部署生命週期事件都會寫入一個檔案,包括 Install AfterInstallApplicationStart、、和ValidateService。在BeforeInstall部署生命週期事件期間,會執行指令碼以移除先前部署此範例期間撰寫的舊檔案,並在內部部署執行個體上建立要寫入新檔案的位置。

注意

這個範例應用程式修訂版可能無法進行部署,若以下任何一項為真:

  • 在內部部署執行個體上啟動 CodeDeploy 代理程式的使用者沒有執行指令碼的權限。

  • 使用者沒有在指令碼中所列位置建立或刪除資料夾的權限。

  • 使用者沒有在指令碼中列出的位置建立文字檔的權限。

注意

如果您已設定 Windows Server 執行個體,並且想要部署不同的範例,您可能需要使用教程:部署一個「你好,世界!」 應用程序 CodeDeploy(視窗服務器)教學課程步驟 2:將您的來源內容設定為部署到視窗伺服器亞馬遜 EC2 執行個體中的範例。

如果您已設定 RHEL 執行個體,並想要部署不同的範例,您可能需要使用教學課程:部署 WordPress 至 Amazon EC2 執行個體 (Amazon Linux 或紅帽企業 Linux、macOS 或 Unix)教學課程步驟 2:設定要部署到 Amazon Linux 或 RHEL 亞馬遜 EC2 執行個體的來源內容中的範例。

目前,Ubuntu 服務器沒有替代示例。

  1. 請在您的開發機器上,建立一個名為 CodeDeployDemo-OnPrem 的子目錄 (子資料夾),將儲存範例應用程式修訂版的檔案,然後切換到子資料夾。在此範例中,我們假設您將使用c:\temp資料夾做為 Windows 伺服器的根資料夾,或使用/tmp資料夾做為 Ubuntu 伺服器和 RHEL 的根資料夾。如果您使用不同資料夾,請務必在此教學課程中都替換為這個。

    針對 Windows:

    mkdir c:\temp\CodeDeployDemo-OnPrem cd c:\temp\CodeDeployDemo-OnPrem

    若為 Linux、macOS 或 Unix:

    mkdir /tmp/CodeDeployDemo-OnPrem cd /tmp/CodeDeployDemo-OnPrem
  2. CodeDeployDemo-OnPrem 子資料夾的根目錄中,使用純文字編輯器建立兩個分別名為 appspec.ymlinstall.txt 的檔案:

    appspec.yml適用於視窗伺服器:

    version: 0.0 os: windows files: - source: .\install.txt destination: c:\temp\CodeDeployExample hooks: BeforeInstall: - location: .\scripts\before-install.bat timeout: 900 AfterInstall: - location: .\scripts\after-install.bat timeout: 900 ApplicationStart: - location: .\scripts\application-start.bat timeout: 900 ValidateService: - location: .\scripts\validate-service.bat timeout: 900

    appspec.yml對於 Ubuntu 服務器和 RHEL:

    version: 0.0 os: linux files: - source: ./install.txt destination: /tmp/CodeDeployExample hooks: BeforeInstall: - location: ./scripts/before-install.sh timeout: 900 AfterInstall: - location: ./scripts/after-install.sh timeout: 900 ApplicationStart: - location: ./scripts/application-start.sh timeout: 900 ValidateService: - location: ./scripts/validate-service.sh timeout: 900

    若要取得有關 AppSpec 檔案的更多資訊,請參閱將應用程式規格檔案新增至修訂 CodeDeployCodeDeploy AppSpec 檔案參考

    install.txt:

    The Install deployment lifecycle event successfully completed.
  3. CodeDeployDemo-OnPrem 子資料夾的根目錄下,建立 scripts 子資料夾,然後切換到該資料夾:

    針對 Windows:

    mkdir c:\temp\CodeDeployDemo-OnPrem\scripts cd c:\temp\CodeDeployDemo-OnPrem\scripts

    若為 Linux、macOS 或 Unix:

    mkdir -p /tmp/CodeDeployDemo-OnPrem/scripts cd /tmp/CodeDeployDemo-OnPrem/scripts
  4. scripts子資料夾的根目錄中,validate-service.bat針對 Ubuntu 伺服器和 RHEL before-install.bat after-install.batapplication-start.bat,使用文字編輯器建立四個名validate-service.shbefore-install.shafter-install.shapplication-start.sh、、和的檔案:

    對於視窗伺服器:

    before-install.bat:

    set FOLDER=%HOMEDRIVE%\temp\CodeDeployExample if exist %FOLDER% ( rd /s /q "%FOLDER%" ) mkdir %FOLDER%

    after-install.bat:

    cd %HOMEDRIVE%\temp\CodeDeployExample echo The AfterInstall deployment lifecycle event successfully completed. > after-install.txt

    application-start.bat:

    cd %HOMEDRIVE%\temp\CodeDeployExample echo The ApplicationStart deployment lifecycle event successfully completed. > application-start.txt

    validate-service.bat:

    cd %HOMEDRIVE%\temp\CodeDeployExample echo The ValidateService deployment lifecycle event successfully completed. > validate-service.txt

    對於 Ubuntu 服務器和 RHEL:

    before-install.sh:

    #!/bin/bash export FOLDER=/tmp/CodeDeployExample if [ -d $FOLDER ] then rm -rf $FOLDER fi mkdir -p $FOLDER

    after-install.sh:

    #!/bin/bash cd /tmp/CodeDeployExample echo "The AfterInstall deployment lifecycle event successfully completed." > after-install.txt

    application-start.sh:

    #!/bin/bash cd /tmp/CodeDeployExample echo "The ApplicationStart deployment lifecycle event successfully completed." > application-start.txt

    validate-service.sh:

    #!/bin/bash cd /tmp/CodeDeployExample echo "The ValidateService deployment lifecycle event successfully completed." > validate-service.txt unset FOLDER
  5. 僅適用於 Ubuntu 伺服器和 RHEL,請確定四個殼層指令碼具有執行權限:

    chmod +x ./scripts/*