创建自定义 Tomcat 服务器层 - AWS OpsWorks

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

创建自定义 Tomcat 服务器层

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够正常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时它们将停产。为准备此过渡,我们建议您尽快将堆栈过渡到AWS Systems Manager。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终止常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager Application Manager

注意

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

在 AWS OpsWorks Stacks 实例上使用非标准程序包的最简单的方法是扩展现有层。但是,这种方法会在该层的实例上同时安装并运行标准和非标准程序包,通常不需要这么做。一种要求更高但更有效的方法是实施自定义层,这使您几乎可以完全控制该层的实例,其中包括以下内容:

  • 安装哪些程序包

  • 如何配置每个程序包

  • 如何将应用程序从存储库部署到实例

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

注意

如果您在 Chef 方面是新手,您应当先阅读说明书 101,这是一个教程,旨在介绍关于如何实施说明书以执行各种常见任务的基本知识。

以下演练介绍如何实施可支持 Tomcat 应用程序服务器的自定义层。该层基于一个名为 Tomcat 的自定义说明书,该说明书中包含用于处理程序包安装、部署等任务的配方。本演练包括 Tomcat 说明书的摘录。你可以从其GitHub 存储库中下载完整的食谱。如果您不熟悉 Opscode Chef,您应当先阅读说明书和诀窍

注意

AWS OpsWorks Stacks 包括适用于生产用途的功能完备的 Java App Server 层。Tomcat 说明书的目的在于说明如何实施自定义层,因此它仅支持不包括 SSL 等功能的有限版本的 Tomcat。有关功能完备的实施的示例,请参阅内置 opsworks_java 说明书。

Tomcat 说明书支持其实例拥有以下特征的自定义层:

  • 它们支持拥有 Apache 前端的 Tomcat Java 应用程序服务器。

  • Tomcat 经配置,允许应用程序使用 JDBC DataSource 对象来连接到单独的 MySQL 实例,该实例相当于一个后端数据存储。

针对这个项目的说明书涉及多个关键组件:

  • 属性文件包含各个配方使用的配置设置。

  • Setup 配方被分配给该层的 Setup 生命周期事件。它们在实例启动后运行,并执行安装程序包和创建配置文件等任务。

  • Configure 配方分配给了该层的 Configure 生命周期事件。它们在堆栈的配置发生更改后 (主要是当实例变为在线或离线状态时) 运行,并处理任何所需的配置更改。

  • Deploy 配方分配给了层的 Deploy 生命周期事件。它们在 Setup 配方之后以及当您手动部署应用程序以在层的实例上安装代码和相关文件并处理相关任务 (如重新启动服务) 之后运行。

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

注意

Tomcat 说明书配方依赖某些 AWS OpsWorks Stacks 内置配方。为了明确每个配方的来源,本主题使用 Chef cookbookname::recipename 约定确定配方。