使用 Elastic Beanstalk Tomcat 平台 - AWS Elastic Beanstalk

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

使用 Elastic Beanstalk Tomcat 平台

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

T AWS Elastic Beanstalk omcat 平台是一組可以在 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 檔案取得進一步指示