使用 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

获取部署 Open Liberty 应用程序的 Maven 插件的最简单和最简单的方法是使用 Azure CLI

通过使用 Azure CLI 登录到 Azure 帐户:

az login

按照说明完成登录过程。

从 MicroProfile Starter 创建示例应用

在本部分中,你将创建一个 Open Liberty 应用程序并将其在本地测试。

  1. 打开 Web 浏览器并导航到 MicroProfile Starter 站点。

    显示已选择 Open Liberty 运行时的 MicroProfile Starter 的屏幕截图。

  2. 使用下表中的值填充 MicroProfile Starter。

    字段
    groupId com.microsoft.azure.samples.openliberty
    artifactId openliberty-hello-azure
    MicroProfile 版本 MP 4.0
    Java SE 版本 Java 11
    MicroProfile 运行时 Open Liberty
    规范示例 指标,OpenAPI
  3. 选择“下载以下载项目。

  4. 解压缩存档文件,例如:

    unzip openliberty-hello-azure.zip
    

在本地环境中安装应用程序

  1. 将目录更改为已完成项目;例如:

    cd openliberty-hello-azure/
    
  2. 使用 Maven 生成项目,例如:

    mvn clean package
    
  3. 运行项目,例如:

    java -jar target/openliberty-hello-azure.jar
    
  4. 使用 Web 浏览器在本地浏览到 Web 应用并对其进行测试。 例如,如果有可用的 Curl,可以使用以下命令:

    curl http://localhost:9080/data/hello
    
  5. 应看到以下消息显示: Hello World

配置适用于 Azure 应用服务的 Maven 插件

在本部分中,你将配置 Open Liberty 项目pom.xml文件,以便 Maven 可以将应用部署到 Linux 上的Azure App 服务。

  1. 若要配置部署,请运行以下 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] ------------------------------------------------------------------------
  1. 修改 /src/main/liberty/config/ 目录下的 server.xml 文件,以便在 Azure Web 应用上运行应用程序。 在文件中,在标记中添加host="*"<httpEndpoint>行,如以下示例所示:

    <httpEndpoint id="defaultHttpEndpoint"
                  host="*"
                  httpPort="9080"
                  httpsPort="9443"/>
    
  2. 修改runtimepom.xml文件中的条目TOMCAT 8.5deploymentjava*.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。 为此,请按照以下步骤操作:

  1. 在之前使用的命令提示符或终端窗口中,如果对 pom.xml 文件进行了任何更改,请使用 Maven 重新生成 JAR 文件;例如

    mvn clean package
    
  2. 使用 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。 应该会看到以下屏幕。

Web 浏览器的屏幕截图,其中显示了 Open Liberty 的首页。

部署应用后,可以通过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”文档中心。

其他资源

有关本文中讨论的各项技术的详细信息,请参阅以下文章: