

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

# 添加应用程序
<a name="workingapps-creating"></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 支持 团队联系。

向您的应用程序服务器部署应用程序的第一步是将应用程序添加到堆栈。应用表示应用程序，包含各种元数据，例如应用程序的名称和类型以及向服务器实例部署应用程序所需的信息，如存储库 URL。您必须拥有管理权限才能将应用程序添加到堆栈。有关更多信息，请参阅 [管理用户权限](opsworks-security-users.md)。

**注意**  
本部分中的过程适用于 Chef 12 和更新的堆栈。有关如何向 Chef 11 堆栈的层中添加应用程序的信息，请参阅[步骤 2.4：创建和部署应用程序 - Chef 11](gettingstarted-simple-app.md)。

**将应用程序添加到堆栈**

1. 将代码置于您的首选存储库中：Amazon S3 存档、Git 存储库、Subversion 存储库或 HTTP 存档。有关更多信息，请参阅 [应用程序源](#workingapps-creating-source)。

1. 在导航窗格中，单击 **Apps**。在 **Apps** 页面上，单击 **Add an app** 以添加您的第一个应用程序。对于后续应用程序，单击 **\$1App**。

1. 使用 **App New** 页面来配置应用程序，如以下部分中所述。

## 配置应用程序
<a name="workingapps-creating-general"></a>

**Add App** 页面包含以下部分：**Settings**、**Application source**、**Data Sources**、**Environment Variables**、**Add Domains** 和 **SSL Settings**。

**Topics**
+ [设置](#workingapps-creating-settings)
+ [应用程序源](#workingapps-creating-source)
+ [数据源](#workingapps-creating-data)
+ [环境变量](#workingapps-creating-environment)
+ [域和 SSL 设置](#workingapps-creating-domain-ssl)

### 设置
<a name="workingapps-creating-settings"></a>

**Name**  
应用程序名称，用于在界面中表示应用程序。 OpsWorks Stacks 还使用此名称为内部使用的应用程序生成短名称，并在[堆栈配置和部署属性](workingcookbook-json.md)中标识该应用程序。在将应用程序添加到堆栈后，您就可以查看短名称了，方法是在导航窗格中单击 **Apps**，然后单击该应用程序的名称以打开详细信息页面。

****Document root****  
OpsWorks Stacks 将**文档根目录**设置分配给应用程序[`[:document_root]`](attributes-json-deploy.md#attributes-json-deploy-app-root)属性中的属性。`deploy`默认值为 `null`。您的部署配方可以使用标准 Chef 节点语法从 `deploy` 属性中获取该值，并将指定代码部署到服务器上的合适位置。有关如何部署应用程序的更多信息，请参阅 [Deploy 配方](create-custom-deploy.md)

### 应用程序源
<a name="workingapps-creating-source"></a>

您可以从以下类型的存储库部署应用程序：Git、Amazon S3 包、HTTP 包及其他。所有存储库类型都要求您指定存储库类型和存储库 URL。各个存储库类型有自己的要求，说明如下。

**注意**  
OpsWorks Stacks 会自动将应用程序从标准存储库部署到内置服务器层。如果您使用其他存储库类型（这是 Windows 堆栈的唯一选项）， OpsWorks Stacks 会将存储库信息放在应用程序的[`deploy`属性](workingcookbook-json.md#workingcookbook-json-deploy)中，但您必须实现自定义配方才能处理部署任务。

**Topics**
+ [HTTP 存档](#w2ab1c14c57c13c11b8b8)
+ [Amazon S3 归档](#w2ab1c14c57c13c11b8c10)
+ [Git 存储库](#w2ab1c14c57c13c11b8c12)
+ [其他存储库](#w2ab1c14c57c13c11b8c14)

#### HTTP 存档
<a name="w2ab1c14c57c13c11b8b8"></a>

要将可公开访问的 HTTP 服务器用作存储库，请执行以下步骤：

1. 创建包含应用程序代码和任何关联文件的文件夹的压缩存档：zip、gzip、bzip2、Java WAR 或 tarball。
**注意**  
OpsWorks 堆栈不支持未压缩的压缩包。

1. 将该存档文件上传到服务器。

1. 要在控制台中指定存储库，请选择 HTTP 存档作为存储库类型，然后输入 URL。

    如果存档受密码保护，请在**应用程序源**下指定登录凭证。

#### Amazon S3 归档
<a name="w2ab1c14c57c13c11b8c10"></a>

要使用 Amazon Simple Storage Service 存储桶作为存储库：

1. 创建公有或私有 Amazon S3 存储桶。有关更多信息，请参阅 [Amazon S3 文档](https://aws.amazon.com/documentation/s3/)。

1. 要 OpsWorks 让 Stacks 访问私有存储桶，您必须是至少拥有 Amazon S3 存储桶只读权限的用户，并且需要访问密钥 ID 和私有访问密钥。有关更多信息，请参阅 [AWS Identity and Access Management 文档](https://docs.aws.amazon.com/iam/)。

1. 将代码和任何关联的文件置于一个文件夹中，并将该文件夹保存在压缩存档中 - zip、gzip、bzip2、Java WAR 或 tarball。
**注意**  
OpsWorks 堆栈不支持未压缩的压缩包。

1. 将该存档文件上传到 Amazon S3 存储桶并记录 URL。

1. 要在 OpsWorks 堆栈控制台中指定存储库，请将**存储库类型**设置为 **S3 存档**，然后输入档案的 URL。对于私有存档，您还必须提供其策略可授予访问该存储桶权限的 AWS 访问密钥 ID 和秘密访问密钥。对于公有存档，这些设置保留为空。

#### Git 存储库
<a name="w2ab1c14c57c13c11b8c12"></a>

[Git](http://git-scm.com/) 存储库提供源代码控制和版本控制。 OpsWorks Stacks 支持公共托管的存储库站点，例如[GitHub](https://github.com/)或 [Bitbucke](https://bitbucket.org) t 以及私有托管的 Git 服务器。对于应用程序和 Git 子模块而言，您在 **Application Source** 中用于指定存储库 URL 的格式取决于存储库是公有的还是私有的：

**公有存储库**：使用 HTTPS 或 Git 只读协议。例如，[Chef 11 Linux 堆栈入门](gettingstarted.md)使用可通过以下任一 URL 格式访问的公共 GitHub 存储库：
+ Git 只读：**git://github.com/amazonwebservices/opsworks-demo-php-simple-app.git**
+ HTTPS：**https://github.com/amazonwebservices/opsworks-demo-php-simple-app.git**

**私有存储库**-使用以下示例中显示的 SSH read/write 格式：
+ Github 存储库：**git@github.com:*project*/*repository***。
+ Git 服务器上的存储库：***user*@*server*:*project*/*repository***

选择 **Source Control** 下的 **Git** 会显示两个额外的可选设置：

**存储库 SSH 密钥**  
您必须指定一个部署 SSH 密钥来访问私有 Git 存储库。此字段需要私有密钥；公有密钥已分配到您的 Git 存储库。对于 Git 子模块，指定的密钥必须有权访问这些子模块。有关更多信息，请参阅 [使用 Git 存储库 SSH 密钥](workingapps-deploykeys.md)。  
部署 SSH 密钥不需要密码； OpsWorks Stacks 无法通过密码。

**分支/修订**  
如果存储库有多个分支， OpsWorks Stacks 会默认下载主分支。要指定特定的分支，请输入分支名称、 SHA1 哈希值或标签名称。要指定特定提交，请输入完整的 40 位十六进制提交标识符。

#### 其他存储库
<a name="w2ab1c14c57c13c11b8c14"></a>

如果标准存储库不符合您的要求，您也可以使用其他存储库，例如 [Bazaar](http://bazaar.canonical.com/en/)。但是， OpsWorks Stacks 不会自动部署来自此类存储库的应用程序。您必须实施自定义配方来处理部署流程并将其分配到合适层的部署事件。有关如何实现“部署”配方的示例，请参阅 [Deploy 配方](create-custom-deploy.md)。

### 数据源
<a name="workingapps-creating-data"></a>

本部分将数据库附加到应用程序。您有以下选项：
+ **RDS**：附加堆栈的[ Amazon RDS 服务层](workinglayers-db-rds.md)之一。
+ **无**：不附加数据库服务器。

如果您选择 **RDS**，则必须指定以下内容。

**数据库实例**  
该列表包括每个 Amazon RDS 服务层。您还可以选择以下任一项：  
(必填项) 指定要将哪个数据库服务器附加到应用程序。列表的内容取决于数据源。  
+ **RDS**：堆栈的 Amazon RDS 服务层列表。

**数据库名称**  
(可选) 指定数据库名称。  
+ Amazon RDS 层：输入您为 Amazon RDS 实例指定的数据库名称。

  您可以从 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)获取数据库名称。

当您部署带有附加数据库的应用程序时， OpsWorks Stacks 会将数据库实例的连接添加到应用程序的[`deploy`属性](workingcookbook-json.md#workingcookbook-json-deploy)中。

您可以编写自定义配方，以检索 `deploy` 属性中的信息并将其保存在该应用程序可访问的文件中。这是向“Other”应用程序类型提供数据库连接信息的唯一选项。

有关如何处理数据库连接的更多信息，请参阅 [连接到数据库](workingapps-connectdb.md)。

要将数据库服务器与应用程序分离，[编辑应用程序的配置](workingapps-editing.md)以指定一个不同数据库服务器或无服务器。

### 环境变量
<a name="workingapps-creating-environment"></a>

您可以为每个应用程序指定一组环境变量，这些变量是特定于应用程序的。例如，如果您有两个应用程序，那么您为第一个应用程序定义的环境变量不适用于第二个应用程序，反之亦然。您也可以为多个应用程序定义相同的环境变量，并为每个应用程序分配一个不同值。

**注意**  
环境变量没有特定的数量限制。但是，关联的数据结构（其中包括这些变量名称、值和受保护标记值）的大小不能超过 20 KB。此限制应适用于大部分使用案例（如果不是所有使用案例的话）。超过此大小将导致服务错误 (控制台) 或异常 (API)，并显示消息“环境：过大 (最大值为 20 KB)。”

OpsWorks Stacks 将变量作为属性存储在应用程序的[`deploy`属性](workingcookbook-json.md#workingcookbook-json-deploy)中。您可以通过使用标准 Chef 节点语法让自定义配方检索这些值。有关如何访问应用程序的环境变量的示例，请参阅 [使用环境变量](apps-environment-vars.md)。

**Key**  
变量名称。可以包含最多 64 个大小写字母、数字和下划线 (\$1)，但必须以字母或下划线开始。

**值**  
变量的值。最多可包含 256 个字符，并且必须都是可打印字符。

**受保护的值**  
该值是否受保护。此设置可让您隐藏密码等敏感信息。如果您为变量设置 **Protected value**，在您创建应用程序后：  
+ 该应用程序的详细信息页面将仅显示变量名称，而不显示值。
+ 如果您有权编辑应用程序，则可以单击 **Update value** 来指定一个新值，但不能查看或编辑旧值。

**注意**  
Chef 部署日志有时包含环境变量。这意味着受保护变量可能显示在控制台中。为了防止受保护的变量显示在控制台中，我们建议您使用 Amazon S3 存储桶来存储不希望显示在控制台中的受保护变量。本指南中的[使用 Amazon S3 存储桶](gettingstarted.walkthrough.photoapp.md)提供了有关如何使用 S3 存储桶以达到此目的的示例。

### 域和 SSL 设置
<a name="workingapps-creating-domain-ssl"></a>

对于其他应用程序类型， OpsWorks Stacks 会将设置添加到应用程序的`deploy`属性中。您的配方可以从这些属性中检索数据并根据需要配置服务器。

**域设置**  
本部分有一个用于指定域的可选 **Add Domains** 字段。有关更多信息，请参阅 [使用自定义域](workingapps-domains.md)。

**SSL 设置**  
本部分有一个 **SSL Support** 开关，您可以用它来启用或禁用 SSL。如果您单击 **Yes**，将需要提供 SSL 证书信息。有关更多信息，请参阅 [使用 SSL](workingsecurity-ssl.md)。