使用 Maven 部署 Open Liberty Micro Web 应用以Azure App 服务
在本快速入门中,你将使用适用于 Azure App 服务 Web 应用 的 Maven 插件将 Open Liberty 应用程序部署到 Linux 上的Azure App 服务。 如果要将应用的依赖项、运行时和配置整合到单个可部署项目中,你需要选择通过 Tomcat 和 WAR 文件进行 Java SE 部署。
如果没有 Azure 订阅,请在开始之前先创建一个免费帐户。
重要
虽然 microsoft 设计、运营和支持Azure App 服务,但你在其上运行的软件受其自己的支持计划支持和许可条款的约束。 有关本文中所述软件支持的详细信息,请查看本文中列出的相应软件的主页。 有关 Open Liberty 支持,请参阅 “Open Liberty 支持”页。 有关 WebSphere Liberty 的支持,请参阅 IBM 云支持。
先决条件
- Azure CLI,在本地或通过 Azure Cloud Shell。
- 一个受支持的 Java 开发工具包 (JDK)。 有关在 Azure 上进行开发时可供使用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack 上的 Java 支持。
- Apache Maven 版本 3。
登录 Azure CLI
获取部署 Open Liberty 应用程序的 Maven 插件的最简单和最简单的方法是使用 Azure CLI。
通过使用 Azure CLI 登录到 Azure 帐户:
az login
按照说明完成登录过程。
从 MicroProfile Starter 创建示例应用
在本部分中,你将创建一个 Open Liberty 应用程序并将其在本地测试。
打开 Web 浏览器并导航到 MicroProfile Starter 站点。
使用下表中的值填充 MicroProfile Starter。
字段 值 groupId com.microsoft.azure.samples.openliberty artifactId openliberty-hello-azure MicroProfile 版本 MP 4.0 Java SE 版本 Java 11 MicroProfile 运行时 Open Liberty 规范示例 指标,OpenAPI 选择“下载”以下载项目。
解压缩存档文件,例如:
unzip openliberty-hello-azure.zip
在本地环境中安装应用程序
将目录更改为已完成项目;例如:
cd openliberty-hello-azure/
使用 Maven 生成项目,例如:
mvn clean package
运行项目,例如:
java -jar target/openliberty-hello-azure.jar
使用 Web 浏览器在本地浏览到 Web 应用并对其进行测试。 例如,如果有可用的 Curl,可以使用以下命令:
curl http://localhost:9080/data/hello
应看到以下消息显示: Hello World
配置适用于 Azure 应用服务的 Maven 插件
在本部分中,你将配置 Open Liberty 项目pom.xml文件,以便 Maven 可以将应用部署到 Linux 上的Azure App 服务。
若要配置部署,请运行以下 Maven 命令:
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.3.0:config
出现提示时选择以下选项:
输入字段 输入/选择值 定义 OS 的值(默认值:Linux): 1. Linux 定义 javaVersion 的值(默认值:Java 8): 2. Java 11 定义 runtimeStack 的值(默认值:TOMCAT 8.5): 2. TOMCAT 8.5 确认(是/否) y
注意
尽管我们不使用 Tomcat,但目前仍需选择 TOMCAT 8.5
。 在详细配置期间,将值从 TOMCAT 8.5
中修改为 Java
。
此示例使用 Azure App 服务 Maven 插件的特定版本。 应考虑使用可用的最新版本。 可以通过访问站点(如 mvnrepository.com)来发现最新版本的数量。
此命令会生成类似于以下示例的输出:
[INFO] Scanning for projects...
[INFO]
[INFO] ---< com.microsoft.azure.samples.openliberty:openliberty-hello-azure >----
[INFO] Building openliberty-hello-azure 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:2.3.0:config (default-cli) @ openliberty-hello-azure ---
Auth type: AZURE_CLI
Default subscription:
Username:
[INFO] Subscription:
[INFO] It may take a few minutes to load all Java Web Apps, please be patient.
Define value for OS [Linux]:
1: Windows
* 2: Linux
3: Docker
Enter your choice:
Define value for javaVersion [Java 8]:
* 1: Java 8
2: Java 11
Enter your choice: 2
Define value for webContainer [Tomcat 8.5]:
1: Jbosseap 7
* 2: Tomcat 8.5
3: Tomcat 9.0
Enter your choice:
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:
Please confirm webapp properties
Subscription Id : ********-****-****-****-************
AppName : openliberty-hello-azure-1642075767899
ResourceGroup : openliberty-hello-azure-1642075767899-rg
Region : centralus
PricingTier : P1v2
OS : Linux
Java : Java 11
Web server stack: Tomcat 8.5
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.981 s
[INFO] Finished at: 2022-01-13T21:09:39+09:00
[INFO] ------------------------------------------------------------------------
修改 /src/main/liberty/config/ 目录下的 server.xml 文件,以便在 Azure Web 应用上运行应用程序。 在文件中,在标记中添加
host="*"
<httpEndpoint>
行,如以下示例所示:<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443"/>
修改
runtime
pom.xml文件中的条目TOMCAT 8.5
和deployment
java
从*.war
*.jar
中。 然后,将节添加到PORT
<configuration>
WEBSITES_PORT/> <appSettings>
部分,以及WEBSITES_CONTAINER_START_TIME_LIMIT
。 你的azure-webapp-maven-plugin
XML 条目将类似于以下示例:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.3.0</version> <configuration> <schemaVersion>v2</schemaVersion> <subscriptionId>********-****-****-****-************</subscriptionId> <resourceGroup>openliberty-hello-azure-1642075767899-rg</resourceGroup> <appName>openliberty-hello-azure-1642075767899</appName> <pricingTier>P1v2</pricingTier> <region>japaneast</region> <runtime> <os>Linux</os> <javaVersion>Java 11</javaVersion> <webContainer>java</webContainer> </runtime> <appSettings> <property> <name>PORT</name> <value>9080</value> </property> <property> <name>WEBSITES_PORT</name> <value>9080</value> </property> <property> <name>WEBSITES_CONTAINER_START_TIME_LIMIT</name> <value>600</value> </property> </appSettings> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.jar</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
将应用部署到 Azure
配置本文前面部分的所有设置后,即可将 Web 应用部署到 Azure。 为此,请按照以下步骤操作:
在之前使用的命令提示符或终端窗口中,如果对 pom.xml 文件进行了任何更改,请使用 Maven 重新生成 JAR 文件;例如:
mvn clean package
使用 Maven 将 Web 应用部署到 Azure;例如:
mvn azure-webapp:deploy
如果部署成功,你将看到以下输出。
[INFO] Scanning for projects...
[INFO]
[INFO] ---< com.microsoft.azure.samples.openliberty:openliberty-hello-azure >----
[INFO] Building openliberty-hello-azure 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:2.3.0:deploy (default-cli) @ openliberty-hello-azure ---
Auth type: AZURE_CLI
[INFO] Creating web app openliberty-hello-azure-1642075767899...
[INFO] Successfully created Web App openliberty-hello-azure-1642075767899.
[INFO] Trying to deploy external resources to openliberty-hello-azure-1642075767899...
[INFO] Successfully deployed the resources to openliberty-hello-azure-1642075767899
[INFO] Trying to deploy artifact to openliberty-hello-azure-1642075767899...
[INFO] Deploying (/Users/Downloads/openliberty-hello-azure/target/openliberty-hello-azure.jar)[jar] ...
[INFO] Successfully deployed the artifact to https://openliberty-hello-azure-1642075767899.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:11 min
[INFO] Finished at: 2022-01-13T21:29:50+09:00
[INFO] ------------------------------------------------------------------------
Maven 会将 Web 应用部署到 Azure。 如果 Web 应用或 Web 应用计划尚不存在,则会为你创建它。 可能需要等待数分钟,然后才能通过输出中显示的 URL 查看 Web 应用。 在 Web 浏览器中导航到该 URL。 应该会看到以下屏幕。
部署应用后,可以通过Azure 门户对其进行管理。
Web 应用将列在资源组中。
可以通过在 Web 应用的“概述”页上选择“浏览”来访问 Web 应用。 验证部署成功并且正在运行。
从正在运行的App 服务确认日志流
你可以查看(或“跟踪”)来自正在运行的应用服务的日志。 在站点代码中对 console.log
的任何调用都将显示在终端中。
az webapp log tail \
--resource-group openliberty-hello-azure-1642075767899-rg \
--name openliberty-hello-azure-1642075767899
清理资源
不再需要 Azure 资源时,请通过删除资源组来清理部署的资源。
- 在 Azure 门户上的左侧菜单中选择“资源组” 。
- 在“按名称筛选”字段中输入 microprofile,在本教程中创建的资源组应具有此前缀。
- 选择在本教程中创建的资源组。
- 在顶部菜单中选择“删除资源组”。
后续步骤
若要了解有关 MicroProfile 和 Azure 的详细信息,请继续访问“Azure 上的 MicroProfile”文档中心。
其他资源
有关本文中讨论的各项技术的详细信息,请参阅以下文章: