使用 Elastic Beanstalk Tomcat 平台 - AWS Elastic Beanstalk

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

使用 Elastic Beanstalk Tomcat 平台

本主題說明如何設定、建置和執行在 Elastic Beanstalk Tomcat 平台上執行的 Java 應用程式。

所以此 AWS Elastic Beanstalk Tomcat 平台是一組可以在 Tomcat 網絡容器中運行的 Java Web 應用程序的平台版本。Tomcat 會在 nginx 代理服務器後面執行。每個平台分支對應於 Tomcat 的主要版本。

Elastic Beanstalk 主控台中提供了修改正在執行環境組態的組態選項。要避免在終止環境的組態時遺失組態,您可以使用已儲存組態來儲存您的設定,並在之後套用至另一個環境。

若要將設定儲存於原始程式碼,您可以包含組態檔案。每次您建立環境或部署應用程式,組態檔案裡的設定就會套用。您也可以使用組態檔案來安裝套件、執行指令碼,並在部署期間執行其他執行個體自訂操作。

Elastic Beanstalk Tomcat 平台包含了反向代理程式,可將請求轉送給您的應用程式。您可使用組態選項來設定代理伺服器,從您原始程式碼中的資料夾提供靜態資產,以減輕應用程式的負擔。在進階的使用情境中,您可以在您的原始碼套件中,加入自己的 .conf 檔案,來擴展或完全覆寫掉 Elastic Beanstalk 的代理組態。

注意

Elastic Beanstalk 支持 nginx(默認)和 Apache HTTP 服務器作為 Tomcat 平台上的代理服務器。如果您的 Elastic Beanstalk Tomcat 環境使用 Amazon Linux AMI 平台分支(在 Amazon Linux 2 之前),您也可以選擇使用阿帕奇HTTP服務器 2.2 版本。在這些較舊平台分支上會預設使用 Apache 最新版。

2022 年 7 月 18 日,Elastic Beanstalk 將基於 Amazon LinuxAMI()AL1的所有平台分支的狀態設置為已退休。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2

您必須在具有特定結構的 Web 應用程式歸檔 (WAR) 檔案中封裝 Java 應用程式。關於所需的架構,以及該架構與您專案目錄架構之間的關係,詳細資訊請參閱建構您的專案資料夾

若要在同一個 Web 伺服器上執行多個應用程式,您可以將多個WAR檔案併入單一來源套裝軟體中。多重WAR來源套裝軟體中的每個應用程式都會在根路徑 (ROOT.war執行於myapp.elasticbeanstalk.com/),或在其下方的路徑 (app2.war執行於myapp.elasticbeanstalk.com/app2/) 執行,由的名稱決定WAR。在單一WAR來源服務包中,應用程式一律會在根路徑上執行。

在 Elastic Beanstalk 主控台中套用的設定會覆寫組態檔案中相同的設定 (如存在)。這可讓您在組態檔案中擁有預設設定,並以主控台的環境專屬設定覆寫之。如需優先順序以及其他變更設定方法的詳細資訊,請參閱組態選項

如需各種擴充 Elastic Beanstalk Linux 類型平台方式的詳細資訊,請參閱 擴充 Elastic Beanstalk Linux 平台

設定您的 Tomcat 環境

Elastic Beanstalk Tomcat 平台除了所有平台皆有的標準選項外,還提供幾個平台特定的選項。這些選項可讓您設定在環境的 Web 伺服器上執行的 Java 虛擬機器 (JVM),並定義系統屬性,為應用程式提供資訊組態字串。

您可以使用 Elastic Beanstalk 主控台來啟用至 Amazon S3 的日誌輪換,和設定您應用程式可從環境讀取的變數。

在 Elastic Beanstalk 主控台中設定您的 Tomcat 環境
  1. 開啟彈性魔豆控制台,然後在「區域」列表中選擇您的 AWS 區域.

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇組態

  4. 更新、監控和日誌記錄組態類別中,選擇編輯

容器選項

您可以指定這些平台特有的選項:

  • 代理伺服器 – 要在您的環境執行個體上使用的代理伺服器。預設使用 nginx。

JVM容器選項

Java 虛擬機器 (JVM) 中的堆積大小會決定應用程式在記憶體回收發生之前,可以在記憶體中建立多少個物件。您可以修改初始JVM堆集大小 (-Xms option) 和JVM堆集大小上限 (-Xmx選項)。較大的初始堆積大小可在記憶體回收進行之前,讓更多的物件能夠建立。但這也表示記憶體回收器會花費更多的時間來壓縮堆疊。堆集大小上限會指定在繁重活動期間擴充堆積時,JVM可配置的記憶體數量上限。

注意

可用的記憶體取決於 Amazon EC2 執行個體類型。如需彈性 Beanstalk 環境可用EC2執行個體類型的詳細資訊,請參閱 Amazon 彈性運算雲端 Linux 執行個體使用者指南中的執行個體類型

永久生成是存儲類定義和關聯元數據的JVM堆積的一部分。若要修改永久層代的大小,請在「最大大小」(-XX:MaxPermSize) 選項中鍵入新大JVM PermGen 小。此設定僅適用於 Java 7 和較舊的版本。此選項已在 JDK 8 中棄用,並由 S MaxMetaspaceize (-XX:MaxMetaspaceSize) 選項取代。

重要

JDK17 移除了對 Java 選-XX:MaxPermSize項的支援。將此選項與具有 Corretto 17 的 Elastic Beanstalk 平台分支上執行的環境搭配使用將導致錯誤。Elastic Beanstalk 於 2023 年 7 月 13 日發布了第一個執行 Tomcat 與 Corretto 17 的平台分支。

如需詳細資訊,請參閱下列資源。

如需 Elastic Beanstalk 平台及其元件的詳細訊,請參閱 AWS Elastic Beanstalk 平台指南。

日誌選項

Log Options (日誌選項) 區段有兩個設定:

  • 執行個體設定檔 – 指定有權存取與您應用程式相關的 Amazon S3 儲存貯體的執行個體設定檔。

  • 啟用 Amazon S3 的日誌檔輪替 — 指定是否將應用程式 Amazon EC2 執行個體的日誌檔複製到與應用程式關聯的 Amazon S3 儲存貯體。

靜態檔案

若要改善效能,您可以使用 [靜態檔案] 區段,將 Proxy 伺服器設定為從 Web 應用程式內的一組目錄提供靜態檔案 (例如,HTML或影像)。對於每個目錄,您可以設定目錄映射的虛擬路徑。代理伺服器收到位於指定路徑下的檔案請求時,會直接提供檔案而非將請求路由至您的應用程式。

如需使用組態檔案或 Elastic Beanstalk 主控台設定靜態檔案的詳細資訊,請參閱提供靜態檔案

環境屬性

在「環境屬性」區段中,您可以在執行應用程式的 Amazon EC2 執行個體上指定環境組態設定。環境屬性會以金鑰值對的形式傳到應用程式。

Tomcat 平台會針對 Tomcat 環境,定義名為 JDBC_CONNECTION_STRING 的佔位符屬性,用來將連線字串傳遞到外部資料庫。

注意

如果您將資料RDS庫執行個體JDBC連接到環境,請從 Elastic Beanstalk 提供的 Amazon Relational Database Service (AmazonRDS) 環境屬性動態建構連接字串。STRING僅對未使用 Elastic Beanstalk 佈建的資料庫執行個體使用 JDBC CONNECTION _ _。

如需將 Amazon RDS 與 Java 應用程式搭配使用的詳細資訊,請參閱將 Amazon RDS 數據庫實例添加到您的 Java Elastic Beanstalk 環境

在 Elastic Beanstalk 內所執行的 Tomcat 環境中,可使用 System.getProperty() 來存取環境變數。例如,您可使用下列程式碼,來將名為 API_ENDPOINT 的屬性讀取到變數。

String endpoint = System.getProperty("API_ENDPOINT");

如需詳細資訊,請參閱「環境屬性與其他軟體設定」。

Tomcat 組態命名空間

您可以使用組態檔案來設定組態選項,並在部署期間執行其他的執行個體設定工作。組態選項可以是平台特定的,也可以整體套用至 Elastic Beanstalk 服務中的所有平台。組態選項會組織成命名空間

除了適用於所有 Elastic Beanstalk 環境的支援選項之外,Tomcat 也支援使用下列命名空間的選項:

  • aws:elasticbeanstalk:container:tomcat:jvmoptions— 修改JVM設定。使用此命名空間的選項,對應管理主控台中的選項,如下所示:

    • XmsJVM命令行選項

    • JVM OptionsJVM命令行選項

  • aws:elasticbeanstalk:environment:proxy - 選擇環境的代理伺服器。

下列的組態檔案範例展示了 Tomcat 特定組態選項的使用。

範例 .ebextensions/tomcat-settings.config
option_settings: aws:elasticbeanstalk:container:tomcat:jvmoptions: Xms: 512m JVM Options: '-Xmn128m' aws:elasticbeanstalk:application:environment: API_ENDPOINT: mywebapi.zkpexsjtmd.us-west-2.elasticbeanstalk.com aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

Elastic Beanstalk 可提供許多組態選項讓您自訂環境。除了組態檔案之外,您也可以使用主控台、儲存的組態CLI、EB 或 AWS CLI。 組態選項如需詳細資訊,請參閱。

如果您的 Elastic Beanstalk Tomcat 環境使用 Amazon Linux AMI 平台版本(在 Amazon Linux 2 之前),請閱讀本節中的其他信息。

備註

Tomcat Amazon Linux AMI 平台支援下列命名空間中的其他選項:

  • aws:elasticbeanstalk:container:tomcat:jvmoptions— 除了本頁前面針對此命名空間提到的選項之外,較舊的 Amazon Linux AMI 平台版本還支援:

    • XX:MaxPermSize最大JVM永久產生大小

  • aws:elasticbeanstalk:environment:proxy - 除了選擇代理伺服器之外,還會設定回應壓縮。

下列組態檔案範例展示了使用代理命名空間組態選項。

範例 .ebextensions/tomcat-settings.config
option_settings: aws:elasticbeanstalk:environment:proxy: GzipCompression: 'true' ProxyServer: nginx

若要部署 .ebextensions 設定檔,將其納入您的應用程式原始程式碼。對於單個應用程序,請運行以下命令將您的壓縮WAR文件添加.ebextensions到壓縮文件中:

zip -ur your_application.war .ebextensions

如需需要多個WAR檔案的應用程式,請參閱以綁定多個用於 Tomcat 環境的 WAR 檔案取得進一步指示