練習:將 Web 應用程式部署到 Azure App Service
現在您已在本機執行 Hello World JAVA 應用程式,您可以將它部署至 Azure App Service。
有多種方式可將您的應用程式部署至 Azure App Service。 本課程模組描述下列兩種方法:
- 設定及使用適用於 Azure App Service 的 Maven 外掛程式來部署 Web 應用程式。
- 使用 Azure CLI 手動建立必要的資源,然後部署。
使用適用於 Azure App Service 的 Maven 外掛程式是一種更容易開始使用的方式。 根據您的喜好設定,選取本單元開頭的相關按鈕。
使用適用於 Azure App Service 的 Maven 外掛程式。
Microsoft 提供適用於 Azure App Service 的 Maven 外掛程式,讓 Java 開發人員輕鬆將應用程式部署到 Azure。 透過使用此外掛程式,您可以輕鬆設定應用程式,並將其部署到 Azure。
設定適用於 Azure App Service 的 Maven 外掛程式
若要設定適用於 Azure App Service 的 Maven 外掛程式,請執行下列命令:
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.10.0:config
在執行命令後,提示字元會要求輸入一些選項,請依序輸入並選取合適的項目並進行設定。 輸入下列選項:
| 項目 | 輸入值 |
|---|---|
| 訂用帳戶 | 選擇您的 Azure 訂用帳戶 |
| 定義 OS 的值 | Linux |
| 定義定價層的值 | B1 |
| 定義 Java 版本的值 | JAVA 17 |
| Confirm (Y/N) (確認 (Y/N)) | 是 |
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.example:hello-java-azure >--------------------
[INFO] Building hello-java-azure 1.0-SNAPSHOT
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- azure-webapp:2.10.0:config (default-cli) @ hello-java-azure ---
Downloading from ossrh: https://oss.sonatype.org/content/repositories/snapshots/net/minidev/json-smart/maven-metadata.xml
Downloading from central: https://repo.maven.apache.org/maven2/net/minidev/json-smart/maven-metadata.xml
Downloading from shibboleth-repo: https://build.shibboleth.net/nexus/content/repositories/releases/net/minidev/json-smart/maven-metadata.xml
Downloaded from central: https://repo.maven.apache.org/maven2/net/minidev/json-smart/maven-metadata.xml (1.3 kB at 6.2 kB/s)
Create new run configuration (Y/N) [Y]: Y
Define value for OS [Linux]:
1: Windows
* 2: Linux
3: Docker
Enter your choice: 2
Define value for javaVersion [Java 17]:
* 1: Java 17
Enter your choice: 1
Define value for pricingTier [P1v2]:
1: B1
2: B2
3: B3
4: D1
5: EP1
6: EP2
7: EP3
8: F1
* 9: P1v2
10: P1v3
11: P2v2
12: P2v3
13: P3v2
14: P3v3
15: S1
16: S2
17: S3
18: Y1
Enter your choice: 1
Please confirm webapp properties
AppName : hello-java-azure-1731367782304
ResourceGroup : hello-java-azure-1731367782304-rg
Region : centralus
PricingTier : B1
OS : Linux
Java Version: Java 17
Web server stack: Java SE
Deploy to slot : false
Confirm (Y/N) [Y]: Y
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:02 min
[INFO] Finished at: 2024-11-11T15:30:21-08:00
[INFO] ------------------------------------------------------------------------
您應該會在 <plugins> 檔案的 區段中看到新的區段。
如想要變更資源群組名稱、執行個體名稱和部署位置,請變更 <resourceGroup>、<appName> 和 <region>。
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.10.0</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<resourceGroup>hello-java-azure-1731367782304-rg</resourceGroup>
<appName>hello-java-azure-1731367782304</appName>
<pricingTier>B1</pricingTier>
<region>centralus</region>
<runtime>
<os>Linux</os>
<javaVersion>Java 17</javaVersion>
<webContainer>Java SE</webContainer>
</runtime>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
編譯及部署到 Azure App Service
現在部署至 Azure App Service 的設定已完成,請使用下列命令再次編譯原始程式碼:
mvn clean package
編譯之後,請使用下列適用於 Azure Web Apps 命令的 Maven 外掛程式來部署您的應用程式:
mvn azure-webapp:deploy
加以部署後,您應該會看到下列輸出:
[INFO] Successfully deployed the artifact to https://hello-java-azure-1731367782304.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:47 min
[INFO] Finished at: 2024-11-11T15:39:47-08:00
[INFO] ------------------------------------------------------------------------
已部署應用程式的公用 URL 會顯示在輸出訊息中,如下列範例所示:Successfully deployed the artifact to https://hello-java-azure-1731367782304.azurewebsites.net
從命令列確認記錄資料流
若要存取記錄資料流,請執行下列 CLI 命令:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
您應該會看到類似下列範例的結果:
2024-11-07T18:14:37 Welcome, you are now connected to log-streaming service.
Starting Log Tail -n 10 of existing logs ----
/appsvctmp/volatile/logs/runtime/container.log
2024-11-07T18:06:05.3874260Z java.base/java.lang.Thread.run(Thread.java:1583)
2024-11-07T18:06:05.5635356Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol stop
2024-11-07T18:06:05.5636042Z INFO: Stopping ProtocolHandler ["http-nio-127.0.0.1-80"]
2024-11-07T18:06:05.6020767Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol stop
2024-11-07T18:06:05.6021438Z INFO: Stopping ProtocolHandler ["http-nio-169.254.129.3-80"]
2024-11-07T18:06:05.6423756Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol destroy
2024-11-07T18:06:05.6424403Z INFO: Destroying ProtocolHandler ["http-nio-127.0.0.1-80"]
2024-11-07T18:06:05.6893602Z Nov 07, 2024 6:06:05 PM org.apache.coyote.AbstractProtocol destroy
2024-11-07T18:06:05.6894311Z INFO: Destroying ProtocolHandler ["http-nio-169.254.129.3-80"]
2024-11-07T18:06:05.7849816Z Done processing signal SIGTERM. Exiting now!
Ending Log Tail of existing logs ---
Starting Live Log Stream ---
使用 Azure CLI
使用下列步驟來部署使用 Azure CLI:
如果尚未安裝 Azure CLI,請加以安裝。 如需詳細資訊,請參閱如何安裝 Azure CLI。
使用下列命令登入 Azure:
az login使用下列命令設定環境變數。 請務必將佔位符替換為表格中所描述的值。 本課程模組會用到這些值。
export RESOURCE_GROUP="appServiceWorkshop" export LOCATION="<region>" export APP_SERVICE_PLAN="myAppServicePlan" export WEBAPP_NAME="<web-app-name>" # Ensure this name is globally unique export JAR_FILE_PATH="<jar-file-path>" # Replace with the actual path to your JAR file下表描述占位符值:
變數 描述 <web-app-name>您 Web 應用程式的名稱。 此名稱在 Azure 中必須是唯一。 <region>您想要使用的 Azure 區域。 根據預設,您可使用 eastus,但建議您使用居住位置附近的區域。 您可輸入az account list-locations來查看可用區域的完整清單。<jar-file-path>此路徑是您 .jar 檔案儲存在專案目錄中的位置,例如,target/<jar-file>。 請確定您將此變數設定為專案目錄的完整路徑。 請使用下列命令來建立資源群組:
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION使用下列命令建立 App Service 方案:
az appservice plan create \ --name $APP_SERVICE_PLAN \ --resource-group $RESOURCE_GROUP \ --is-linux \ --sku B1使用下列命令建立 Web 應用程式:
az webapp create \ --resource-group $RESOURCE_GROUP \ --plan $APP_SERVICE_PLAN \ --name $WEBAPP_NAME \ --runtime "JAVA|17-java17"使用下列命令部署應用程式:
az webapp deploy \ --resource-group $RESOURCE_GROUP \ --name $WEBAPP_NAME \ --src-path $JAR_FILE_PATH\部署流程一般需要幾分鐘的時間。
瀏覽已部署的 JAVA Web 應用程式。 使用下列命令來產生部署 URL:
echo "Your website is at https://$(az webapp show \ --name $WEBAPP_NAME \ --resource-group $RESOURCE_GROUP \ --query defaultHostName \ --output tsv)"當您執行此命令時,它會輸出類似下列內容:
Your website is at https://<your-app-name>.azurewebsites.net選擇連結。 您應該會在畫面上看到 “Hello,JAVA on Azure!”。
恭喜! Web 應用程式已成功部署到 Azure App Service。
練習摘要
在此單元中,您已了解如何建立及封裝 Java Web 應用程式、如何使用適用於 Azure Web Apps 的 Maven Plugin,以及如何將應用程式部署到 Azure App Service。 這些步驟不僅適用於 JSF 應用程式,也適用於大部分的 Java Web 應用程式。