

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

# 教學課程：將 WordPress 部署到 Amazon EC2 執行個體 (Amazon Linux 或 Red Hat Enterprise Linux 和 Linux、macOS 或 Unix)
<a name="tutorials-wordpress"></a>

在本教學課程中，您將以 PHP 和 MySQL 為基礎的開放原始碼部落格工具和內容管理系統 WordPress 部署至執行 Amazon Linux 或 Red Hat Enterprise Linux (RHEL) 的單一 Amazon EC2 執行個體。

不是您想找的內容嗎？
+ 若要練習改為部署到執行 Windows Server 的 Amazon EC2 執行個體，請參閱 [教學課程：部署 "hello， world！" 應用程式搭配 CodeDeploy (Windows Server)](tutorials-windows.md)。
+ 若要練習部署到現場部署執行個體而非 Amazon EC2 執行個體，請參閱 [教學課程：使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)。

本教學課程的步驟是從執行 Linux、macOS 或 Unix 的本機開發機器的觀點呈現。雖然您可以在執行 Windows 的本機電腦上完成其中大部分的步驟，但是您必須調整步驟以涵蓋命令，例如 **chmod** 和 **wget**，以及應用程式，例如 SED，還有目錄路徑，例如 `/tmp`。

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

**Topics**
+ [步驟 1：啟動和設定 Amazon Linux 或 Red Hat Enterprise Linux Amazon EC2 執行個體](tutorials-wordpress-launch-instance.md)
+ [步驟 2：設定要部署到 Amazon Linux 或 Red Hat Enterprise Linux Amazon EC2 執行個體的來源內容](tutorials-wordpress-configure-content.md)
+ [步驟 3：將 WordPress 應用程式上傳至 Amazon S3](tutorials-wordpress-upload-application.md)
+ [步驟 4：部署您的 WordPress 應用程式](tutorials-wordpress-deploy-application.md)
+ [步驟 5：更新並重新部署 WordPress 應用程式](tutorials-wordpress-update-and-redeploy-application.md)
+ [步驟 6：清除 WordPress 應用程式和相關資源](tutorials-wordpress-clean-up.md)

# 步驟 1：啟動和設定 Amazon Linux 或 Red Hat Enterprise Linux Amazon EC2 執行個體
<a name="tutorials-wordpress-launch-instance"></a>

若要使用 CodeDeploy 部署 WordPress 應用程式，您需要執行 Amazon Linux 或 Red Hat Enterprise Linux (RHEL) 的 Amazon EC2 執行個體。Amazon EC2 執行個體需要新的傳入安全規則，以允許 HTTP 連線。需要此規則是為了成功部署後，可以在瀏覽器中檢視 WordPress 頁面。

請遵循中的說明進行[為 CodeDeploy 建立 Amazon EC2 執行個體](instances-ec2-create.md) 當您取得有關將 Amazon EC2 執行個體標籤指派給執行個體的指示部分時，請務必指定 的標籤索引鍵**Name**和 的標籤值**CodeDeployDemo**。(如果您指定不同的標籤鍵或標籤值，[步驟 4：部署您的 WordPress 應用程式](tutorials-wordpress-deploy-application.md)中的說明可能會產生非預期的結果)。

在您依照指示啟動 Amazon EC2 執行個體後，請返回此頁面並繼續下一節。請勿繼續執行 [使用 CodeDeploy 建立應用程式](applications-create.md)做為下一個步驟。

## 連線至您的 Amazon Linux 或 RHEL Amazon EC2 執行個體
<a name="tutorials-wordpress-launch-instance-connect"></a>

啟動新的 Amazon EC2 執行個體後，請依照這些指示來練習與其連線。

1. 使用 **ssh**命令 （或支援 SSH 的終端機模擬器，例如 [PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)) 來連線至您的 Amazon Linux 或 RHEL Amazon EC2 執行個體。您將需要執行個體的公有 DNS 地址，以及啟動 Amazon EC2 執行個體時所使用的金鑰對私有金鑰。如需詳細資訊，請參閱[連線至您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-connect-to-instance-linux.html)。

   例如，如果公有 DNS 地址為 **ec2-01-234-567-890.compute-1.amazonaws.com**，且 SSH 存取的 Amazon EC2 執行個體金鑰對名為 **codedeploydemo.pem**，您會輸入：

   ```
   ssh -i /path/to/codedeploydemo.pem ec2-user@ec2-01-234-567-890.compute-1.amazonaws.com
   ```

   `/path/to/codedeploydemo.pem` 將 取代為 `.pem` 檔案的路徑，並將範例 DNS 地址取代為 Amazon Linux 或 RHEL Amazon EC2 執行個體的地址。
**注意**  
如果您收到的錯誤是有關您的金鑰檔案許可過於開放，您需要限制其許可，使其只能存取目前使用者 (您)。例如，在 Linux、macOS 或 Unix 上使用 **chmod**命令，請輸入：

   ```
   chmod 400 /path/to/codedeploydemo.pem
   ```

1. 登入後，您會看到 Amazon EC2 執行個體的 AMI 橫幅。對於 Amazon Linux，看起來應該如下所示：

   ```
          __|  __|_  )
          _|  (     /   Amazon Linux AMI
         ___|\___|___|
   ```

1. 您現在可以登出執行中的 Amazon EC2 執行個體。
**警告**  
請勿停止或終止 Amazon EC2 執行個體。否則，CodeDeploy 將無法部署到其中。

## 新增允許 HTTP 流量至 Amazon Linux 或 RHEL Amazon EC2 執行個體的傳入規則
<a name="tutorials-wordpress-launch-instance-add-inbound-rule"></a>

下一步確認您的 Amazon EC2 執行個體具有開放的 HTTP 連接埠，因此您可以在瀏覽器中查看已部署的 WordPress 應用程式首頁。

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

1. 選擇**執行個體**，然後選擇您的執行個體。

1. 在**描述**索引標籤**的安全群組**下，選擇**檢視傳入規則**。

   您應該會在安全群組中看到規則清單，如下所示：

   ```
   Security Groups associated with i-1234567890abcdef0
    Ports     Protocol     Source     launch-wizard-N
    22        tcp          0.0.0.0/0          ✔
   ```

1.  在**安全群組**下，選擇 Amazon EC2 執行個體的安全群組。其可能被命名為 **launch-wizard-*N***。名稱中的 ***N*** 是一個您的執行個體建立時指派到安全群組的數字。

    選擇 **Inbound (傳入)** 標籤。如果執行個體的安全群組設定正確，您應該會看到具有下列值的規則：
   + **類型**：HTTP
   + **Protocol (通訊協定)**：TCP
   + **Port Range (連接埠範圍)**：80
   + **來源**：0.0.0.0/0

1.  如果您沒有看到具有這些值的規則，請使用將[規則新增至安全群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule)中的程序，將規則新增至新的安全規則。

# 步驟 2：設定要部署到 Amazon Linux 或 Red Hat Enterprise Linux Amazon EC2 執行個體的來源內容
<a name="tutorials-wordpress-configure-content"></a>

現在，您可以設定應用程式的來源內容，以將某個項目部署至執行個體。

**Topics**
+ [取得原始程式碼](#tutorials-wordpress-configure-content-download-code)
+ [建立指令碼以執行您的應用程式](#tutorials-wordpress-configure-content-create-scripts)
+ [新增應用程式規格檔案](#tutorials-wordpress-configure-content-add-appspec-file)

## 取得原始程式碼
<a name="tutorials-wordpress-configure-content-download-code"></a>

在本教學課程中，您將 WordPress 內容發佈平台從開發機器部署到目標 Amazon EC2 執行個體。若要取得 WordPress 來源碼，您可以使用內建命令列呼叫。或者，如果您已於開發電腦上安裝 Git，可以改為使用該項目。

在下列步驟中，假設您已將 WordPress 來源碼的複本下載至開發電腦上的 `/tmp` 目錄。(您可以選擇想要的任何目錄，但請記得將這些步驟中指定的所有 `/tmp` 都替代為您的位置)。

選擇下列兩個選項之一，將 WordPress 來源檔案複製至開發電腦。第一個選項使用內建命令列呼叫。第二個選項使用 Git。

**Topics**
+ [取得 WordPress 來源碼的複本 (內建命令列呼叫)](#tutorials-wordpress-configure-content-download-code-command-line)
+ [取得 WordPress 來源碼的複本 (Git)](#tutorials-wordpress-configure-content-download-code-git)

### 取得 WordPress 來源碼的複本 (內建命令列呼叫)
<a name="tutorials-wordpress-configure-content-download-code-command-line"></a>

1. 呼叫 **wget** 命令，將 WordPress 來源碼複本以 .zip 檔案形式下載至目前目錄：

   ```
   wget https://github.com/WordPress/WordPress/archive/master.zip
   ```

1. 呼叫 **unzip**、**mkdir**、**cp** 和 **rm** 命令，以：
   + 將 `master` .zip 檔案解壓縮至 `/tmp/WordPress_Temp` 目錄 (資料夾)。
   + 將其解壓縮的內容複製至 `/tmp/WordPress` 目標資料夾。
   + 刪除暫時 `/tmp/WordPress_Temp` 資料夾和 `master` 檔案。

   一次執行一個命令：

   ```
   unzip master -d /tmp/WordPress_Temp
   ```

   ```
   mkdir -p /tmp/WordPress
   ```

   ```
   cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress
   ```

   ```
   rm -rf /tmp/WordPress_Temp
   ```

   ```
   rm -f master
   ```

   這可讓您在 `/tmp/WordPress` 資料夾中具有一組的 WordPress 來源碼檔案。

### 取得 WordPress 來源碼的複本 (Git)
<a name="tutorials-wordpress-configure-content-download-code-git"></a>

1. 在開發電腦上，下載並安裝 [Git](http://git-scm.com)。

1. 在 `/tmp/WordPress` 資料夾中，呼叫 **git init** 命令。

1. 呼叫 **git clone** 命令以複製公有 WordPress 儲存庫，讓您專屬的公有 WordPress 儲存庫複本放在 `/tmp/WordPress` 目標資料夾：

   ```
   git clone https://github.com/WordPress/WordPress.git /tmp/WordPress
   ```

   這可讓您在 `/tmp/WordPress` 資料夾中具有一組的 WordPress 來源碼檔案。

## 建立指令碼以執行您的應用程式
<a name="tutorials-wordpress-configure-content-create-scripts"></a>

接著，在 目錄中建立資料夾和指令碼。CodeDeploy 使用這些指令碼在目標 Amazon EC2 執行個體上設定和部署您的應用程式修訂版。您可以使用任何文字編輯器來建立指令碼。

1. 在您的 WordPress 來源碼複本中，建立指令碼目錄：

   ```
   mkdir -p /tmp/WordPress/scripts
   ```

1. 在 `/tmp/WordPress/scripts` 中，建立 `install_dependencies.sh` 檔案。在檔案中新增下列各行。此 `install_dependencies.sh` 指令碼會安裝 Apache、MySQL 和 PHP。它還會新增 PHP 的 MySQL 支援。

   ```
   #!/bin/bash
   sudo amazon-linux-extras install php7.4
   sudo yum install -y httpd mariadb-server php
   ```

1. 在 `/tmp/WordPress/scripts` 中，建立 `start_server.sh` 檔案。在檔案中新增下列各行。此 `start_server.sh` 指令碼會啟動 Apache 和 MySQL。

   ```
   #!/bin/bash
   systemctl start mariadb.service
   systemctl start httpd.service
   systemctl start php-fpm.service
   ```

1. 在 `/tmp/WordPress/scripts` 中，建立 `stop_server.sh` 檔案。在檔案中新增下列各行。此 `stop_server.sh` 指令碼會停止 Apache 和 MySQL。

   ```
   #!/bin/bash
   isExistApp="pgrep httpd"
   if [[ -n $isExistApp ]]; then
   systemctl stop httpd.service
   fi
   isExistApp=pgrep mysqld
   if [[ -n $isExistApp ]]; then
   systemctl stop mariadb.service
   fi
   isExistApp=pgrep php-fpm
   if [[ -n $isExistApp ]]; then
   systemctl stop php-fpm.service
   
   fi
   ```

1. 在 `/tmp/WordPress/scripts` 中，建立 `create_test_db.sh` 檔案。在檔案中新增下列各行。此 `create_test_db.sh` 指令碼使用 MySQL 建立 **test** 資料庫，以供 WordPress 使用。

   ```
   #!/bin/bash
   mysql -uroot <<CREATE_TEST_DB
   CREATE DATABASE IF NOT EXISTS test;
   CREATE_TEST_DB
   ```

1. 最後，在 `/tmp/WordPress/scripts` 中，建立 `change_permissions.sh` 指令碼。這用來在 Apache 中變更資料夾許可。
**重要**  
 此指令碼已更新 `/tmp/WordPress` 資料夾的許可，讓任何人都可以寫入其中。這是必要的，因此 WordPress 可以在[步驟 5：更新並重新部署 WordPress 應用程式](tutorials-wordpress-update-and-redeploy-application.md)期間寫入其資料庫 。在設定好 WordPress 應用程式之後，執行以下命令來更新許可為更安全的設定：  

   ```
   chmod -R 755 /var/www/html/WordPress
   ```

   ```
   #!/bin/bash
   chmod -R 777 /var/www/html/WordPress
   ```

1. 給予所有指令碼可執行的許可。在命令列輸入：

   ```
   chmod +x /tmp/WordPress/scripts/*
   ```

## 新增應用程式規格檔案
<a name="tutorials-wordpress-configure-content-add-appspec-file"></a>

接著，新增應用程式規格檔案 (AppSpec 檔案），這是 CodeDeploy 使用的 [YAML](http://www.yaml.org) 格式檔案，用於：
+ 將應用程式修訂中的來源檔案映射至目標 Amazon EC2 執行個體上的目的地。
+ 指定已部署檔案的自訂許可。
+ 指定要在部署期間於目標 Amazon EC2 執行個體上執行的指令碼。

AppSpec 檔案必須命名為 `appspec.yml`。它必須放置在應用程式原始碼的根目錄中。在此教學課程中，根目錄是 `/tmp/WordPress`。

使用文字編輯器，建立名為 `appspec.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/change_permissions.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
    - location: scripts/create_test_db.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
```

CodeDeploy 使用此 AppSpec 檔案，將開發機器上 `/tmp/WordPress` 資料夾中的所有檔案複製到目標 Amazon EC2 執行個體上的 `/var/www/html/WordPress` 資料夾。在部署期間，CodeDeploy 會在部署生命週期內的指定事件`root`執行指定指令碼，如目標 Amazon EC2 執行個體的 `/var/www/html/WordPress/scripts` 資料夾中的 **BeforeInstall**和 **AfterInstall**。如果任何這些指令碼需要超過 300 秒 (5 分鐘） 才能執行，CodeDeploy 會停止部署並將部署標記為失敗。

如需這些設定的詳細資訊，請參閱[CodeDeploy AppSpec 檔案參考](reference-appspec-file.md)。

**重要**  
此檔案中每個項目之間的空格位置和數目十分重要。如果間距不正確，CodeDeploy 會引發可能難以偵錯的錯誤。如需詳細資訊，請參閱[AppSpec 檔案間距](reference-appspec-file.md#reference-appspec-file-spacing)。

# 步驟 3：將 WordPress 應用程式上傳至 Amazon S3
<a name="tutorials-wordpress-upload-application"></a>

現在，您將準備來源內容並將其上傳至 CodeDeploy 可以從中部署該內容的位置。下列指示說明如何佈建 Amazon S3 儲存貯體、準備儲存貯體的應用程式修訂版檔案、綁定修訂版的檔案，然後將修訂版推送至儲存貯體。

**注意**  
雖然本教學課程未涵蓋，但您可以使用 CodeDeploy 將應用程式從 GitHub 儲存庫部署到執行個體。如需詳細資訊，請參閱[將 CodeDeploy 與 GitHub 整合](integrations-partners-github.md)。

**Topics**
+ [佈建 Amazon S3 儲存貯體](#tutorials-wordpress-upload-application-create-s3-bucket)
+ [準備儲存貯體的應用程式檔案](#tutorials-wordpress-upload-application-prepare-application-files)
+ [將應用程式的檔案綁定到單一封存檔案中，並推送封存檔案](#tutorials-wordpress-upload-application-bundle-and-push-archive)

## 佈建 Amazon S3 儲存貯體
<a name="tutorials-wordpress-upload-application-create-s3-bucket"></a>

在 Amazon S3 中建立儲存容器或*儲存貯*體，或使用現有的儲存貯體。請確定您可以將修訂版上傳至儲存貯體，而且部署中使用的 Amazon EC2 執行個體可以從儲存貯體下載修訂版。

您可以使用 AWS CLI、Amazon S3 主控台或 Amazon S3 APIs 來建立 Amazon S3 儲存貯體。建立儲存貯體之後，請務必授予儲存貯體和帳戶的 AWS 存取許可。

**注意**  
所有 AWS 帳戶的 Amazon S3 儲存貯體名稱必須是唯一的。如果您無法使用 **amzn-s3-demo-bucket**，請嘗試不同的儲存貯體名稱 (例如後接破折號和您的縮寫或其他唯一識別符的 **amzn-s3-demo-bucket**)。然後，請務必將在本教學中看到的所有 **amzn-s3-demo-bucket** 都替代為您的儲存貯體名稱。  
Amazon S3 儲存貯體必須在啟動目標 Amazon EC2 執行個體的相同 AWS 區域中建立。例如，如果您在美國東部 （維吉尼亞北部） 區域建立儲存貯體，則必須在美國東部 （維吉尼亞北部） 區域啟動目標 Amazon EC2 執行個體。

**Topics**
+ [建立 Amazon S3 儲存貯體 (CLI)](#tutorials-wordpress-upload-application-create-s3-bucket-cli)
+ [建立 Amazon S3 儲存貯體 （主控台）](#tutorials-wordpress-upload-application-create-s3-bucket-console)
+ [將許可授予 Amazon S3 儲存貯體和 AWS 帳戶](#tutorials-wordpress-upload-application-create-s3-bucket-grant-permissions)

### 建立 Amazon S3 儲存貯體 (CLI)
<a name="tutorials-wordpress-upload-application-create-s3-bucket-cli"></a>

呼叫 **mb**命令來建立名為 的 Amazon S3 儲存貯體**amzn-s3-demo-bucket**：

```
aws s3 mb s3://amzn-s3-demo-bucket --region region
```

### 建立 Amazon S3 儲存貯體 （主控台）
<a name="tutorials-wordpress-upload-application-create-s3-bucket-console"></a>

1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

1. 在 Amazon S3 主控台中，選擇**建立儲存貯**體。

1. 在 **Bucket name (儲存貯體名稱)** 方塊中，輸入儲存貯體的名稱。

1. 在 **Region (區域)** 清單中，選擇目標區域，然後選擇 **Create (建立)**。

### 將許可授予 Amazon S3 儲存貯體和 AWS 帳戶
<a name="tutorials-wordpress-upload-application-create-s3-bucket-grant-permissions"></a>

您必須具有上傳到 Amazon S3 儲存貯體的許可。您可以透過 Amazon S3 儲存貯體政策指定這些許可。例如，在下列 Amazon S3 儲存貯體政策中，使用萬用字元 (\$1) `111122223333` 可讓 AWS 帳戶將檔案上傳至名為 的 Amazon S3 儲存貯體中的任何目錄`amzn-s3-demo-bucket`：

```
{
    "Statement": [
        {
            "Action": [
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "111122223333"
                ]
            }
        }
    ]
}
```

若要檢視 AWS 您的帳戶 ID，請參閱[尋找 AWS 您的帳戶 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html#FindingYourAWSId)。

現在是驗證 Amazon S3 儲存貯體是否允許從每個參與的 Amazon EC2 執行個體下載請求的好時機。您可以透過 Amazon S3 儲存貯體政策指定此項目。例如，在下列 Amazon S3 儲存貯體政策中，使用萬用字元 (\$1) 允許任何具有連接 IAM 執行個體描述檔的 Amazon EC2 執行個體`arn:aws:iam::444455556666:role/CodeDeployDemo`，其中包含 ARN，從名為 的 Amazon S3 儲存貯體中的任何目錄下載檔案`amzn-s3-demo-bucket`：

```
{
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::444455556666:role/CodeDeployDemo"
                ]
            }
        }
    ]
}
```

 如需有關如何產生和連接 Amazon S3 儲存貯體政策的資訊，請參閱[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。

如需如何建立和連接 IAM 政策的資訊，請參閱[使用政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html#AddingPermissions_Console)。

## 準備儲存貯體的應用程式檔案
<a name="tutorials-wordpress-upload-application-prepare-application-files"></a>

請確定 WordPress 應用程式檔案、AppSpec 檔案和指令碼在開發機器上組織如下：

```
/tmp/
  |--WordPress/
      |-- appspec.yml  
      |-- scripts/
      |    |-- change_permissions.sh
      |    |-- create_test_db.sh
      |    |-- install_dependencies.sh
      |    |-- start_server.sh
      |    |-- stop_server.sh
      |-- wp-admin/
      |    |-- (various files...)
      |-- wp-content/
      |    |-- (various files...)
      |-- wp-includes/
      |    |-- (various files...)
      |-- index.php
      |-- license.txt
      |-- readme.html
      |-- (various files ending with .php...)
```

## 將應用程式的檔案綁定到單一封存檔案中，並推送封存檔案
<a name="tutorials-wordpress-upload-application-bundle-and-push-archive"></a>

將 WordPress 應用程式檔案和 AppSpec 檔案綁定到封存檔案 （稱為應用程式*修訂*)。

**注意**  
可能會向您收取下列作業的費用：在儲存貯體中存放物件，以及將應用程式修訂傳入和傳出儲存貯體。如需詳細資訊，請參閱 [Simple Storage Service (Amazon S3) 定價](https://aws.amazon.com/s3/pricing/)。

1. 在開發電腦上，切換至檔案存放所在的資料夾：

   ```
   cd /tmp/WordPress
   ```
**注意**  
如果您未切換至此資料夾，將會在目前的資料夾開始檔案綁定。例如，如果您的目前資料夾是 `/tmp`，而不是 `/tmp/WordPress`，則會開始綁定 `tmp` 資料夾中的檔案和子資料夾，而此資料夾可能不只包含 `WordPress` 子資料夾。

1. 呼叫 **create-application** 命令，向名為 **WordPress\$1App** 的新應用程式註冊：

   ```
   aws deploy create-application --application-name WordPress_App
   ```

1. 呼叫 CodeDeploy [推送](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html)命令，將檔案綁定在一起、上傳修訂至 Amazon S3，以及向 CodeDeploy 註冊有關上傳修訂的資訊，全部都在一個動作中。

   ```
   aws deploy push \
     --application-name WordPress_App \
     --s3-location s3://amzn-s3-demo-bucket/WordPressApp.zip \
     --ignore-hidden-files
   ```

   此命令會將目前目錄中的檔案 （不含任何隱藏檔案） 封裝至名為 的單一封存檔案**WordPressApp.zip**、上傳修訂至 儲存**amzn-s3-demo-bucket**貯體，以及向 CodeDeploy 註冊有關上傳修訂的資訊。

# 步驟 4：部署您的 WordPress 應用程式
<a name="tutorials-wordpress-deploy-application"></a>

現在您已部署上傳到 Amazon S3 的範例 WordPress 應用程式修訂版。您可以使用 AWS CLI 或 CodeDeploy 主控台來部署修訂並監控部署進度。成功部署應用程式修訂版之後，您要檢查結果。

**Topics**
+ [使用 CodeDeploy 部署您的應用程式修訂版](#tutorials-wordpress-deploy-application-create-deployment)
+ [監控您的部署並進行疑難排解](#tutorials-wordpress-deploy-application-monitor)
+ [驗證您的部署](#tutorials-wordpress-deploy-application-verify-deployment)

## 使用 CodeDeploy 部署您的應用程式修訂版
<a name="tutorials-wordpress-deploy-application-create-deployment"></a>

使用 AWS CLI 或 主控台部署您的應用程式修訂版。

**Topics**
+ [部署應用程式修訂 (CLI)](#tutorials-wordpress-deploy-application-create-deployment-cli)
+ [部署應用程式修訂 (主控台)](#tutorials-wordpress-deploy-application-create-deployment-console)

### 部署應用程式修訂 (CLI)
<a name="tutorials-wordpress-deploy-application-create-deployment-cli"></a>

1. 部署需要部署群組。不過，在您建立部署群組之前，需要服務角色 ARN。服務角色是 IAM 角色，提供服務代表您採取行動的許可。在此情況下，服務角色會授予 CodeDeploy 存取 Amazon EC2 執行個體的許可，以展開 （讀取） 其 Amazon EC2 執行個體標籤。

   您應該已經遵循[建立服務角色 (CLI)](getting-started-create-service-role.md#getting-started-create-service-role-cli) 中的說明，來建立服務角色。若要取得服務角色的 ARN，請參閱[取得服務角色 ARN (CLI)](getting-started-create-service-role.md#getting-started-get-service-role-cli)。

1. 現在您已擁有服務角色 ARN，請呼叫 **create-deployment-group**命令，使用名為 的 Amazon EC2 標籤**CodeDeployDemo**和名為 的部署組態**WordPress\$1DepGroup**，建立名為 的部署群組**WordPress\$1App**，與名為 的應用程式相關聯**CodeDeployDefault.OneAtATime**：

   ```
   aws deploy create-deployment-group \
     --application-name WordPress_App \
     --deployment-group-name WordPress_DepGroup \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --ec2-tag-filters Key=Name,Value=CodeDeployDemo,Type=KEY_AND_VALUE \
     --service-role-arn serviceRoleARN
   ```

   
**注意**  
[create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html) 命令支援建立觸發，導致將部署和執行個體中指定事件的相關 Amazon SNS 通知傳送給主題訂閱者。此命令也支援自動轉返部署和設定警示的選項，以在符合 Amazon CloudWatch 警示中的監控閾值時停止部署。本教學課程不包含這些動作的命令。

1. 建立部署之前，部署群組中的執行個體必須安裝 CodeDeploy 代理程式。您可以使用 AWS Systems Manager 與下列命令，從命令列安裝代理程式：

   ```
   aws ssm create-association \
     --name AWS-ConfigureAWSPackage \
     --targets Key=tag:Name,Values=CodeDeployDemo \
     --parameters action=Install,name=AWSCodeDeployAgent \
     --schedule-expression "cron(0 2 ? * SUN *)"
   ```

   此命令會在 Systems Manager State Manager 中建立關聯，以安裝 CodeDeploy 代理程式，然後嘗試在每週日上午 2：00 進行更新。如需 CodeDeploy 代理程式的詳細資訊，請參閱[使用 CodeDeploy 代理程式](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html)。如需 Systems Manager 的詳細資訊，請參閱[什麼是 AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) 。

1. 現在，請在名為 **amzn-s3-demo-bucket** 的儲存貯體中使用名為 **WordPressApp.zip** 的應用程式修訂，呼叫 **create-deployment** 命令來建立與名為 **WordPress\$1App** 之應用程式、名為 **CodeDeployDefault.OneAtATime** 之部署組態和名為 **WordPress\$1DepGroup** 之部署群組建立關聯的部署：

   ```
   aws deploy create-deployment \
     --application-name WordPress_App \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name WordPress_DepGroup \
     --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=WordPressApp.zip
   ```

### 部署應用程式修訂 (主控台)
<a name="tutorials-wordpress-deploy-application-create-deployment-console"></a>

1. 在使用 CodeDeploy 主控台部署應用程式修訂版之前，您需要服務角色 ARN。服務角色是 IAM 角色，提供服務代表您採取行動的許可。在此情況下，服務角色會授予 CodeDeploy 存取 Amazon EC2 執行個體的許可，以展開 （讀取） 其 Amazon EC2 執行個體標籤。

   您應該已經遵循[建立服務角色 （主控台）](getting-started-create-service-role.md#getting-started-create-service-role-console) 中的說明，來建立服務角色。若要取得服務角色的 ARN，請參閱[取得服務角色 ARN （主控台）](getting-started-create-service-role.md#getting-started-get-service-role-console)。

1. 現在您已擁有 ARN，請使用 CodeDeploy 主控台來部署應用程式修訂版：

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

1. 在導覽窗格中，展開**部署**，然後選擇**應用程式**。

1. 在應用程式清單中，選擇 **WordPress\$1App**。

1. 在 **Deployment groups (部署群組)** 標籤中，選擇 **Create deployment group (建立部署群組)**。

1. 在 **Deployment group name (部署群組名稱)** 中，輸入 **WordPress\$1DepGroup**。

1. 在 **Deployment type (部署類型)** 下，選擇 **In-place deployment (就地部署)**。

1. 在**環境組態**中，選取 **Amazon EC2 執行個體**。

1. 在**具有 的客服人員組態 AWS Systems Manager**中，保留預設值。

1. 在 **Key (金鑰)** 中，輸入 **Name**。

1. 在 **Value (值)** 中輸入 **CodeDeployDemo**。
**注意**  
輸入 後**CodeDeployDemo**，**1** 應該會出現在**相符執行個體**下，以確認 CodeDeploy 找到一個相符的 Amazon EC2 執行個體。

1. 在**部署組態**中，選擇 **CodeDeployDefault.OneAtATime**。

1. 在 **Service role ARN (服務角色 ARN)** 中，選擇服務角色 ARN，然後選擇 **Create deployment group (建立部署群組)**。

1. 選擇 **Create deployment (建立部署)**。

1. 在 **Deployment group (部署群組)** 中選擇 **WordPress\$1DepGroup**。

1. 在**儲存庫類型**旁，選擇**我的應用程式存放在 Amazon S3 中**。在**修訂位置**中，輸入您先前上傳至 Amazon S3 的範例 WordPress 應用程式修訂的位置。取得位置：

   1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

   1. 在儲存貯體清單中，選擇 **amzn-s3-demo-bucket** （或您上傳應用程式修訂版的儲存貯體名稱）。

   1. 在物件清單中，選擇 **WordPressApp.zip**。

   1. 在 **Overview (概觀)** 標籤上，將 **Link (連結)** 欄位的值複製至剪貼簿。

      這看起來類似下述：

      **https://s3.amazonaws.com/amzn-s3-demo-bucket/WordPressApp.zip**

   1. 返回 CodeDeploy 主控台，並在**修訂位置**貼上**連結**欄位值。

1. 如果說明無法偵測到檔案類型的訊息出現在 **File type (檔案類型)** 清單中，請選擇 **.zip**。

1. (選用) 在 **Deployment description (部署說明)** 方塊中，輸入註解。

1. 展開**部署群組覆寫**，然後從**部署組態**中選擇 **CodeDeployDefault.OneAtATime**。

1. 選擇 **Start deployment (啟動部署)**。新建立部署的相關資訊會顯示在 **Deployments (部署)** 頁面上。

## 監控您的部署並進行疑難排解
<a name="tutorials-wordpress-deploy-application-monitor"></a>

使用 AWS CLI 或 主控台來監控和疑難排解您的部署。

**Topics**
+ [監控部署並進行疑難排解 (CLI)](#tutorials-wordpress-deploy-application-monitor-cli)
+ [監控和故障診斷部署 (主控台)](#tutorials-wordpress-deploy-application-monitor-console)

### 監控部署並進行疑難排解 (CLI)
<a name="tutorials-wordpress-deploy-application-monitor-cli"></a>

1. 針對名為 **WordPress\$1App** 的應用程式和名為 **WordPress\$1DepGroup** 的部署群組呼叫 **list-deployments** 命令，來取得部署 ID：

   ```
   aws deploy list-deployments --application-name WordPress_App --deployment-group-name WordPress_DepGroup --query 'deployments' --output text
   ```

1. 使用部署 ID，呼叫 **get-deployment** 命令：

   ```
   aws deploy get-deployment --deployment-id deploymentID --query 'deploymentInfo.status' --output text
   ```

1. 此命令傳回部署的整體狀態。如果成功，值為 `Succeeded`。

   如果整體狀態為 `Failed`，您可以呼叫 [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) 和 [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) 等命令進行故障診斷。如需其他故障診斷選項，請參閱[分析日誌檔案以調查執行個體的部署失敗](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures)。

### 監控和故障診斷部署 (主控台)
<a name="tutorials-wordpress-deploy-application-monitor-console"></a>

在 CodeDeploy 主控台的**部署**頁面上，您可以在狀態欄中監控部署**的狀態**。

若要取得部署的詳細資訊，特別是在 **Status (狀態)** 欄位中，有任何數值不是 **Succeeded (成功)** 的情況下，則可執行以下動作：

1. 在 **Deployments (部署)** 資料表中，選擇部署的名稱。部署失敗後，會顯示失敗原因的訊息。

1. 在 **Instance activity (執行個體活動)** 中，會顯示更多有關部署的資訊。部署失敗後，您可能可以判斷部署失敗的 Amazon EC2 執行個體和步驟。

1. 您可以使用[使用 CodeDeploy 檢視執行個體詳細資訊](instances-view-details.md)中所述的這類技術，藉此執行其他疑難排解。您也可以分析 Amazon EC2 執行個體上的部署日誌檔案。如需詳細資訊，請參閱[分析日誌檔案以調查執行個體的部署失敗](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures)。

## 驗證您的部署
<a name="tutorials-wordpress-deploy-application-verify-deployment"></a>

在您的部署成功之後，請驗證 WordPress 安裝是否運作中。使用 Amazon EC2 執行個體的公有 DNS 地址，後面接著 `/WordPress`，在 Web 瀏覽器中檢視您的網站。（若要取得公有 DNS 值，請在 Amazon EC2 主控台中選擇 Amazon EC2 執行個體，然後在**描述**索引標籤上尋找**公有 DNS** 的值。)

例如，如果 Amazon EC2 執行個體的公有 DNS 地址為 **ec2-01-234-567-890.compute-1.amazonaws.com**，您可以使用下列 URL：

```
http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress
```

當您在瀏覽器中檢視網站時，您應該會看到 WordPress 歡迎頁面，類似如下所示：

![\[WordPress 歡迎頁面\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/WordPress-Welcome-Page-013118.png)


 如果您的 Amazon EC2 執行個體沒有將 HTTP 傳入規則新增至其安全群組，則不會顯示 WordPress 歡迎頁面。如果您看到訊息指出遠端伺服器未回應，請確定 Amazon EC2 執行個體的安全群組具有傳入規則。如需詳細資訊，請參閱[新增允許 HTTP 流量至 Amazon Linux 或 RHEL Amazon EC2 執行個體的傳入規則新增允許 HTTP 流量至 Windows Server Amazon EC2 執行個體的傳入規則](tutorials-wordpress-launch-instance.md#tutorials-wordpress-launch-instance-add-inbound-rule)。

# 步驟 5：更新並重新部署 WordPress 應用程式
<a name="tutorials-wordpress-update-and-redeploy-application"></a>

現在您已成功部署應用程式修訂版，請在開發機器上更新 WordPress 程式碼，然後使用 CodeDeploy 重新部署網站。之後，您應該會在 Amazon EC2 執行個體上看到程式碼變更。

**Topics**
+ [設定 WordPress 網站](#tutorials-wordpress-update-and-redeploy-application-configure-and-install)
+ [修改網站](#tutorials-wordpress-update-and-redeploy-application-modify-code)
+ [重新部署網站](#tutorials-wordpress-update-and-redeploy-application-deploy-updates)

## 設定 WordPress 網站
<a name="tutorials-wordpress-update-and-redeploy-application-configure-and-install"></a>

若要查看程式碼變更的效果，請完成設定 WordPress 網站，以便您有一個功能完整的安裝。

1. 將網站的 URL 輸入 Web 瀏覽器中。URL 是 Amazon EC2 執行個體加上`/WordPress`延伸模組的公有 DNS 地址。對於此範例 WordPress 網站 （以及範例 Amazon EC2 執行個體公有 DNS 地址），URL 為 **http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress**。

1. 如果您尚未設定網站，則會顯示預設的 WordPress 歡迎頁面。選擇 **Let's go\$1 (開始吧！)**。

1. 若要使用預設的 MySQL 資料庫，請在資料庫組態頁面中輸入以下值：
   + **資料庫名稱**：**test**
   + **使用者名稱**：**root**
   + **密碼**：保留空白。
   + **資料庫主機**：**localhost**
   + **資料表字首**：**wp\$1**

   選擇 **Submit (提交)** 以設定資料庫。

1. 繼續進行網站設定。在 **Welcome (歡迎)** 頁面上，填入任意值，然後選擇 **Install WordPress (安裝 WordPress)**。當安裝完成後，您就可以登入您的儀表板。

**重要**  
 在部署 WordPress 應用程式期間，**change\$1permissions.sh** 指令碼已更新 `/tmp/WordPress` 資料夾的許可，以便任何人都可以寫入。現在是時候執行以下命令來限制許可，以便只有擁有者 (您) 可以寫入：  

```
chmod -R 755 /var/www/html/WordPress
```

## 修改網站
<a name="tutorials-wordpress-update-and-redeploy-application-modify-code"></a>

若要修改 WordPress 網站，請移至開發機器上的應用程式資料夾：

```
cd /tmp/WordPress
```

若要修改網站的一些顏色，請在 `wp-content/themes/twentyfifteen/style.css` 檔案中，使用文字編輯器或 **sed** 將 `#fff` 變更為 `#768331`。

在 Linux 或具有 GNU **sed** 的其他系統上，使用：

```
sed -i 's/#fff/#768331/g' wp-content/themes/twentyfifteen/style.css
```

在 macOS、Unix 或具有 BSD **sed** 的其他系統上，使用：

```
sed -i '' 's/#fff/#768331/g' wp-content/themes/twentyfifteen/style.css
```

## 重新部署網站
<a name="tutorials-wordpress-update-and-redeploy-application-deploy-updates"></a>

現在您已修改網站的程式碼，請使用 Amazon S3 和 CodeDeploy 重新部署網站。

將變更綁定並上傳至 Amazon S3，如中所述[將應用程式的檔案綁定到單一封存檔案中，並推送封存檔案](tutorials-wordpress-upload-application.md#tutorials-wordpress-upload-application-bundle-and-push-archive)。(當您遵循這些說明時，請記住您不需要建立應用程式)。如以前一樣將相同的金鑰給予新的修訂 (**WordPressApp.zip**)。將其上傳至您先前建立的相同 Amazon S3 儲存貯體 （例如 **amzn-s3-demo-bucket**)。

使用 AWS CLI、CodeDeploy 主控台或 CodeDeploy APIs重新部署網站。

**Topics**
+ [重新部署網站 (CLI)](#tutorials-wordpress-update-and-redeploy-application-deploy-updates-cli)
+ [重新部署網站 (主控台)](#tutorials-wordpress-update-and-redeploy-application-deploy-updates-console)

### 重新部署網站 (CLI)
<a name="tutorials-wordpress-update-and-redeploy-application-deploy-updates-cli"></a>

呼叫 **create-deployment** 命令來根據新上傳的修訂版建立部署。使用名為 **WordPress\$1App**的應用程式、名為 **CodeDeployDefault.OneAtATime** 的部署組態、名為 **WordPress\$1DepGroup**的部署群組、名為 **WordPressApp.zip** 的修訂版 (在名為 **amzn-s3-demo-bucket**的儲存貯體中)：

```
 aws deploy create-deployment \
  --application-name WordPress_App \
  --deployment-config-name CodeDeployDefault.OneAtATime \
  --deployment-group-name WordPress_DepGroup \  
  --s3-location bucket=amzn-s3-demo-bucket,bundleType=zip,key=WordPressApp.zip
```

您可以檢查部署的狀態，如[監控您的部署並進行疑難排解](tutorials-wordpress-deploy-application.md#tutorials-wordpress-deploy-application-monitor)中所述。

CodeDeploy 重新部署網站之後，請在 Web 瀏覽器中重新瀏覽網站，以確認顏色已變更。(您可能需要重新整理瀏覽器)。如果顏色已經變更，那麼恭喜！您已成功修改並重新部署該網站！

### 重新部署網站 (主控台)
<a name="tutorials-wordpress-update-and-redeploy-application-deploy-updates-console"></a>

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

1. 在導覽窗格中，展開**部署**，然後選擇**應用程式**。

1. 在應用程式清單中，選擇 **WordPress\$1App**。

1. 在 **Deployment groups (部署群組)** 標籤上，選擇 **WordPress\$1DepGroup**。

1. 選擇 **Create deployment (建立部署)**。

1. 請在 **Create deployment (建立部署)** 頁面上，執行以下操作：

   1. 在 **Deployment group (部署群組)** 中，選擇 **WordPress\$1DepGroup**。

   1. 在**儲存庫類型**區域中，選擇**我的應用程式存放在 Amazon S3 中**，然後將修訂的 Amazon S3 連結複製到**修訂位置**方塊中。尋找連結值：

      1. 在單獨的瀏覽器標籤中：

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

          瀏覽並開啟 **amzn-s3-demo-bucket**，然後選擇您的修訂版本 **WordPressApp.zip**。

      1.  如果在 Amazon S3 主控台中看不到**屬性**窗格，請選擇**屬性**按鈕。

      1.  在**屬性**窗格中，將**連結**欄位的值複製到 CodeDeploy 主控台中的**修訂位置**方塊。

   1. 如果出現無法偵測檔案類型的訊息，則請選擇 **.zip (.zip)**。

   1. 將 **Deployment description (部署說明)** 方塊留白。

   1. 展開**部署群組覆寫**，然後從**部署組態**中選擇 **CodeDeployDefault.OneAtATime**。

   1. 選擇 **Start deployment (啟動部署)**。新建立部署的相關資訊會顯示在 **Deployments (部署)** 頁面上。

   1. 您可以檢查部署的狀態，如[監控您的部署並進行疑難排解](tutorials-wordpress-deploy-application.md#tutorials-wordpress-deploy-application-monitor)中所述。

      CodeDeploy 重新部署網站之後，請在 Web 瀏覽器中重新瀏覽網站，以確認顏色已變更。(您可能需要重新整理瀏覽器)。如果顏色已經變更，那麼恭喜！您已成功修改並重新部署該網站！

# 步驟 6：清除 WordPress 應用程式和相關資源
<a name="tutorials-wordpress-clean-up"></a>

您現在已成功更新 WordPress 程式碼並且已重新部署網站。為了避免本教學中所建立的資源持續發生費用，您應該刪除：
+ 任何 CloudFormation 堆疊 （或終止任何 Amazon EC2 執行個體，如果您在 外部建立這些執行個體 CloudFormation)。
+ 任何 Amazon S3 儲存貯體。
+ CodeDeploy 中的`WordPress_App`應用程式。
+ CodeDeploy 代理程式 AWS Systems Manager 的狀態管理員關聯。

您可以使用 AWS CLI、 CloudFormation、Amazon S3、Amazon EC2 和 CodeDeploy 主控台或 AWS APIs來執行清除。

**Topics**
+ [清除資源 (CLI)](#tutorials-wordpress-clean-up-cli)
+ [清除資源 (主控台)](#tutorials-wordpress-clean-up-console)
+ [後續步驟？](#tutorials-wordpress-clean-up-whats-next)

## 清除資源 (CLI)
<a name="tutorials-wordpress-clean-up-cli"></a>

1. 如果您將我們的 CloudFormation 範本用於本教學課程，請針對名為 的堆疊呼叫 **delete-stack**命令**CodeDeployDemoStack**。這將終止所有隨附的 Amazon EC2 執行個體，並刪除堆疊建立的所有隨附 IAM 角色：

   ```
   aws cloudformation delete-stack --stack-name CodeDeployDemoStack
   ```

1. 若要刪除 Amazon S3 儲存貯體，請針對名為 的儲存貯體使用 **--recursive** 切換來呼叫 **rm**命令**amzn-s3-demo-bucket**。這會刪除儲存貯體以及儲存貯體中的所有物件：

   ```
   aws s3 rm s3://amzn-s3-demo-bucket --recursive --region region
   ```

1. 若要刪除 `WordPress_App` 應用程式，請呼叫 **delete-application** 命令。這也會刪除應用程式的所有相關聯部署群組記錄和部署記錄：

   ```
   aws deploy delete-application --application-name WordPress_App
   ```

1. 若要刪除 Systems Manager 狀態管理員關聯，請呼叫 **delete-association**命令。

   ```
   aws ssm delete-association --assocation-id association-id
   ```

   您可以呼叫 **describe-association**命令來取得 *association-id*。

   ```
   aws ssm describe-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo
   ```

如果您未在本教學課程中使用 CloudFormation 堆疊，請呼叫 **terminate-instances**命令來終止您手動建立的任何 Amazon EC2 執行個體。提供 Amazon EC2 執行個體的 ID 以終止：

```
aws ec2 terminate-instances --instance-ids instanceId
```

## 清除資源 (主控台)
<a name="tutorials-wordpress-clean-up-console"></a>

如果您將我們的 CloudFormation 範本用於本教學課程，請刪除相關聯的 CloudFormation 堆疊。

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

1. 在**篩選條件**方塊中，輸入您先前建立的 CloudFormation 堆疊名稱 （例如，**CodeDeployDemoStack**)。

1. 選取堆疊名稱旁的方塊。在 **Actions (動作)** 選單中，選擇 **Delete Stack (刪除堆疊)**。

   CloudFormation 會刪除堆疊、終止所有隨附的 Amazon EC2 執行個體，以及刪除所有隨附的 IAM 角色。

若要終止您在 CloudFormation 堆疊外部建立的 Amazon EC2 執行個體：

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

1. 在 **INSTANCES (執行個體)** 清單中，選擇 **Instances (執行個體)**。

1. 在搜尋方塊中，輸入您要終止的 Amazon EC2 執行個體名稱 （例如 **CodeDeployDemo**)，然後按 Enter 鍵。

1. 選擇 Amazon EC2 執行個體名稱。

1. 在 **Actions (動作)** 選單中，指向 **Instance State (執行個體狀態)**，然後選擇 **Terminate (終止)**。出現提示時，選擇 **Yes, Terminate (是，終止)**。

為每個執行個體重複這些步驟。

若要刪除 Amazon S3 儲存貯體：

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

1. 在儲存貯體清單中，瀏覽並選擇您先前建立的 Amazon S3 儲存貯體名稱 （例如 **amzn-s3-demo-bucket**)。

1. 您必須先刪除其內容，才能刪除儲存貯體。選擇儲存貯體中的所有檔案，例如 **WordPressApp.zip**。在**操作**功能表中，選擇**刪除**。出現提示要您確認刪除時，選擇 **OK (確定)**。

1. 儲存貯體清空之後，您即可刪除儲存貯體。在儲存貯體清單中，選擇儲存貯體的資料列 (但不是儲存貯體名稱)。選擇 **Delete bucket (刪除儲存貯體)**，然後在出現確認提示時，選擇 **OK (確定)**。

若要從 CodeDeploy 刪除`WordPress_App`應用程式：

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

1. 在導覽窗格中，展開**部署**，然後選擇**應用程式**。

1. 在應用程式清單中，選擇 **WordPress\$1App**。

1. 在 **Application details (應用程式詳細資訊)** 頁面上，選擇 **Delete application (刪除應用程式)**。

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

若要刪除 Systems Manager 狀態管理員關聯：

1. 在 https：//https://console.aws.amazon.com/systems-manager 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **State Manager (狀態管理員)**。

1. 選擇您建立的關聯，然後選擇 **Delete (刪除)**。

## 後續步驟？
<a name="tutorials-wordpress-clean-up-whats-next"></a>

如果您已到達這裡，恭喜您！您已成功完成 CodeDeploy 部署，然後更新網站的程式碼並重新部署。