本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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
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
執行於
) 執行,由的名稱決定WAR。在單一WAR來源服務包中,應用程式一律會在根路徑上執行。myapp
.elasticbeanstalk.com/app2
/
在 Elastic Beanstalk 主控台中套用的設定會覆寫組態檔案中相同的設定 (如存在)。這可讓您在組態檔案中擁有預設設定,並以主控台的環境專屬設定覆寫之。如需優先順序以及其他變更設定方法的詳細資訊,請參閱組態選項。
如需各種擴充 Elastic Beanstalk Linux 類型平台方式的詳細資訊,請參閱 擴充 Elastic Beanstalk Linux 平台。
設定您的 Tomcat 環境
Elastic Beanstalk Tomcat 平台除了所有平台皆有的標準選項外,還提供幾個平台特定的選項。這些選項可讓您設定在環境的 Web 伺服器上執行的 Java 虛擬機器 (JVM),並定義系統屬性,為應用程式提供資訊組態字串。
您可以使用 Elastic Beanstalk 主控台來啟用至 Amazon S3 的日誌輪換,和設定您應用程式可從環境讀取的變數。
在 Elastic Beanstalk 主控台中設定您的 Tomcat 環境
開啟彈性魔豆控制台
,然後在「區域」列表中選擇您的 AWS 區域. -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
容器選項
您可以指定這些平台特有的選項:
-
代理伺服器 – 要在您的環境執行個體上使用的代理伺服器。預設使用 nginx。
JVM容器選項
Java 虛擬機器 (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 的平台分支。
如需詳細資訊,請參閱下列資源。
-
Oracle Java 文件網站:已刪除 Java 選項
-
Oracle Java 文件網站:其他考量事項
中的類別中繼資料區段
如需 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設定。使用此命名空間的選項,對應管理主控台中的選項,如下所示:-
Xms
— JVM命令行選項 -
JVM Options
— JVM命令行選項
-
-
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 之前),請閱讀本節中的其他信息。
備註
-
本主題中的資訊僅適用於以 Amazon Linux AMI (AL1) 為基礎的平台分支。AL2023/ AL2 平台分支機構與先前的 Amazon Linux AMI (AL1) 平台版本不相容,因此需要不同的組態設定。
-
2022 年 7 月 18 日,Elastic Beanstalk 將基於 Amazon LinuxAMI()AL1的所有平台分支的狀態設置為已退休。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 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 檔案取得進一步指示