

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

# 步驟 2：建立範例應用程式修訂
<a name="tutorials-on-premises-instance-2-create-sample-revision"></a>

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

由於很難得知您的組織在現場部署執行個體上已安裝或允許安裝哪些軟體和功能，我們在此提供的範例應用程式修訂版只會使用批次指令碼 （適用於 Windows Server) 或 shell 指令碼 （適用於 Ubuntu Server 和 RHEL) 將文字檔案寫入現場部署執行個體上的位置。每個 CodeDeploy 部署生命週期事件都會寫入一個檔案，包括 **Install**、**AfterInstall**、**ApplicationStart** 和 **ValidateService**。在 **BeforeInstall** 部署生命週期事件期間，先前部署此範例時所編寫的指令碼會移除舊檔案，並在您的現場部署執行個體上建立一個寫入新檔案的位置。

**注意**  
這個範例應用程式修訂版可能無法進行部署，若以下任何一項為真：  
在現場部署執行個體上啟動 CodeDeploy 代理程式的使用者沒有執行指令碼的許可。
使用者沒有在指令碼中列出的位置中建立或刪除資料夾的許可。
使用者沒有在指令碼中列出的位置建立文字檔案的許可。

**注意**  
如果您已設定 Windows Server 執行個體並想要部署不同的範例，建議您在[教學課程：部署 "hello， world！" 應用程式搭配 CodeDeploy (Windows Server)](tutorials-windows.md)教學課程中使用 [步驟 2：設定您的來源內容以部署至 Windows Server Amazon EC2 執行個體](tutorials-windows-configure-content.md)中的執行個體。  
如果您已設定 RHEL 執行個體並想要部署不同的範例，建議您在[教學課程：將 WordPress 部署到 Amazon EC2 執行個體 (Amazon Linux 或 Red Hat Enterprise Linux 和 Linux、macOS 或 Unix)](tutorials-wordpress.md)教學課程中使用 [步驟 2：設定要部署到 Amazon Linux 或 Red Hat Enterprise Linux Amazon EC2 執行個體的來源內容](tutorials-wordpress-configure-content.md)中的範例。  
目前，沒有 Ubuntu Server 的替代範例。

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

   針對 Windows：

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

   針對 Linux、macOS 或 Unix：

   ```
   mkdir /tmp/CodeDeployDemo-OnPrem
   cd /tmp/CodeDeployDemo-OnPrem
   ```

1. 在 `CodeDeployDemo-OnPrem` 子資料夾的根目錄中，使用純文字編輯器建立兩個分別名為 `appspec.yml` 和 `install.txt` 的檔案：

   `appspec.yml` 適用於 Windows Server 的 ：

   ```
   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 Server 和 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 的修訂版](application-revisions-appspec-file.md)和[CodeDeploy AppSpec 檔案參考](reference-appspec-file.md)。

   `install.txt`:

   ```
   The Install deployment lifecycle event successfully completed.
   ```

1. 在 `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
   ```

1. 在`scripts`子資料夾的根目錄中，使用文字編輯器為 `validate-service.bat` Windows Server 建立四個名為 `before-install.bat`、`application-start.bat`、 和 `after-install.bat`的檔案，或`validate-service.sh`為 Ubuntu Server 和 RHEL 建立四個名為 `application-start.sh`、、 和 `before-install.sh` `after-install.sh`的檔案：

   對於 Windows Server：

   `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 Server 和 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
   ```

1. 僅針對 Ubuntu Server 和 RHEL，請確定四個 shell 指令碼具有執行許可：

   ```
   chmod +x ./scripts/*
   ```