

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 教程：部署 WordPress 到亚马逊 EC2 实例（亚马逊 Linux 或红帽企业 Linux 和 Linux、macOS 或 Unix）
<a name="tutorials-wordpress"></a>

在本教程中，您将基于 PHP 和 MySQL 的开源博客工具和内容管理系统部署 WordPress到运行亚马逊 Linux 或红帽企业 Linux (RHEL) 的单个 Amazon EC2 实例。

不是您要找的内容？
+ 要改为部署到运行 Windows Server 的 Amazon EC2 实例，请参阅[教程：使用 CodeDeploy 部署“Hello, World\$1” 带有 CodeDeploy （Windows 服务器）的应用程序](tutorials-windows.md)。
+ 要部署到本地实例而不是 Amazon EC2 实例，请参阅[教程：使用 CodeDeploy （Windows 服务器、Ubuntu 服务器或红帽企业 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 应用程序上传到亚马逊 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>

要使用部署 WordPress 应用程序 CodeDeploy，您需要一个运行亚马逊 Linux 或红帽企业 Linux (RHEL) 的 Amazon EC2 实例。Amazon EC2 实例需要允许 HTTP 连接的新入站安全规则。成功部署 WordPress 页面后，需要使用此规则才能在浏览器中查看该页面。

按照[为创建一个 Amazon EC2 实例 CodeDeploy](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 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/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*** 是创建实例时分配到您安全组的编号。

    选择**入站**选项卡。如果实例的安全组配置正确，则应看到一条具有以下值的规则：
   + **类型**：HTTP
   + **协议**：TCP
   + **端口范围**：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，可改用 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存储库，在`/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. 在 `install_dependencies.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此 `install_dependencies.sh` 脚本安装 Apache、MySQL 和 PHP。还会将 MySQL 支持添加到 PHP 中。

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

1. 在 `start_server.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此 `start_server.sh` 脚本启动 Apache 和 MySQL。

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

1. 在 `stop_server.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此 `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. 在 `create_test_db.sh` 中创建一个 `/tmp/WordPress/scripts` 文件。将以下行添加到该文件中。此`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 文件），即 [YAML](http://www.yaml.org) 格式的文件，用于： CodeDeploy 
+ 将应用程序修订中的源文件映射到其在目标 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`文件夹。在部署过程中，在部署生命周期`root`内的指定事件（例如**BeforeInstall**和）处 CodeDeploy 运行目标 Amazon EC2 实例上的`/var/www/html/WordPress/scripts`文件夹中的指定脚本**AfterInstall**。如果其中任何一个脚本的运行时间超过 300 秒（5 分钟），则 CodeDeploy 停止部署并将部署标记为失败。

有关这些设置的更多信息，请参阅 [CodeDeploy AppSpec 文件引用](reference-appspec-file.md)。

**重要**  
此文件中各项之间的空格的位置和数量很重要。如果间距不正确，则 CodeDeploy 会引发可能难以调试的错误。有关更多信息，请参阅 [AppSpec 文件间距](reference-appspec-file.md#reference-appspec-file-spacing)。

# 步骤 3：将您的 WordPress 应用程序上传到亚马逊 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、亚马逊 S3 控制台或 Amazon S APIs 3 创建亚马逊 S3 存储桶。创建存储桶后，请确保提供对存储桶和您的 AWS 账户的访问权限。

**注意**  
在 Amazon S3 中，所有 AWS 账户的存储桶名称必须是唯一的。如果您无法使用 **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** 命令以创建一个名为 **amzn-s3-demo-bucket** 的 Amazon S3 存储桶：

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

### 创建 Amazon S3 存储桶（控制台）
<a name="tutorials-wordpress-upload-application-create-s3-bucket-console"></a>

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/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) 允许 AWS 账户将文件上传`111122223333`到 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）允许任何附有包含 ARN `arn:aws:iam::444455556666:role/CodeDeployDemo` 的 IAM 实例配置文件的 Amazon EC2 实例，从名为 `amzn-s3-demo-bucket` 的 Amazon S3 存储桶中的任何目录下载文件：

```
{
    "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 policy 的信息，请参阅[使用策略](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 文件捆绑到存档文件（称为应用程序*修订版*）中。

**注意**  
将对象存储在存储桶中以及将应用程序修订传入和传出存储桶可能需支付费用。有关更多信息，请参阅 [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. 调用 p CodeDeploy [ush 命令将](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 角色，该角色授予某个服务代表您执行操作的权限。在这种情况下，服务角色授予访问您的 Amazon EC2 实例以扩展（读取）其 Amazon EC2 实例标签的 CodeDeploy 权限。

   您应该已经按照[创建服务角色（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** 命令，使用名为 **CodeDeployDemo** 的 Amazon EC2 标签和名为 **CodeDeployDefault.OneAtATime** 的部署配置，创建一个与名为 **WordPress\$1App** 的应用程序相关联的名为 **WordPress\$1DepGroup** 的部署组：

   ```
   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 状态管理器中创建关联，该关联将安装 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. 现在调用 **create-deployment** 命令，使用名为 **amzn-s3-demo-bucket** 的存储桶中名为 **WordPressApp.zip** 的应用程序修订，创建一个与名为 **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 角色，该角色授予某个服务代表您执行操作的权限。在这种情况下，服务角色授予访问您的 Amazon EC2 实例以扩展（读取）其 Amazon EC2 实例标签的 CodeDeploy 权限。

   您应该已经按照[创建服务角色（控制台）](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://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**应用程序**。

1. 在应用程序列表中，选择 **WordPress\$1App**。

1. 在**部署组**选项卡中，选择**创建部署组**。

1. 在 **Deployment group name（部署组名称）**中，输入 **WordPress\$1DepGroup**。

1. 在 **Deployment type** 下，选择 **In-place deployment**。

1. 在**环境配置**中，选择 **Amazon EC2 实例**。

1. 在使用的 **Agent 配置**中 AWS Systems Manager，保留默认值。

1. 在**键**中，输入 **Name**。

1. 在**值**中，输入 **CodeDeployDemo**。
**注意**  
键入后**CodeDeployDemo**，“**匹配实例**” 下方应会出现 “**1**”，以确认 CodeDeploy 找到了匹配的 Amazon EC2 实例。

1. 在**部署配置**中，选择**CodeDeployDefault。 OneAtATime**。

1. 在**服务角色 ARN** 中，选择服务角色 ARN，然后选择**创建部署组**。

1. 选择 **Create deployment（创建部署）**。

1. 在**部署组**中，选择 **WordPress\$1DepGroup**。

1. 在**存储库类型**旁，选择**我的应用程序存储在 Amazon S3** 中。在**版本位置**中，输入您之前上传到 Amazon S3 的示例 WordPress 应用程序修订版的位置。获取位置：

   1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

   1. 在存储桶列表中，选择 **amzn-s3-demo-bucket**（或您将应用程序修订上传到的存储桶的名称）。

   1. 在对象列表中，选择 **WordPressApp.zip。**

   1. 在**概述**选项卡中，将**链接**字段的值复制到您的剪贴板。

      其内容如下所示：

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

   1. 返回 CodeDeploy 控制台，然后在 “**修订位置**” 中粘贴 “**链接**” 字段值。

1. 如果**文件类型**列表中显示的消息告诉您无法检测文件类型，请选择 **.zip**。

1. （可选）在 **Deployment description** 框中键入注释。

1. **展开**部署组覆盖**，然后从**部署配置**中选择CodeDeployDefault。 OneAtATime**。

1. 选择**开始部署**。有关您新创建的部署的信息将显示在 **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. 在**部署**表中，选择部署名称。部署失败后，将显示描述失败原因的消息。

1. 在**实例活动**中，将显示有关部署的更多信息。部署失败之后，您可以确定在哪些 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_cn/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 实例的公有 DNS 地址加上 `/WordPress` 扩展。对于此示例 WordPress 网站（以及示例 Amazon EC2 实例公有 DNS 地址），网址为**http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress**。

1. 如果您尚未设置网站，则会显示 WordPress 默认的欢迎页面。选择**开始！**。

1. 要使用默认 MySQL 数据库，请在数据库配置页面上，键入以下值：
   + **数据库名称**：**test**
   + **用户名**：**root**
   + **Password**：留空。
   + **数据库主机**：**localhost**
   + **表前缀**：**wp\$1**

   选择 **Submit** 以设置数据库。

1. 继续站点设置。在 “**欢迎**” 页面上，填写所需的任何值，然后选择 “**安装**” 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** 的部署组以及名为 **amzn-s3-demo-bucket** 的存储桶中名为 **WordPressApp.zip** 的修订：

```
 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://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**应用程序**。

1. 在应用程序列表中，选择 **WordPress\$1App**。

1. 在**部署组**选项卡上，选择 **WordPress\$1DepGroup**。

1. 选择 **Create deployment（创建部署）**。

1. 在 **Create deployment** 页面上：

   1. 在**部署组**中，选择 **WordPress\$1DepGroup**。

   1. 在**存储库类型**区域中，选择**我的应用程序存储在 Amazon S3** 中，然后将修订的 Amazon S3 链接复制到**修订位置**框中。要查找链接值，请执行以下操作：

      1. 在单独的浏览器选项卡中：

         登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

          浏览到并打开 **amzn-s3-demo-bucket**，然后选择您的修订 **WordPressApp.zip**。

      1.  如果**属性**窗格在 Amazon S3 控制台中不可见，则选择**属性**按钮。

      1.  在 “**属性**” 窗格中，将 “**链接**” 字段的值复制到 CodeDeploy 控制台的 “**修订位置**” 框中。

   1. 如果显示消息说明无法检测文件类型，请选择 **.zip**。

   1. 将 **Deployment description** 框留空。

   1. **展开**部署组覆盖**，然后从**部署配置**中选择CodeDeployDefault。 OneAtATime**。

   1. 选择**开始部署**。有关您新创建的部署的信息将显示在 **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、、、Amazon S3、Amazon EC2 和 CodeDeploy 控制台，或者 AWS APIs 来执行清理。 CloudFormation

**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
   ```

   你可以*association-id*通过调用**describe-association**命令来获取。

   ```
   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://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 在 “**筛选器**” 框中，键入您之前创建的 CloudFormation 堆栈名称（例如，**CodeDeployDemoStack**）。

1. 选中堆栈名称旁边的框。在 **Actions** 菜单中，选择 **Delete Stack**。

   CloudFormation 删除堆栈，终止所有随附的 Amazon EC2 实例，并删除所有附带的 IAM 角色。

要终止您在 CloudFormation 堆栈之外创建的 Amazon EC2 实例，请执行以下操作：

1. 登录 AWS 管理控制台 并打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在 **INSTANCES** 列表中，选择 **Instances**。

1. 在搜索框中，键入要终止的 Amazon EC2 实例的名称（例如，**CodeDeployDemo**），然后按 Enter。

1. 选择 Amazon EC2 实例名称。

1. 在 **Actions** 菜单中，指向 **Instance State**，然后选择 **Terminate**。在系统提示时，选择 **Yes, Terminate**。

对每个实例重复这些步骤。

要删除 Amazon S3 存储桶，请执行以下步骤：

1. 登录 AWS 管理控制台 并打开 Amazon S3 控制台，网址为[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在存储桶列表中，浏览到并选择之前创建的 Amazon S3 存储桶的名称（例如，**amzn-s3-demo-bucket**）。

1. 您必须先删除存储桶的内容，然后才能删除存储桶。选择存储桶中的所有文件（如 **WordPressApp.zip**）。在 **Actions** 菜单中，选择 **Delete**。在提示确认删除时，选择 **OK**。

1. 在清空存储桶后，可以删除存储桶。在存储桶列表中，选择存储桶的行（而不是存储桶名称）。选择 **Delete bucket**，当系统提示进行确认时，选择 **OK**。

要从中删除`WordPress_App`应用程序，请执行 CodeDeploy以下操作：

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**应用程序**。

1. 在应用程序列表中，选择 **WordPress\$1App**。

1. 在 **Application details** 页上，选择 **Delete application**。

1. 在系统提示时，输入应用程序的名称以确认要删除应用程序，然后选择**删除**。

要删除 Systems Manager 状态管理器关联，请执行以下操作：

1. 在 https://console.aws.amazon.com /systems- AWS Systems Manager manager 上打开控制台。

1. 在导航窗格中，选择**状态管理器**。

1. 选择您创建的关联，然后选择**删除**。

## 接下来做什么？
<a name="tutorials-wordpress-clean-up-whats-next"></a>

如果您已到达此处，那么恭喜您！您已成功完成 CodeDeploy 部署，然后已更新您站点的代码并且已重新部署站点。