

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

# 部署应用程序
<a name="workingapps-deploying"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

部署的主要目的是将应用程序代码和相关文件部署到应用程序服务器实例。部署操作由每个实例的“部署”配方处理，而该配方由相应实例的层确定。

启动实例时，在安装配方完成后， OpsWorks Stacks 会自动运行该实例的 Deploy 配方。但是，当您添加或修改应用程序时，您必须将其手动部署到任何联机实例。您必须拥有管理或部署权限才能部署应用程序。有关更多信息，请参阅 [管理用户权限](opsworks-security-users.md)。

**部署应用程序**

1. 在 **Apps** 页面上，单击应用程序的 **deploy** 操作。  
![\[Apps page showing SimplePHP app with deploy, edit, and delete action options.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/apps_with_content.png)
**注意**  
您也可单击导航窗格中的 **Deployments** 来部署应用程序。在 **Deployments & Commands** 页面上单击 **Deploy an app**，执行此操作时，您还可选择要部署的应用程序。

1. 指定以下内容：
   + (必需) 将 **Command:** 设置为 **deploy** (如果尚未选择此项)。
   + (可选) 包含注释。

1. 单击 “**高级 >>**” 以指定自定义 JSON。 OpsWorks Stacks 向节点对象添加了一组[堆栈配置和部署属性](workingcookbook-json.md)。`deploy` 属性包含部署详细信息，可供“部署”配方用来处理安装和配置。在 Linux 堆栈上，您可以使用自定义 JSON 字段来[覆盖默认 OpsWorks 堆栈设置](workingcookbook-json-override.md)或将自定义设置传递给您的自定义配方。有关如何使用自定义 JSON 的更多信息，请参阅[使用自定义 JSON](workingstacks-json.md)。
**注意**  
如果您在此处指定了自定义 JSON，则它只会添加到此部署的堆栈配置和部署属性。如果您要永久添加自定义 JSON，则必须[将它添加到堆栈](workingstacks-json.md)。自定义 JSON 限制为 120 KB。如果您需要更多容量，则建议您将部分数据存储在 Amazon S3 上。您的自定义配方随后可使用 AWS CLI 或[适用于 Ruby 的 AWS SDK](https://aws.amazon.com/documentation/sdk-for-ruby/)将数据从存储桶下载到您的实例。有关示例，请参阅[使用适用于 Ruby 的 SDK](cookbooks-101-opsworks-s3.md)。

1. 在 **Instances** 下，单击 **Advanced >>** 并指定要运行部署命令的实例。

   部署命令将触发一个部署事件，该事件将在选定实例上运行部署配方。关联应用程序服务器的部署配方会将代码和相关文件从存储库下载并安装到实例上，因此您通常会选择所有关联应用程序服务器实例。但是，其他实例类型可能需要进行一些配置更改才能适应新应用程序，因此在此类实例上运行部署配方通常很有用。此类配方会按需更新配置，但不会安装应用程序的文件。有关配方的更多信息，请参阅[说明书和诀窍](workingcookbook.md)。

1. 单击 **Deploy** 在指定实例上运行部署配方，这将显示“Deployment”页面。该过程完成后， OpsWorks Stacks 会用绿色勾号标记应用程序，表示部署成功。如果部署失败， OpsWorks Stacks 会用红色 X 标记应用程序。在这种情况下，您可以转到 “部**署**” 页面并查看部署日志以获取更多信息。  
![\[Deployment status page showing successful deployment of PHPTestApp with details.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/deployed_app.png)

**注意**  
当您为 JSP 应用程序部署更新时，Tomcat 可能无法识别该更新，而是继续运行现有的应用程序版本。在某些情况下，比如当您将您的应用程序作为仅包含一个 JSP 页面的 .zip 文件时，可能会发生这种情况。要确保 Tomcat 将运行最近部署的版本，项目的根目录应包含放置了 `web.xml` 文件的 WEB-INF 目录。`web.xml` 文件可包含各种内容，但以下内容足以确保 Tomcat 识别更新并运行当前部署的应用程序版本。您无需为每个更新更改版本。Tomcat 将识别更新，即使版本未发生更改。  

```
<context-param>
  <param-name>appVersion</param-name>
  <param-value>0.1</param-value>
</context-param>
```

## 其他部署命令
<a name="workingapps-deploying-other"></a>

**Deploy app** 页包含用于管理您的应用程序和关联服务器的另外几个命令。在以下命令中，只有 **Undeploy** 适用于 Chef 12 堆栈上的应用程序。

**Undeploy**  
触发取消部署[生命周期事件](workingcookbook-events.md)，这将运行“取消部署”配方以从指定实例中删除应用程序的所有版本。

**回滚**  
恢复以前部署的应用程序版本。例如，如果您部署了应用程序三次，然后运行 **Rollback**，则服务器将从第二次部署为应用程序提供服务。如果您再次运行 **Rollback**，服务器将从第一次部署为应用程序提供服务。默认情况下， OpsWorks Stacks 存储五个最新的部署，这允许您最多回滚四个版本。如果您超出了已存储版本的数量，此命令将失败并保持最旧的版本不变。此命令在 Chef 12 堆栈中不可用。

**启动 Web 服务器**  
运行在指定实例上启动应用程序服务器的配方。此命令在 Chef 12 堆栈中不可用。

**停止 Web 服务器**  
运行在指定实例上停止应用程序服务器的配方。此命令在 Chef 12 堆栈中不可用。

**重新启动 Web 服务器**  
运行在指定实例上重新启动应用程序服务器的配方。此命令在 Chef 12 堆栈中不可用。

**重要**  
**Start Web Server**、**Stop Web Server**、**Restart Web Server** 和 **Rollback** 本质上是 [Execute Recipes 堆栈命令](workingstacks-commands.md)的自定义版本。它们运行一组在指定实例上执行任务的配方。  
这些命令不会触发生命周期事件，因此您无法挂钩它们以运行自定义代码。
这些命令仅适用于内置[ 应用程序服务器层](workinglayers-servers.md)。  
具体而言，这些命令对自定义层无效，即使它们支持应用程序服务器也是如此。要在自定义层上启动、停止或重新启动服务器，您必须实施自定义配方来执行这些任务并使用[“执行配方”堆栈命令](workingstacks-commands.md)来运行这些配方。有关如何实施和安装自定义配方的更多信息，请参阅[说明书和诀窍](workingcookbook.md)。