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

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

如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

先决条件

登录 Azure CLI

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

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

az login

按照说明完成登录过程。

从 MicroProfile Starter 创建示例应用

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

创建 Java SE 8 基本项目

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

    Screenshot showing MicroProfile Starter with KumuluzEE runtime selected.

  2. 输入或选择字段,如下所示。

    字段
    groupId com.microsoft.azure.samples.kumuluzee
    artifactId kumuluzEE-hello-azure
    MicroProfile 版本 MP 3.2
    Java SE 版本 Java 8
    MicroProfile 运行时 KumuluzEE
    规范示例 指标,OpenAPI
  3. 选择 “下载 ”以下载项目。

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

    unzip kumuluzEE-hello-azure.zip
    

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

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

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

    mvn clean package
    
  3. 使用以下命令运行该应用程序:

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

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

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

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

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

  2. 在 pom.xml 文件的 <build> 部分,在 <plugins> 标记内插入以下 <plugin> 项。

    <build>
      <finalName>kumuluzEE-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): 2.Java 8
    确认(是/否) y

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

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ----< com.microsoft.azure.samples.kumuluzee:kumuluzEE-hello-azure >-----
    [INFO] Building kumuluzEE-hello-azure 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO]
    [INFO] --- azure-webapp-maven-plugin:1.10.0:config (default-cli) @ kumuluzEE-hello-azure ---
    1. linux [*]
    2. windows
    3. docker
    Enter index to use: 1
    Define value for javaVersion(Default: Java 8):
    1. Java 11
    2. Java 8 [*]
    Enter index to use: 2
    Please confirm webapp properties
    AppName : kumuluzEE-hello-azure-1601006602397
    ResourceGroup : kumuluzEE-hello-azure-1601006602397-rg
    Region : westeurope
    PricingTier : PremiumV2_P1v2
    OS : Linux
    RuntimeStack : JAVA 8-jre8
    Deploy to slot : false
    Confirm (Y/N)? : y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  44.223 s
    [INFO] Finished at: 2020-09-25T13:04:02+09:00
    [INFO] ------------------------------------------------------------------------
    
  4. <appSettings>节添加到<configuration>PORT部分WEBSITES_PORT,以及WEBSITES_CONTAINER_START_TIME_LIMIT。 XML 条目 azure-webapp-maven-plugin 将类似于以下示例:

    <plugin>
      <groupId>com.microsoft.azure</groupId>
      <artifactId>azure-webapp-maven-plugin</artifactId>
      <version>1.10.0</version>
      <configuration>
        <schemaVersion>V2</schemaVersion>
        <resourceGroup>microprofile</resourceGroup>
        <appName>kumuluzEE-hello-azure-1601006602397</appName>
        <pricingTier>P1v2</pricingTier>
        <region>japaneast</region>
        <runtime>
          <os>linux</os>
          <javaVersion>jre8</javaVersion>
          <webContainer>jre8</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://kumuluzee-hello-azure-1601006602397.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:23 min
[INFO] Finished at: 2020-09-25T13:13:14+09:00
[INFO] ------------------------------------------------------------------------

Maven 会将 Web 应用部署到 Azure。 如果 Web 应用或 Web 应用计划尚不存在,则会为你创建它。 可能需要等待数分钟,然后才能通过输出中显示的 URL 查看 Web 应用。 在 Web 浏览器中导航到该 URL。 应该会看到以下屏幕。

Screenshot of web browser showing KumuluzEE front page.

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

Web 应用将列在 微配置文件 资源组中,如以下屏幕截图所示:

Screenshot of Azure portal showing resource group contents.

可以通过在 Web 应用的“概述”页上选择“浏览”来访问 Web 应用。 验证部署成功并且正在运行。 应该会看到显示以下屏幕:

Screenshot of Azure portal showing the web app overview page.

确认正在运行的App 服务中的日志流

你可以查看(或“跟踪”)来自正在运行的应用服务的日志。 在站点代码中对 console.log 的任何调用都将显示在终端中。

az webapp log tail \
    --resource-group microprofile \
    --name kumuluzEE-hello-azure-1601006602397

Screenshot of terminal window showing the log stream.

清理资源

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

  • 在 Azure 门户上的左侧菜单中选择“资源组”。
  • 在“按名称筛选”字段中输入 microprofile,在本教程中创建的资源组应具有此前缀 。
  • 选择在本教程中创建的资源组。
  • 在顶部菜单中选择“删除资源组”。

后续步骤

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

其他资源

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