

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

# 教學課程：使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)
<a name="tutorials-on-premises-instance"></a>

本教學課程透過引導您將範例應用程式修訂部署至單一現場部署執行個體，也就是執行 Amazon EC2 Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux (RHEL) 的實體裝置，協助您獲得 CodeDeploy 的使用體驗。如需現場部署執行個體及其如何使用 CodeDeploy 的相關資訊，請參閱 [使用 CodeDeploy 的內部部署執行個體](instances-on-premises.md)。

不是您想找的內容嗎？
+ 若要練習部署到執行 Amazon Linux 或 RHEL 的 Amazon EC2 執行個體，請參閱 [教學課程：將 WordPress 部署到 Amazon EC2 執行個體 (Amazon Linux 或 Red Hat Enterprise Linux 和 Linux、macOS 或 Unix)](tutorials-wordpress.md)。
+ 若要練習部署到執行 Windows Server 的 Amazon EC2 執行個體，請參閱 [教學課程：部署 "hello， world！" 應用程式搭配 CodeDeploy (Windows Server)](tutorials-windows.md)。

**Topics**
+ [先決條件](tutorials-on-premises-instance-prerequisites.md)
+ [步驟 1：設定現場部署執行個體](tutorials-on-premises-instance-1-configure-instance.md)
+ [步驟 2：建立範例應用程式修訂](tutorials-on-premises-instance-2-create-sample-revision.md)
+ [步驟 3：將應用程式修訂版綁定並上傳至 Amazon S3](tutorials-on-premises-instance-3-bundle-sample-revision.md)
+ [步驟 4：部署您的應用程式修訂版](tutorials-on-premises-instance-4-deploy-sample-revision.md)
+ [步驟 5：驗證您的部署](tutorials-on-premises-instance-5-verify-deployment.md)
+ [步驟 6：清除資源](tutorials-on-premises-instance-6-clean-up-resources.md)

# 先決條件
<a name="tutorials-on-premises-instance-prerequisites"></a>

開始本教學課程之前，您必須完成 中的先決條件[CodeDeploy 入門](getting-started-codedeploy.md)，其中包括設定使用者、安裝或升級 AWS CLI，以及建立服務角色。您不需要如先決條件所述建立 IAM 執行個體描述檔。內部部署執行個體不使用 IAM 執行個體描述檔。

您將設定為現場部署執行個體的實體裝置，必須執行 [CodeDeploy 代理程式支援的作業系統](codedeploy-agent.md#codedeploy-agent-supported-operating-systems) 中所列的其中一個作業系統。

# 步驟 1：設定現場部署執行個體
<a name="tutorials-on-premises-instance-1-configure-instance"></a>

您必須先進行設定，之後才能部署到現場部署執行個體。請遵循[使用 CodeDeploy 的內部部署執行個體](instances-on-premises.md)中的指示，然後返回此頁面。

## 安裝 CodeDeploy 代理程式
<a name="tutorials-on-premises-instance-1-configure-instance-agent"></a>

設定現場部署執行個體之後，請遵循[安裝 CodeDeploy 代理](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)程式中的現場部署執行個體步驟，並返回此頁面。

# 步驟 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/*
   ```

# 步驟 3：將應用程式修訂版綁定並上傳至 Amazon S3
<a name="tutorials-on-premises-instance-3-bundle-sample-revision"></a>

您必須先綁定檔案，然後將檔案綁定上傳到 Amazon S3 儲存貯體，才能部署應用程式修訂版。請遵循[使用 CodeDeploy 建立應用程式](applications-create.md)和[將 CodeDeploy 的修訂推送至 Amazon S3 （僅限 EC2/內部部署部署）](application-revisions-push.md)中的說明進行。(雖然您可以給予應用程式和部署群組任何名稱，我們建議您對於應用程式名稱使用 `CodeDeploy-OnPrem-App`，對於部署群組名稱使用 `CodeDeploy-OnPrem-DG`)。在您完成這些指示後，返回此頁面。

**注意**  
或者，您可以上傳檔案套件到 GitHub 儲存庫並從該處部署套件 如需詳細資訊，請參閱[將 CodeDeploy 與 GitHub 整合](integrations-partners-github.md)。

# 步驟 4：部署您的應用程式修訂版
<a name="tutorials-on-premises-instance-4-deploy-sample-revision"></a>

將應用程式修訂版上傳至 Amazon S3 儲存貯體後，請嘗試將其部署到您的現場部署執行個體。請遵循[使用 CodeDeploy 建立部署](deployments-create.md)中的指示，然後返回此頁面。

# 步驟 5：驗證您的部署
<a name="tutorials-on-premises-instance-5-verify-deployment"></a>

若要驗證部署是否成功，請按照 [檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md) 中的指示，然後返回此頁面。

如果部署成功，您會在 `c:\temp\CodeDeployExample` 資料夾 （適用於 Windows Server) 或 `/tmp/CodeDeployExample`（適用於 Ubuntu Server 和 RHEL) 中找到四個文字檔案。

如果部署失敗，請按照 [使用 CodeDeploy 檢視執行個體詳細資訊](instances-view-details.md) 和 [對執行個體問題進行故障診斷](troubleshooting-ec2-instances.md)中的故障排除步驟進行。進行任何必要的修正，重新綁定並上傳您的應用程式修訂版，然後再試一次部署。

# 步驟 6：清除資源
<a name="tutorials-on-premises-instance-6-clean-up-resources"></a>

為了避免您在本教學課程中建立的資源持續產生費用，如果您不再使用 Amazon S3 儲存貯體，請將其刪除。您也可以清除相關聯的資源，例如 CodeDeploy 中的應用程式和部署群組記錄，以及現場部署執行個體。

您可以使用 CodeDeploy 和 Amazon S3 主控台和 的 AWS CLI 或組合 AWS CLI 來清理資源。

## 清除資源 (CLI)
<a name="tutorials-on-premises-instance-6-clean-up-resources-cli"></a>

**刪除 Amazon S3 儲存貯體**
+ 針對儲存貯體呼叫 [rm](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html) 命令以及`--recursive`切換 （例如，`amzn-s3-demo-bucket`)。這會刪除儲存貯體以及儲存貯體中的所有物件。

  ```
  aws s3 rm s3://your-bucket-name --recursive --region region
  ```

**在 CodeDeploy 中刪除應用程式和部署群組記錄**
+ 針對應用程式呼叫 [delete-application](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-application.html) 命令 （例如 `CodeDeploy-OnPrem-App`)。部署和部署群組的記錄將會刪除。

  ```
  aws deploy delete-application --application-name your-application-name
  ```<a name="tutorials-on-premises-instance-6-clean-up-resources-deregister-cli"></a>

**取消註冊現場部署執行個體並刪除 IAM 使用者**
+ 針對現場部署執行個體和區域呼叫[取消註冊](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html)命令：

  ```
  aws deploy deregister --instance-name your-instance-name --delete-iam-user --region your-region
  ```
**注意**  
如果您不想刪除與此內部部署執行個體相關聯的 IAM 使用者，請改用 `--no-delete-iam-user`選項。

**解除安裝 CodeDeploy 代理程式，並從現場部署執行個體移除組態檔案**
+ 從現場部署執行個體中，呼叫[解除安裝](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html)命令：

  ```
  aws deploy uninstall
  ```

您現在已經完成所有步驟，以清除用於此教學課程的資源。

## 清除資源 （主控台）
<a name="tutorials-on-premises-instance-6-clean-up-resources-console"></a>

**刪除 Amazon S3 儲存貯體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 選擇您要刪除的儲存貯體旁的圖示 (例如 `amzn-s3-demo-bucket`)，但不選擇儲存貯體本身。

1. 選擇**動作**，然後選擇**刪除**。

1. 當提示刪除儲存貯體時，請選擇 **OK (確定)**。

**在 CodeDeploy 中刪除應用程式和部署群組記錄**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，選擇 **Applications (應用程式)**。

1. 選擇您要刪除的應用程式名稱 (例如，`CodeDeploy-OnPrem-App`)，然後選擇 **Delete application (刪除應用程式)**。

1. 當系統出現提示時，請輸入應用程式的名稱，以確認要執行刪除動作，接著選擇 **Delete (刪除)**。

您無法使用 AWS CodeDeploy 主控台取消註冊現場部署執行個體，或解除安裝 CodeDeploy 代理程式。請遵循中的說明進行[取消註冊現場部署執行個體並刪除 IAM 使用者](#tutorials-on-premises-instance-6-clean-up-resources-deregister-cli)