练习 - 将 Java Web 应用部署到 Azure 应用服务
本单元会将应用程序部署到 Azure 应用服务。
什么是 Azure 应用服务?
Azure 提供 Azure 应用服务作为平台即服务 (PaaS),以供运行 Tomcat。 它具有 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 应用服务的 Maven 插件
Microsoft 提供了 Azure 应用服务 Maven 插件,使 Java 开发人员可以更轻松地将应用程序部署到 Azure。 通过使用此插件,你可以轻松地配置应用程序并将其部署到 Azure。 执行以下命令,以使用 Azure 应用服务 Maven 插件。
配置 Azure 应用服务的 Maven 插件
若要配置 Azure 应用服务 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 |
执行命令后,将出现以下结果:
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 应用服务
现在,已完成用于部署到 Azure 应用服务的设置,请再次编译源代码:
mvn clean package
编译后,使用 Azure Web 应用 Maven 插件命令部署应用程序。 执行以下命令:
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 应用 Maven 插件,以及如何将应用程序部署到 Azure 应用服务。 这些步骤不仅适用于 JSF 应用程序,而且适用于大多数 Java Web 应用程序。