本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Elastic Beanstalk Tomcat 平台
本主題說明如何設定、建置和執行在 Elastic Beanstalk Tomcat 平台上執行的 Java 應用程式。
AWS Elastic Beanstalk Tomcat 平台是一組適用於 Java Web 應用程式的平台版本,可在 Tomcat Web 容器中執行。Tomcat 會在 nginx 代理服務器後面執行。每個平台分支對應至 Tomcat 的主要版本。
Elastic Beanstalk 主控台中提供了修改正在執行環境組態的組態選項。要避免在終止環境的組態時遺失組態,您可以使用已儲存組態來儲存您的設定,並在之後套用至另一個環境。
若要將設定儲存於原始程式碼,您可以包含組態檔案。每次您建立環境或部署應用程式,組態檔案裡的設定就會套用。您也可以使用組態檔案來安裝套件、執行指令碼,並在部署期間執行其他執行個體自訂操作。
Elastic Beanstalk Tomcat 平台包含了反向代理程式,可將請求轉送給您的應用程式。您可使用組態選項來設定代理伺服器,從您原始程式碼中的資料夾提供靜態資產,以減輕應用程式的負擔。在進階的使用情境中,您可以在您的原始碼套件中,加入自己的 .conf 檔案,來擴展或完全覆寫掉 Elastic Beanstalk 的代理組態。
注意
Elastic Beanstalk 支援 nginx
2022 年 7 月 18 日,Elastic Beanstalk 已將所有以 Amazon Linux AMI (AL1) 為基礎的平台分支狀態設為已淘汰。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2。
您必須使用特定的架構,來將 Java 應用程式的套件,打包為 Web 應用程式封裝 (WAR) 格式的檔案。關於所需的架構,以及該架構與您專案目錄架構之間的關係,詳細資訊請參閱建構您的專案資料夾。
若要在同一個 Web 伺服器上執行多個應用程式,您可以將多個 WAR 檔案打包為單一原始碼套件。在包含多個 WAR 原始碼的套件中,取決於 WAR 的名稱,每個應用程式會在根路徑 (ROOT.war
在
中執行) 或根路徑之下直屬的路徑 (myapp
.elasticbeanstalk.com/app2.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 環境
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
容器選項
您可以指定這些平台特有的選項:
-
代理伺服器 – 要在您的環境執行個體上使用的代理伺服器。預設使用 nginx。
JVM 容器選項
Java 虛擬機器 (JVM) 中的堆積大小,決定了在記憶體回收-Xms option
) 和 JVM 堆積大小上限 (-Xmx
選項)。較大的初始堆積大小可在記憶體回收進行之前,讓更多的物件能夠建立。但這也表示記憶體回收器會花費更多的時間來壓縮堆疊。堆積大小的上限,指定了在繁重的作業進行期間擴充堆疊時,JVM 可以分配的最大記憶體容量。
注意
可用的記憶體取決於 Amazon EC2 執行個體類型。如需可供您 Elastic Beanstalk 環境使用之 EC2 執行個體類型的詳細資訊,請參閱適用於 Linux 執行個體的 Amazon Elastic Compute Cloud 使用者指南中的執行個體類型。
永久保存區是 JVM 堆積的一個區段,用來儲存類別定義與相關的中繼資料。若要修改永久保存區的大小,請在 JVM 永久保存區大小上限 (-XX:MaxPermSize
) 選項中輸入新的大小。此設定僅適用於 Java 7 和較舊的版本。此選項已在 JDK 8 中棄用,並由 MaxMetaspace Size (-XX:MaxMetaspaceSize
) 選項取代。
重要
JDK 17 移除了對 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 儲存貯體的執行個體設定檔。
-
Enable log file rotation to Amazon S3 (啟用 Amazon S3 的日誌檔案輪換) – 指定是否將應用程式 Amazon EC2 執行個體的日誌檔案複製到與應用程式關聯的 Amazon S3 儲存貯體。
靜態檔案
為改善效能,您可以使用 Static files (靜態檔案) 區段來設定代理伺服器,以為來自 Web 應用程式一組目錄中的靜態檔案 (例如 HTML 或影像) 提供服務。對於每個目錄,您可以設定目錄映射的虛擬路徑。代理伺服器收到位於指定路徑下的檔案請求時,會直接提供檔案而非將請求路由至您的應用程式。
如需使用組態檔案或 Elastic Beanstalk 主控台設定靜態檔案的詳細資訊,請參閱提供靜態檔案。
環境屬性
在 Environment Properties (環境屬性) 區段中,您可以針對執行應用程式的 Amazon EC2 執行個體來指定其上的環境資訊設定。環境屬性會以金鑰值對的形式傳到應用程式。
Tomcat 平台會針對 Tomcat 環境,定義名為 JDBC_CONNECTION_STRING
的佔位符屬性,用來將連線字串傳遞到外部資料庫。
注意
如果您將 RDS 資料庫執行個體連接到您的環境,請從 Elastic Beanstalk 提供的 Amazon Relational Database Service (Amazon RDS) 環境屬性動態建構 JDBC 連線字串。對於非使用 Elastic Beanstalk 佈建的資料庫執行個體,請只使用 JDBC_CONNECTION_STRING。
關於使用 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 command line options (JVM 命令列選項 -
JVM Options
- JVM command line 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 可提供許多組態選項讓您自訂環境。除了組態檔案,您也可以使用主控台、已儲存組態、EB CLI 或 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 Linux AMI (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
- Maximum JVM permanent generation size (JVM 永久保存區大小上限
-
-
aws:elasticbeanstalk:environment:proxy
- 除了選擇代理伺服器之外,還會設定回應壓縮。
下列組態檔案範例展示了使用代理命名空間組態選項。
範例 .ebextensions/tomcat-settings.config
option_settings:
aws:elasticbeanstalk:environment:proxy:
GzipCompression: 'true'
ProxyServer: nginx
若要部署 .ebextensions
設定檔,將其納入您的應用程式原始程式碼。對於單一應用程式,執行下列命令,將 .ebextensions
新增至壓縮的 WAR 檔案:
zip -ur
your_application.war
.ebextensions
有關需要多個 WAR 檔案的應用程式,請參閱 綁定多個用於 Tomcat 環境的 WAR 檔案 的詳細說明。