

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立自訂 Tomcat 伺服器 Layer
<a name="create-custom"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

**注意**  
本主題說明如何實作 Linux 堆疊的自訂 layer。不過，基本原則和部分程式碼經改寫後也能用於實作 Windows 堆疊的自訂 layer，特別是應用程式部署一節的內容。

在 Stacks OpsWorks 執行個體上使用非標準套件的最簡單方法是[擴展現有的 layer](workingcookbook-extend-package.md)。但是，此方法會在 layer 的執行個體上同時安裝及執行標準和非標準套件，而這並非是您所想要的。有一種要求較高也更強大的方式，便是實作自訂 layer，讓您幾乎可以完全控制 layer 的執行個體，包含下列項目：
+ 要安裝的套件
+ 每個套件的設定方式
+ 從儲存庫將應用程式部署到執行個體的方式

無論您是使用主控台還是 API，您建立和管理自訂 layer 的方式與其他 layer 幾乎一模一樣，如[自訂 Layer](workinglayers-custom.md)所述。但是，自訂 layer 的內建配方會執行一些非常基本的任務，例如安裝 Ganglia 用戶端以將指標報告給 Ganglia 主機。若要使自訂 layer 執行個體不僅具有最低限度的功能，您必須使用 Chef 配方和相關檔案實作一或多個自訂技術指南，以處理安裝及設定套件、部署應用程式等任務。但您不一定需要從頭開始實作所有東西。例如，若您在其中一個標準儲存庫中存放應用程式，您可以使用內建的部署配方處理在 layer 的執行個體上安裝應用程式的大部分工作。

**注意**  
如果您是第一次使用 Chef，建議您先閱讀[技術指南 101](cookbooks-101.md)，該教學介紹如何實作技術指南以執行各種常見任務的基本概念。

下列演練說明如何實作支援 Tomcat 應用程式伺服器的自訂 layer。layer 是以名為 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 App Server layer](layers-java.md)。Tomcat 技術指南的目的是示範如何實作自訂 layer，使其支援 Tomcat 限制版本 (不包含諸如 SSL 等功能)。如需完整實作的範例，請參閱內建的 [opsworks\$1java](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_java) 技術指南。

Tomcat 技術指南支援執行個體具有下列特性的自訂 layer：
+ 他們支援使用 Apache 前端的 Tomcat Java 應用程式伺服器。
+ Tomcat 設定為允許應用程式使用 JDBC `DataSource` 物件連線到單獨的 MySQL 執行個體，做為後端資料存放區。

此專案的技術指南涉及幾項主要元件：
+ [屬性檔案](create-custom-attributes.md)包含各種配方會使用的組態設定。
+ [安裝配方](create-custom-setup.md)會指派給 layer 的安裝[生命週期事件](workingcookbook-events.md)。他們會在執行個體啟動並執行像是安裝套件和建立組態檔案等任務後執行。
+ [設定配方](create-custom-configure.md)會指派給 layer 的設定生命週期事件。它們會在堆疊的組態變更後執行，主要是在執行個體上線或離線時，並處理任何必要的組態變更。
+ [部署配方](create-custom-deploy.md)會指派給 layer 的部署生命週期事件。他們會在安裝配方之後，以及您手動部署應用程式，然後在 layer 的執行個體上安裝程式碼和相關檔案時執行，並會處理相關任務 (例如重新啟動服務)。

最後一節 說明如何建立堆疊，其中包含以 Tomcat 技術指南為基礎的自訂 layer[建立堆疊和執行應用程式](create-custom-stack.md)，以及如何部署和執行簡單的 JSP 應用程式，以顯示在屬於個別 MySQL layer 的執行個體上執行之 MySQL 資料庫的資料。

**注意**  
Tomcat 技術指南配方取決於一些 OpsWorks Stacks 內建配方。為使每個配方的來源更為清晰，本主題會使用 Chef *cookbookname*::*recipename* 慣例識別配方。

**Topics**
+ [屬性檔案](create-custom-attributes.md)
+ [安裝配方](create-custom-setup.md)
+ [設定配方](create-custom-configure.md)
+ [部署配方](create-custom-deploy.md)
+ [建立堆疊和執行應用程式](create-custom-stack.md)