練習 - 將 Java Web 應用程式部署到 Azure App Service
在此單元中,您會將應用程式部署到 Azure App Service。
什麼是 Azure App Service?
Azure 提供 Azure App Service 作為執行 Tomcat 的平台即服務 (PaaS)。 其能提供 Windows 與 Linux 環境、安全性、負載平衡、自動調整與 DevOps 整合。 您可以將 OS 與 Tomcat 管理交給 Azure,並專心建置應用程式。
取得範例 JSF 應用程式
若要部署 Java Web 應用程式,您可以從 GitHub 取得 PrimeFaces JavaServer Faces (JSF) Web 應用程式,如這裡所示:
git clone https://github.com/yoshioterada/Deploy-PrimeFaces-JSF-Web-App-on-Tomcat-9.0
在您複製後,您將會在目錄中看到下列檔案:
Deploy-PrimeFaces-JSF-Web-App-on-Tomcat-9.0
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── microsoft
│ └── azure
│ └── samples
│ ├── controller
│ │ └── TodoListController.java
│ ├── dao
│ │ ├── ItemManagement.java
│ │ └── TodoItemManagementInMemory.java
│ └── model
│ └── TodoItem.java
└── webapp
├── META-INF
│ └── context.xml
├── WEB-INF
│ ├── beans.xml
│ ├── classes
│ │ └── logging.properties
│ ├── faces-config.xml
│ └── web.xml
└── index.xhtml
適用於 Azure App Service 的 Maven 外掛程式
Microsoft 提供適用於 Azure App Service 的 Maven 外掛程式,讓 Java 開發人員輕鬆將應用程式部署到 Azure。 透過使用此外掛程式,您可以輕鬆設定應用程式,並將其部署到 Azure。 執行下列命令以使用適用於 Azure App Service 的 Maven 外掛程式。
設定適用於 Azure App Service 的 Maven 外掛程式
若要設定適用於 Azure App 服務 的 Maven 外掛程式,請執行下列命令:
mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config
在命令之後,提示字元會出現一些問題,因此請輸入並選取適當的項目並加以設定。 輸入下列選項:
項目 | 輸入值 |
---|---|
訂用帳戶 | 選擇您的 Azure 訂用帳戶 |
定義 OS 的值 | 1: Linux |
定義定價層的值 | P1v2 |
定義 Java 版本的值 | 1: Java 8 或 2: Java 11 |
定義執行階段堆疊的值 | 3: TOMCAT 9.0 |
確認 (Y/N) | Y |
執行命令之後,這些結果隨即出現:
mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] -----------< com.microsoft.azure.samples:azure-javaweb-app >------------
[INFO] Building azure-javaweb-app Maven Webapp 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:1.12.0:config (default-cli) @ azure-javaweb-app ---
Available subscriptions:
* 1: My Subscription (********-****-****-****-************)
Please choose a subscription [My Subscription]: [Enter]
[INFO] It may take a few minutes to load all Java Web Apps, please be patient.
[WARNING] There are no Java Web Apps in current subscription, please follow the following steps to create a new one.
Define value for OS [Linux]:
* 1: Linux
2: Docker
3: Windows
Enter your choice:
Define value for pricingTier [P1v2]:
1: B1
2: B2
3: B3
4: D1
5: F1
* 6: P1v2
7: P2v2
8: P3v2
9: S1
10: S2
11: S3
Define value for javaVersion [Java 8]:
* 1: Java 8
2: Java 11
Enter your choice: 1
Define value for runtimeStack:
1: Jbosseap 7.2
* 2: Tomcat 8.5
3: Tomcat 9.0
Enter your choice: 3
Please confirm webapp properties
Subscription Id : aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
AppName : azure-javaweb-app-1604982052600
ResourceGroup : azure-javaweb-app-1604982052600-rg
Region : westeurope
PricingTier : PremiumV2_P1v2
OS : Linux
Java : Java 8
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: y
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 37.656 s
[INFO] Finished at: 2020-10-01T17:24:02+09:00
[INFO] ------------------------------------------------------------------------
您會在 pom.xml
檔案的 <plugins>
區段中看到新的區段。
如想要變更資源群組名稱、執行個體名稱和部署位置,請變更 <resourceGroup>
、<appName>
和 <region>
。
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>1.12.0</version>
<configuration>
<schemaVersion>V2</schemaVersion>
<subscriptionId>********-****-****-****-************</subscriptionId>
<resourceGroup>azure-javaweb-app</resourceGroup>
<appName>azure-javaweb-app-1601463451101</appName>
<pricingTier>P1v2</pricingTier>
<region>japaneast</region>
<runtime>
<os>linux</os>
<javaVersion>Java 8</javaVersion>
<webContainer>TOMCAT 9.0</webContainer>
</runtime>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.war</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
</plugins>
編譯及部署到 Azure App Service
在部署到 Azure App Service 的設定完成後,請再編譯一次原始程式碼:
mvn clean package
編譯之後,請使用適用於 Azure 的 Maven 外掛程式 Web Apps 命令來部署您的應用程式。 執行以下 命令:
mvn azure-webapp:deploy
部署完成後,會輸出下列訊息。
[INFO] Successfully deployed the artifact to https://azure-javaweb-app-1601463451101.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:15 min
[INFO] Finished at: 2020-11-19T15:55:55+09:00
[INFO] ------------------------------------------------------------------------
已部署應用程式的公用 URL 會顯示在 Successfully deployed the artifact to
行中。 使用瀏覽器存取 URL,如下列範例所示:
https://azure-javaweb-app-1601463451101.azurewebsites.net
從命令列確認記錄資料流
若要存取記錄資料流,請執行下列 CLI 命令:
az webapp log tail -g azure-javaweb-app -n azure-javaweb-app-1601463451101
您會得到下列結果:
練習摘要
在此單元中,您已了解如何建立及封裝 Java Web 應用程式、如何使用適用於 Azure Web Apps 的 Maven Plugin,以及如何將應用程式部署到 Azure App Service。 這些步驟不僅適用於 JSF 應用程式,也適用於大部分的 Java Web 應用程式。