

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

# 创建自定义 Tomcat 服务器层
<a name="create-custom"></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 支持 团队联系。

**注意**  
本主题介绍如何为 Linux 堆栈实施自定义层。但是，也可以修改基本原则和某些代码来为 Windows 堆栈实施自定义层，尤其是应用程序部署上的部分中的 Windows 堆栈。

在 OpsWorks Stacks 实例上使用非标准包的最简单方法是[扩展现有](workingcookbook-extend-package.md)层。但是，这种方法会在该层的实例上同时安装并运行标准和非标准程序包，通常不需要这么做。一种要求更高但更有效的方法是实施自定义层，这使您几乎可以完全控制该层的实例，其中包括以下内容：
+ 安装哪些程序包
+ 如何配置每个程序包
+ 如何将应用程序从存储库部署到实例

无论使用控制台还是 API，您都可以像任何其他层一样创建并管理自定义层，如[自定义层](workinglayers-custom.md)中所述。但是，自定义层的内置配方仅执行一些非常基本的任务，如安装 Ganglia 客户端以向 Ganglia 主机报告指标。要使自定义层的实例不仅仅局限于最低的正常运行，您必须实施一个或多个包含 Chef 配方和相关文件的自定义说明书，以处理安装和配置程序包、部署应用程序等任务。不过，您没有必要从头开始实施所有内容。例如，如果您将应用程序存储在一个标准存储库中，您可以使用内置部署配方来处理在该层的实例上安装应用程序的大部分工作。

**注意**  
如果您在 Chef 方面是新手，您应当先阅读[说明书 101](cookbooks-101.md)，这是一个教程，旨在介绍关于如何实施说明书以执行各种常见任务的基本知识。

以下演练介绍如何实施可支持 Tomcat 应用程序服务器的自定义层。该层基于一个名为 Tomcat 的自定义说明书，该说明书中包含用于处理程序包安装、部署等任务的配方。本演练包括 Tomcat 说明书的摘录。你可以从其[GitHub 存储库](https://github.com/amazonwebservices/opsworks-example-cookbooks/tree/master/tomcat)中下载完整的食谱。如果您不熟悉 [Opscode Chef](http://www.opscode.com/chef/)，您应当先阅读[说明书和诀窍](workingcookbook.md)。

**注意**  
OpsWorks Stacks 包括一个功能齐全的 [Java 应用服务器层](layers-java.md)，供生产使用。Tomcat 说明书的目的在于说明如何实施自定义层，因此它仅支持不包括 SSL 等功能的有限版本的 Tomcat。有关功能完备的实施的示例，请参阅内置 [opsworks\$1java](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_java) 说明书。

Tomcat 说明书支持其实例拥有以下特征的自定义层：
+ 它们支持拥有 Apache 前端的 Tomcat Java 应用程序服务器。
+ Tomcat 经配置，允许应用程序使用 JDBC `DataSource` 对象来连接到单独的 MySQL 实例，该实例相当于一个后端数据存储。

针对这个项目的说明书涉及多个关键组件：
+ [属性文件](create-custom-attributes.md)包含各个配方使用的配置设置。
+ [Setup 配方](create-custom-setup.md)被分配给该层的 Setup [生命周期事件](workingcookbook-events.md)。它们在实例启动后运行，并执行安装程序包和创建配置文件等任务。
+ [Configure 配方](create-custom-configure.md)分配给了该层的 Configure 生命周期事件。它们在堆栈的配置发生更改后 (主要是当实例变为在线或离线状态时) 运行，并处理任何所需的配置更改。
+ [Deploy 配方](create-custom-deploy.md)分配给了层的 Deploy 生命周期事件。它们在 Setup 配方之后以及当您手动部署应用程序以在层的实例上安装代码和相关文件并处理相关任务 (如重新启动服务) 之后运行。

最后一部分 [创建堆栈并运行应用程序](create-custom-stack.md) 介绍如何创建一个包含基于 Tomcat 说明书的自定义层的堆栈，以及如何部署和运行一个简单的 JSP 应用程序，该应用程序显示在属于单独的 MySQL 层的实例上运行的 MySQL 数据库中的数据。

**注意**  
Tomcat 食谱依赖于一些 OpsWorks Stacks 内置食谱。为了明确每个配方的来源，本主题使用 Chef *cookbookname*::*recipename* 约定确定配方。

**Topics**
+ [属性文件](create-custom-attributes.md)
+ [Setup 配方](create-custom-setup.md)
+ [Configure 配方](create-custom-configure.md)
+ [Deploy 配方](create-custom-deploy.md)
+ [创建堆栈并运行应用程序](create-custom-stack.md)