步骤 4:部署 WordPress 应用程序 - AWS CodeDeploy

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

步骤 4:部署 WordPress 应用程序

现在,您部署已上传到 Amazon S3 的示例 WordPress 应用程序修订。您可以使用 AWS CLI 或 CodeDeploy 控制台部署修订并监视部署进度。成功部署应用程序修订之后,可以检查结果。

使用 CodeDeploy 部署您的应用程序修订

使用 AWS CLI 或控制台部署您的应用程序修订。

部署您的应用程序修订(CLI)

  1. 部署需要部署组。不过,在创建部署组之前,您需要服务角色 ARN。服务角色是 IAM 角色,该角色授予某个服务代表您执行操作的权限。在这种情况下,服务角色将为 CodeDeploy 提供访问您的 Amazon EC2 实例的权限,以扩展(读取)其 Amazon EC2 实例标签。

    您应该已经按照创建服务角色(CLI)中的说明创建了服务角色。要获取服务角色的 ARN,请参阅获取服务角色 ARN(CLI)

  2. 现在您已拥有此服务角色 ARN,请调用 create-deployment-group 命令,使用名为 CodeDeployDemo 的 Amazon EC2 标签和名为 CodeDeployDefault.OneAtATime 的部署配置,创建一个与名为 WordPress_App 的应用程序相关联的名为 WordPress_DepGroup 的部署组:

    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 命令支持创建触发器,触发器会向主题订阅者发送有关部署和实例中指定事件的 Amazon SNS 通知。该命令还支持用于自动回滚部署和设置警报的选项,以便在达到 Amazon CloudWatch 警报中的监控阈值时停止部署。本教程中不包含用于这些操作的命令。

  3. 在创建部署之前,部署组中的实例必须安装 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 代理。有关 Systems Manager 的详细信息,请参阅什么是 AWS Systems Manager

  4. 现在调用 create-deployment 命令,使用名为 WordPress_App 的存储桶中名为 CodeDeployDefault.OneAtATime 的应用程序修订,创建一个与名为 WordPress_DepGroup 的应用程序、名为 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

部署应用程序修订(控制台)

  1. 在使用 CodeDeploy 控制台部署您的应用程序修订之前,您需要服务角色 ARN。服务角色是 IAM 角色,该角色授予某个服务代表您执行操作的权限。在这种情况下,服务角色将为 CodeDeploy 提供访问您的 Amazon EC2 实例的权限,以扩展(读取)其 Amazon EC2 实例标签。

    您应该已经按照创建服务角色(控制台)中的说明创建了服务角色。要获取服务角色的 ARN,请参阅获取服务角色 ARN(控制台)

  2. 现在您已拥有 ARN,可以开始使用 CodeDeploy 控制台部署您的应用程序修订:

    登录 AWS 管理控制台并打开 CodeDeploy 控制台,网址为 https://console.aws.amazon.com/codedeploy

    注意

    使用您在入门 CodeDeploy中设置的同一用户登录。

  3. 在导航窗格中,展开部署,然后选择应用程序

  4. 在应用程序列表中,选择 WordPress_App

  5. 部署组选项卡中,选择创建部署组

  6. Deployment group name(部署组名称)中,输入 WordPress_DepGroup

  7. Deployment type 下,选择 In-place deployment

  8. 环境配置中,选择 Amazon EC2 实例

  9. 使用 AWS Systems Manager 的代理配置中,保留默认值。

  10. 中,输入 Name

  11. 中,输入 CodeDeployDemo

    注意

    在键入 CodeDeployDemo 后,匹配实例下方应显示 1 来确认 CodeDeploy 已找到一个匹配的 Amazon EC2 实例。

  12. 部署配置中,选择 CodeDeployDefault.OneAtATime

  13. 服务角色 ARN 中,选择服务角色 ARN,然后选择创建部署组

  14. 选择 Create deployment(创建部署)

  15. 部署组中,选择 WordPress_DepGroup

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

    1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

    2. 在存储桶列表中,选择 amzn-s3-demo-bucket(或您将应用程序修订上传到的存储桶的名称)。

    3. 在对象列表中,选择 WordPressApp.zip

    4. 概述选项卡中,将链接字段的值复制到您的剪贴板。

      其内容如下所示:

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

    5. 返回 CodeDeploy 控制台,在修订位置中,粘贴链接字段值。

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

  18. (可选)在 Deployment description 框中键入注释。

  19. 展开部署组覆盖,从部署配置中,选择 CodeDeployDefault.OneAtATime

  20. 选择开始部署。有关您新创建的部署的信息将显示在 Deployments 页上。

监控您的部署并排除故障

使用 AWS CLI 或控制台监控部署和排除部署故障。

监视您的部署并排除故障(CLI)

  1. 针对名为 list-deployments 的应用程序和名为 WordPress_App 的部署组调用 WordPress_DepGroup 命令,以获取部署的 ID:

    aws deploy list-deployments --application-name WordPress_App --deployment-group-name WordPress_DepGroup --query 'deployments' --output text
  2. 通过部署 ID 调用 get-deployment 命令:

    aws deploy get-deployment --deployment-id deploymentID --query 'deploymentInfo.status' --output text
  3. 该命令将返回部署的整体状态。如果成功,该值将为 Succeeded

    如果总体状态为 Failed,则可以调用诸如 list-deployment-instancesget-deployment-instance 之类的命令进行故障排除。有关更多故障排除选项,请参阅分析日志文件以调查针对实例的部署失败

监视您的部署和故障排除(控制台)

在 CodeDeploy 控制台的部署页面上,您可以在状态列中监控部署的状态。

要获取有关部署的详细信息(特别是在 Status 列值为 Succeeded 之外的任何值的情况下),请执行以下操作:

  1. 部署表中,选择部署名称。部署失败后,将显示描述失败原因的消息。

  2. 实例活动中,将显示有关部署的更多信息。部署失败之后,您可以确定在哪些 Amazon EC2 实例上失败以及部署在哪个步骤失败。

  3. 如果您要执行更多问题排查,则可使用与View Instance Details中描述方法类似的方法。您还可以分析有关 Amazon EC2 实例的部署日志文件。有关更多信息,请参阅 分析日志文件以调查针对实例的部署失败

验证您的部署

部署成功后,请验证您的 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 欢迎页面

如果您的 Amazon EC2 实例没有将 HTTP 入站规则添加到其安全组,则不显示 WordPress 欢迎页面。如果您看到说明远程服务器未响应的消息,请确保您 Amazon EC2 实例的安全组具有入站规则。有关更多信息,请参阅 添加入站规则,允许 HTTP 流量指向您的 Amazon Linux 或 RHEL Amazon EC2 实例