

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

# 步骤 2：创建简单的应用程序服务器堆栈 - Chef 11
<a name="gettingstarted-simple"></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 支持 团队联系。

一个基本的应用程序服务器堆栈包含一个具有公有 IP 地址的应用程序服务器实例以接收用户请求。应用程序代码和任何相关文件均存储在单独的存储库中，并从该位置部署到服务器。下图阐明了此类堆栈。

![\[Diagram showing application server stack with users, internet, and AWS components.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/php_walkthrough_arch_2.png)


该堆栈拥有以下组件：
+ 一个*层*，它表示一组实例并指定这些实例的配置方式。

  在本例中，层表示一组 PHP App Server 实例。
+ 一个*实例*，它代表一个 Amazon EC2 实例。

  在本例中，实例被配置为运行 PHP 应用程序服务器。图层可以有任意数量的实例。 OpsWorks Stacks 还支持其他几个应用程序服务器。有关更多信息，请参阅 [应用程序服务器层](workinglayers-servers.md)。
+ *应用程序*，其中包含在应用程序服务器上安装应用程序所需的信息。

  代码存储在一个远程存储库中，例如 Git 存储库或 Amazon S3 存储桶。

以下各节介绍如何使用 OpsWorks Stacks 控制台创建堆栈和部署应用程序。您也可以使用 CloudFormation 模板来配置堆栈。有关预置本主题中描述的堆栈的示例模板，请参阅 [AWS S OpsWorks nippets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-opsworks.html)。

**Topics**
+ [步骤 2.1：创建堆栈 - Chef 11](gettingstarted-simple-stack.md)
+ [步骤 2.2：添加 PHP App Server 层 - Chef 11](gettingstarted-simple-layer.md)
+ [步骤 2.3：向 PHP App Server 层添加实例 - Chef 11](gettingstarted-simple-instance.md)
+ [步骤 2.4：创建和部署应用程序 - Chef 11](gettingstarted-simple-app.md)

# 步骤 2.1：创建堆栈 - Chef 11
<a name="gettingstarted-simple-stack"></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 项目，该堆栈充当您的实例和其他资源的容器。堆栈配置指定一些由堆栈的所有实例共享的基本设置，如 Amazon Web Services Region 和默认操作系统。

**注意**  
此页面帮助您创建 Chef 11 堆栈。有关如何创建 Chef 12 堆栈的信息，请参阅[创建堆栈](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-intro-create-stack.html)。

此页面帮助您在 Chef 11 中创建堆栈。

**创建新堆栈**

1. 

**添加堆栈**

   登录到 [OpsWorks Stacks 控制台](https://console.aws.amazon.com/opsworks/)。如果该账户没有现有堆栈，您将看到 “**欢迎使用 AWS OpsWorks**” 页面；单击 “**添加您的第一个堆栈**”。否则，您将看到 OpsWorks Stacks 控制面板，其中列出了您账户的堆栈；点击**添加**堆栈。  
![\[如果你没有堆栈，你会在 Stacks 控制台中看到首次运行的页面；否则，你会看到账户中所有 OpsWorks 堆栈的列表。\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/firstrun.png)

1. 

**配置堆栈**

   在 **Add Stack** 页面上，选择 **Chef 11 stack** 并指定以下设置：  
**堆栈名称**  
为您的堆栈输入一个名称，可以包含字母数字字符 (a–z、A–Z、0-9) 和连字符 (-)。此演练的示例堆栈名为 **MyStack**。  
**Region**  
选择 美国西部（俄勒冈州） 作为堆栈的区域。

   接受其他设置的默认值并单击 **Add Stack**。有关各种堆栈设置的更多信息，请参阅[创建新堆栈](workingstacks-creating.md)。

# 步骤 2.2：添加 PHP App Server 层 - Chef 11
<a name="gettingstarted-simple-layer"></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 使用它来创建一组具有相同配置的 Amazon EC2 实例。您在堆栈中为每个相关实例组添加一个层。 OpsWorks 堆栈包括一组内置层，用于表示运行标准软件包（例如 MySQL 数据库服务器或 PHP 应用服务器）的实例组。此外，您还可以创建部分或完全自定义的层以满足特定要求。有关更多信息，请参阅 [自定义堆栈 OpsWorks](customizing.md)。

MyStack 有一层，即内置的 PHP 应用服务器层，它表示一组用作 PHP 应用程序服务器的实例。有关更多信息，包括内置层的说明，请参阅[图层](workinglayers.md)。

**将 PHP 应用服务器层添加到 MyStack**

1. 

**打开“Add Layer”页面**

   创建完堆栈后，Stac OpsWorks ks 会显示 “**堆栈**” 页面。单击 ** Add a layer** 以添加您的第一个层。  
![\[MyStack interface showing layers and instances sections with options to add components.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs2a.png)

1. 

**指定层类型并配置层**

   在 **层类型**框中，选择 **PHP 应用程序服务器**，接受默认 Elastic Load Balancer 设置并单击 **添加层**。创建层后，您可以通过[编辑层](workinglayers-basics-edit.md)来指定其他属性 (如 EBS 卷配置)。  
![\[Add layer interface showing PHP App Server layer type selection and Elastic Load Balancer option.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs3.png)

# 步骤 2.3：向 PHP App Server 层添加实例 - Chef 11
<a name="gettingstarted-simple-instance"></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 实例代表一个特定的亚马逊 EC2 实例：
+ 实例的配置指定了一些基本信息，例如 Amazon EC2operating 系统和大小；它可以运行，但作用不大。
+ 该实例的层通过确定要安装哪些软件包以及该实例是否拥有弹性 IP 地址等内容而向该实例添加功能。

OpsWorks Stacks 会在每个与服务交互的实例上安装代理。为了向实例添加层的功能， OpsWorks Stacks 会指示代理运行名为 [Chef recipes](http://docs.chef.io/recipes.html) 的小应用程序，这些应用程序可以安装应用程序和软件包、创建配置文件等。 OpsWorks Stacks 在实例[生命周期](workingcookbook-events.md)的关键时刻运行配方。例如，在实例完成启动后 OpsWorks 运行安装配方以处理诸如安装软件之类的任务；在部署应用程序以安装代码和相关文件时运行 Deploy 配方。

**注意**  
如果你对食谱的工作原理感到好奇，那么所有 OpsWorks Stacks 内置食谱都位于一个公共 GitHub 存储库中：[OpsWorks Cookbook](https://github.com/aws/opsworks-cookbooks) s。您也可以创建自己的自定义配方，并让 OpsWorks Stacks 运行它们，如下文所述。

要将 PHP 应用程序服务器添加到中 MyStack，请将实例添加到您在上一步中创建的 PHP App Server 层。

**向 PHP App Server 层添加另一个实例**

1. 

**打开“Add an Instance”**

   添加完图层后， OpsWorks Stacks 会显示 “**图层**” 页面。在导航窗格中，单击 **Instances**，然后在 **PHP App Server** 下单击 **Add an instance**。

1. 

**配置实例**

   每个实例都有一个由 OpsWorks Stacks 为您生成的默认主机名。在此示例中， OpsWorks Stacks 只是在图层的短名称中添加一个数字。您可以单独配置每个实例，包括覆盖您在创建堆栈时指定的某些默认设置，如可用区或操作系统。对于本演练，只需接受默认设置并单击 **Add Instance** 以将实例添加到该层即可。有关更多信息，请参阅 [实例](workinginstances.md)。  
![\[Form for adding a new PHP App Server instance with hostname, size, and subnet options.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs7.png)

1. 

**启动实例**

   到目前为止，您只是指定了该实例的配置。您必须启动一个实例才能创建正在运行的 Amazon EC2 实例。 OpsWorks 然后，Stacks 使用配置设置在指定的可用区启动 Amazon EC2 实例。有关如何启动实例的详细信息取决于该实例的*扩展类型*。在上一步中，您创建了具有默认扩展类型 (*全天候*) 的实例，该实例必须手动启动，然后一直运行，直至手动停止。您还可以创建基于时间和基于负载的扩展类型， OpsWorks Stacks 会根据计划或当前负载自动启动和停止这些类型。有关更多信息，请参阅 [使用基于时间和基于负载的实例管理负载](workinginstances-autoscaling.md)。

   转到 **PHP App Server** 下的 **php-app1**，并单击该行的 **Actions** 列中的 **start** 以启动实例。  
![\[PHP App Server instance list showing php-app1 stopped with start and delete options.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs8.png)

1. 

**启动期间监控实例的状态**

   启动 Amazon EC2 实例并安装软件包通常需要几分钟。在启动过程中，实例的 **Status** 字段会显示下面一系列值：

   1. 已@@ **请求**- OpsWorks Stacks 已调用亚马逊 EC2服务来创建亚马逊 EC2 实例。

   1. **待处理**- OpsWorks Stacks 正在等待 Amazon EC2 实例启动。

   1. **正在启动**-Amazon EC2 实例正在启动。

   1. **running\$1setup**- OpsWorks Stacks 代理正在运行层的安装配方，用于处理诸如配置和安装软件包之类的任务，以及 Deploy 配方（用于将任何应用程序部署到实例）。

   1. **online** - 实例已准备就绪，可供使用。

   php-app1 联机后，**Instances** 页面应与以下内容类似：  
![\[PHP App Server instance table showing php-app1 online with details like size and IP address.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs9.png)

   该页面首先简要汇总堆栈的所有实例。现在，它显示一个联机实例。在 php-app1 **Actions** 列中，请注意，**stop** (停止实例) 已取代 **start** 和 **delete**。

# 步骤 2.4：创建和部署应用程序 - Chef 11
<a name="gettingstarted-simple-app"></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 支持 团队联系。

为了使其 MyStack 更有用，您需要将应用程序部署到 PHP App Server 实例。您将应用程序代码和任何相关文件存储在 Git 之类的存储库中。要将这些文件放到应用程序服务器上，您需要采取以下几个步骤：

**注意**  
本部分中的过程适用于 Chef 11 堆栈。有关如何向 Chef 12 堆栈的层中添加应用程序的信息，请参阅[添加应用程序](workingapps-creating.md)。

1. 创建应用程序。

   应用程序包含 OpsWorks Stacks 从存储库下载代码和相关文件所需的信息。您也可以指定其他信息，如应用程序的域。

1. 将应用程序部署到应用程序服务器。

   部署应用程序时， OpsWorks Stacks 会触发 Deploy 生命周期事件。代理随后会运行该实例的 Deploy 配方，这会将文件下载到合适目录并执行相关任务 (如配置服务器、重启服务等)。

**注意**  
当您创建新实例时， OpsWorks Stacks 会自动将所有现有应用程序部署到该实例。但是，当您创建新应用程序或更新现有应用程序时，必须手动部署该应用程序或对所有现有实例进行更新。

此步骤显示了如何手动将示例应用程序从公有 Git 存储库部署到应用程序服务器。如果要检查应用程序，请转到 [https://github.com/amazonwebservices/opsworks-demo-php-simple-app](https://github.com/amazonwebservices/opsworks-demo-php-simple-app)。本示例中使用的应用程序位于版本 1 分支中。 OpsWorks 堆栈还支持其他几种存储库类型。有关更多信息，请参阅 [应用程序源](workingapps-creating.md#workingapps-creating-source)。

**创建和部署应用程序**

1. 

**打开应用程序页面**

   在导航窗格中，单击 **Apps**，然后在 **Apps** 页面上单击 **Add an app**。  
![\[Apps page showing no apps and an "Add an app" button with a brief description.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs13.png)

1. 

**配置应用程序**

   在 **App** 页上，指定以下值：  
**Name**  
应用程序的名称， OpsWorks Stacks 将其用于显示目的。示例应用程序名为**SimplePHPApp**。 OpsWorks Stacks 还会生成一个简短的名称（在本例中为 simplephpapp），该名称供内部使用和 Deploy 配方使用，如后所述。  
**Type**  
应用程序的类型 (将决定在哪里部署该应用程序)。示例使用的是 **PHP**，这会将该应用程序部署到 PHP App Server 实例。  
**数据来源类型**  
关联的数据库服务器。现在选择 **None**；我们将在[步骤 3：添加后端数据存储](gettingstarted-db.md)中介绍数据库服务器。  
**存储库类型**  
应用程序的存储库类型。示例应用程序存储在 **Git** 存储库中。  
**Repository URL**  
应用程序的存储库 URL。示例 URL 为：**git://github.com/awslabs/opsworks-demo-php-simple-app.git**  
**分支/修订**  
应用程序的分支或版本。本部分演练使用 **version1** 分支。

   将其余设置保留默认值，然后单击 **Add App**。有关更多信息，请参阅 [添加应用程序](workingapps-creating.md)。  
![\[Add App form with settings for name, type, document root, data sources, and application source.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs14.png)

1. 

**打开部署页面**

   要在服务器上安装代码，您必须*部署*应用程序。为此，请在 “简单PHPApp**操作**” 列中单击 “**部署**”。  
![\[Apps table showing SimplePHPApp with deploy, edit, and delete options in the Actions column.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs15.png)

1. 

**部署应用程序**

   部署应用程序时，代理将在 PHP App Server 实例上运行 Deploy 配方 (这将下载和配置应用程序)。

   **Command** 应该已经设置为 **deploy**。对于其他设置，保持默认设置不变，然后单击 **Deploy** 以部署应用程序。  
![\[Deploy app interface with settings for SimplePHPApp and instance selection options.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs16.png)

   完成部署后，**Deployment** 页面将显示 **Status** 为 **Successful**，并且 **php-app1** 旁边会出现一个绿色对勾。

1. 

**简单运行 PHPApp**

   PHPApp Simple 现已安装并准备就绪。要运行它，请在导航窗格中单击 **Instances** 以转到 **Instances** 页面。然后单击 php-app1 实例的公有 IP 地址。  
![\[PHP App Server instance details showing hostname, status, size, and public IP address.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs20.png)

   您应在浏览器中看到如下所示的页面。  
![\[Confirmation page for a simple PHP application running on AWS 云 with PHP version 5.3.20.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/gs21.png)

**注意**  
本演练假定您将继续执行下一部分并最终在一个会话中完成整个演练。如果你愿意，你可以随时停下来，稍后通过登录 OpsWorks Stacks 并打开堆栈继续操作。但是，您需要为所使用的任何 AWS 资源 (如联机实例) 付费。为避免不必要的费用，您可以停止您的实例，从而终止相应的 EC2实例。当您准备好继续时，可以再次启动该实例。