

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

# 步骤 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)。