使用 Maven 将 Payara Micro Web 应用部署到 Azure 应用服务

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件 将 Payara Micro 应用程序部署到 Linux上的 Azure 应用服务 。 如果要将应用的依赖项、运行时和配置合并到单个可部署项目中,请通过 Tomcat 和 WAR 文件 选择 Java SE 部署。

如果没有 Azure 订阅,请在开始之前创建 免费帐户

先决条件

  • Azure CLI,可以在本地使用或者通过 Azure Cloud Shell 使用。
  • 支持的 Java 开发工具包(JDK)。 有关在 Azure 上进行开发时可用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack上的 Java 支持。
  • Apache Maven版本 3。

登录到 Azure CLI

使用 Azure CLI是让 Maven 插件部署 Payara Micro 应用程序的最简单方法。

使用 Azure CLI 登录到 Azure 帐户:

az login

按照说明完成登录过程。

从 MicroProfile Starter 创建示例应用

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

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

    屏幕截图显示了选择了 Payara Micro 运行时的 MicroProfile Starter。

  2. 根据下表输入或选择字段值:

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

  4. 使用以下命令解压缩存档文件:

    unzip payaraMicro-hello-azure.zip
    

在本地环境中运行应用程序

  1. 使用以下命令将目录更改为已完成的项目:

    cd payaramicro-hello-azure/
    
  2. 使用以下 Maven 命令生成项目:

    mvn clean package
    
  3. 使用以下命令运行项目:

    java -jar target/payaramicro-hello-azure-microbundle.jar
    
  4. 通过使用 Web 浏览器本地浏览来测试 Web 应用。 例如,如果 curl 可用,则可以使用以下命令:

    curl http://localhost:8080/data/hello
    
  5. 应会看到以下消息:Hello World

为 Azure 应用服务配置 Maven 插件

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

  1. 在代码编辑器中打开 pom.xml 文件。

  2. pom.xml 文件的 <build> 部分中,在 <plugins> 标记中插入以下 <plugin> 条目:

    <build>
      <finalName>payaramicro-hello-azure</finalName>
      <plugins>
        <plugin>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-webapp-maven-plugin</artifactId>
            <version>1.10.0</version>
        </plugin>
      </plugins>
    </build>
    
  3. 通过运行以下 Maven 命令配置部署:

    mvn azure-webapp:config
    

    出现提示时,请选择以下选项:

    输入字段 输入/选择值
    定义 OS 的值(默认值:Linux): 1. linux
    定义 javaVersion 的值(默认值:Java 8): 1. Java 11
    定义 runtimeStack 的值(默认值:TOMCAT 8.5): TOMCAT 8.5
    确认 (Y/N) y

    [!注意] 尽管我们不使用 Tomcat,此时仍应选择 TOMCAT 8.5。 在详细配置过程中,将值从 TOMCAT 8.5 修改为 Java11

    此命令生成类似于以下示例的输出:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] --< com.microsoft.azure.samples.payaramicro:payaramicro-hello-azure >---
    [INFO] Building payaramicro-hello-azure 1.0-SNAPSHOT
    [INFO] --------------------------------[ war ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:1.10.0:config (default-cli) @ payaramicro-hello-azure ---
    Define value for OS(Default: Linux):
    1. linux [*]
    2. windows
    3. docker
    Enter index to use:
    Define value for javaVersion(Default: Java 8):
    1. Java 11
    2. Java 8 [*]
    Enter index to use: 1
    Define value for runtimeStack(Default: TOMCAT 8.5):
    1. TOMCAT 9.0
    2. TOMCAT 8.5 [*]
    Enter index to use:
    Please confirm webapp properties
    AppName : payaramicro-hello-azure-1601009217863
    ResourceGroup : payaramicro-hello-azure-1601009217863-rg
    Region : westeurope
    PricingTier : PremiumV2_P1v2
    OS : Linux
    RuntimeStack : TOMCAT 8.5-java11
    Deploy to slot : false
    Confirm (Y/N)? : y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  22.302 s
    [INFO] Finished at: 2020-09-25T13:47:11+09:00
    [INFO] ------------------------------------------------------------------------
    
  4. runtime 项从 TOMCAT 8.5 修改为 java11,将 deployment 项从 *.war 修改为 *.jar。 然后将 <appSettings> 节添加到 PORTWEBSITES_PORTWEBSITES_CONTAINER_START_TIME_LIMIT<configuration> 节。 azure-webapp-maven-plugin 的 XML 条目应类似于以下示例:

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>1.9.1</version>
      <configuration>
        <schemaVersion>V2</schemaVersion>
        <resourceGroup>microprofile</resourceGroup>
        <appName>payaramicro-hello-azure-1591860934798</appName>
        <pricingTier>P1v2</pricingTier>
        <region>japaneast</region>
        <runtime>
          <os>linux</os>
          <javaVersion>java11</javaVersion>
          <webContainer>java11</webContainer>
        </runtime>
        <appSettings>
          <property>
            <name>PORT</name>
            <value>8080</value>
          </property>
            <property>
            <name>WEBSITES_PORT</name>
            <value>8080</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] Successfully deployed the artifact to https://payaramicro-hello-azure-1601009217863.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:58 min
[INFO] Finished at: 2020-09-25T13:55:13+09:00
[INFO] ------------------------------------------------------------------------

Maven 将 Web 应用部署到 Azure。 如果 Web 应用或 Web 应用计划尚不存在,则会为你创建。 在输出中显示的 URL 上显示 Web 应用可能需要几分钟时间。 在浏览器中访问 URL。 应看到以下屏幕:

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

部署 Web 应用后,可以通过 Azure 门户对其进行管理。

您的 web 应用列在 MicroProfile 资源组中。

可以通过在 Web 应用的概述页中选择浏览来访问 Web 应用。 验证部署是否成功并正在运行。

确认正在运行的应用程序服务的日志流

可以从正在运行的应用程序服务查看日志的全部内容,也可以使用 tail 查看日志的结束部分。 站点代码中对 console.log 的任何调用都显示在终端中。

az webapp log tail \
    --resource-group microprofile \
    --name payaramicro-hello-azure-1601009217863

显示日志流的终端窗口的屏幕截图。

清理资源

不再需要 Azure 资源时,通过删除资源组来清理部署的资源。

  1. 在 Azure 门户中,从菜单中选择 资源组
  2. 按名称筛选字段中输入 microprofile。 在本教程中创建的资源组应具有此前缀。
  3. 选择在本教程中创建的资源组。
  4. 从菜单中选择 删除资源组

后续步骤

若要了解有关 MicroProfile 和 Azure 的详细信息,请继续访问 Azure 文档中心的 MicroProfile。

其他资源

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