本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 2:建立範例應用程式修訂
在此步驟中,您將建立範例應用程式修訂版,以部署到您的內部部署執行個體。
由於很難知道在內部部署執行個體上已安裝哪些軟體和功能,或者組織的原則允許安裝哪些軟體和功能,因此我們在此提供的範例應用程式修訂只是使用批次指令碼 (適用於 Windows Server) 或殼層指令碼 (適用於 Ubuntu Server 和 RHEL),將文字檔寫入內部部署執行個體上的位置。每個 CodeDeploy 部署生命週期事件都會寫入一個檔案,包括 Install AfterInstall、ApplicationStart、、和ValidateService。在BeforeInstall部署生命週期事件期間,會執行指令碼以移除先前部署此範例期間撰寫的舊檔案,並在內部部署執行個體上建立要寫入新檔案的位置。
注意
這個範例應用程式修訂版可能無法進行部署,若以下任何一項為真:
-
在內部部署執行個體上啟動 CodeDeploy 代理程式的使用者沒有執行指令碼的權限。
-
使用者沒有在指令碼中所列位置建立或刪除資料夾的權限。
-
使用者沒有在指令碼中列出的位置建立文字檔的權限。
注意
如果您已設定 Windows Server 執行個體,並且想要部署不同的範例,您可能需要使用教程:部署一個「你好,世界!」 應用程序 CodeDeploy(視窗服務器)教學課程步驟 2:將您的來源內容設定為部署到視窗伺服器亞馬遜 EC2 執行個體中的範例。
如果您已設定 RHEL 執行個體,並想要部署不同的範例,您可能需要使用教學課程:部署 WordPress 至 Amazon EC2 執行個體 (Amazon Linux 或紅帽企業 Linux、macOS 或 Unix)教學課程步驟 2:設定要部署到 Amazon Linux 或 RHEL 亞馬遜 EC2 執行個體的來源內容中的範例。
目前,Ubuntu 服務器沒有替代示例。
-
請在您的開發機器上,建立一個名為
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
-
在
CodeDeployDemo-OnPrem
子資料夾的根目錄中,使用純文字編輯器建立兩個分別名為appspec.yml
和install.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 檔案的更多資訊,請參閱將應用程式規格檔案新增至修訂 CodeDeploy和CodeDeploy AppSpec 檔案參考。
install.txt
:The Install deployment lifecycle event successfully completed.
-
在
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
-
在
scripts
子資料夾的根目錄中,validate-service.bat
針對 Ubuntu 伺服器和 RHELbefore-install.bat
after-install.bat
application-start.bat
,使用文字編輯器建立四個名validate-service.sh
為before-install.sh
after-install.sh
application-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
-
僅適用於 Ubuntu 伺服器和 RHEL,請確定四個殼層指令碼具有執行權限:
chmod +x ./scripts/*