快速入门:在 Azure 应用服务中创建 Java 应用

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件将 Java Web 应用程序部署到 Azure 应用服务中的 Linux Tomcat 服务器。 应用服务提供高度可缩放、自修复的 Web 应用托管服务。 使用选项卡在 Tomcat、JBoss 或嵌入式服务器 (Java SE) 指令之间切换。

Screenshot of Maven Hello World web app running in Azure App Service.

如果 Maven 不是首选开发工具,请查看面向 Java 开发人员的类似教程:

如果没有 Azure 订阅,可在开始前创建一个试用帐户

1 - 使用 Azure cli

2 - 创建 Java 应用

在 cli 提示符下,执行以下 Maven 命令来创建一个名为 helloworld 的新应用:

mvn archetype:generate "-DgroupId=example.demo" "-DartifactId=helloworld" "-DarchetypeArtifactId=maven-archetype-webapp" "-DarchetypeVersion=1.4" "-Dversion=1.0-SNAPSHOT"

然后,将工作目录更改为项目文件夹:

cd helloworld

3 - 配置 Maven 插件

部署到 Azure 应用服务的过程会自动使用 Azure CLI 中的 Azure 凭据。 如果未在本地安装 Azure CLI,则 Maven 插件会使用 OAuth 或设备登录来进行身份验证。 有关详细信息,请参阅 Maven 插件的身份验证

运行接下来显示的 Maven 命令来配置部署。 此命令将帮助你设置应用服务操作系统、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. 对于“创建新的运行配置”,请键入 Y,然后按 Enter

  2. 对于“定义 OS 的值”,请键入 1(对于 Windows)或 2(对于 Linux),然后按 Enter

  3. 对于“定义 javaVersion 的值”,请键入 3(对于 Java 17),然后按 Enter

  4. 对于“定义 WebContainer 的值”,请键入 1(对于 Tomcat 10.0),然后按 Enter

  5. 对于“定义 pricingTier 的值”,请键入 9(对于 P1v2),然后按 Enter

  6. 对于“确认”,请键入 Y,然后按 Enter

    Please confirm webapp properties
    AppName : helloworld-1690440759246
    ResourceGroup : helloworld-1690440759246-rg
    Region : chinanorth2
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Tomcat 10.0
    Deploy to slot : false
    Confirm (Y/N) [Y]: 
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  13.069 s
    [INFO] Finished at: 2023-07-27T06:52:48Z
    [INFO] ------------------------------------------------------------------------
    

确认选择后,该插件会将上述插件元素和必需设置添加到项目的 pom.xml 文件,该文件将 Web 应用配置为在 Azure 应用服务中运行。

pom.xml 文件的相关部分应类似于以下示例。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

可以直接在 pom.xml 中修改应用服务的配置。 下表列出了一些常见配置:

properties 必选 说明 版本
<schemaVersion> false 指定配置架构的版本。 支持的值是:v1v2 1.5.2
<subscriptionId> false 指定订阅 ID。 0.1.0+
<resourceGroup> true 用于 Web 应用的 Azure 资源组。 0.1.0+
<appName> true Web 应用的名称。 0.1.0+
<region> false 指定要托管你的 Web 应用的区域;默认值为“chinanorth2”。 支持的区域部分中列出了所有有效区域。 0.1.0+
<pricingTier> false Web 应用的定价层。 生产工作负荷的默认值为 P1v2,而 B2 是建议用于 Java 开发/测试的最低值 。 有关详细信息,请参阅应用服务定价 0.1.0+
<runtime> false 运行时环境配置。 有关详细信息,请参阅配置详细信息 0.1.0+
<deployment> false 部署配置。 有关详细信息,请参阅配置详细信息 0.1.0+

有关配置的完整列表,请参阅插件参考文档。 所有 Azure Maven 插件共享一组常用配置。 有关这些配置,请参阅常用配置。 有关特定于应用服务的配置,请参阅 Azure Web 应用:配置详细信息

请注意 <appName><resourceGroup> 的值(在演示中相应地为 helloworld-1690440759246helloworld-1690440759246-rg)。 稍后会使用它们。

4 - 部署应用

pom.xml 文件中准备好所有配置后,只需要一个命令即可将 Java 应用部署到 Azure。

mvn package azure-webapp:deploy

在部署完成后,应用程序就会在 http://<appName>.chinacloudsites.cn/(在演示中为 http://helloworld-1690440759246.chinacloudsites.cn)处准备就绪。 在本地 Web 浏览器中打开 url,你应该会看到

Screenshot of Maven Hello World web app running in Azure App Service.

祝贺你! 现已将第一个 Java 应用部署到应用服务。

5 - 清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不需要这些资源,请从门户删除资源组,或在 Cli 中运行以下命令来这样做:

az group delete --name <your resource group name; for example: helloworld-1690440759246-rg> --yes

此命令可能需要花费一点时间运行。

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件将具有嵌入式服务器的 Java Web 应用程序部署到 Azure 应用服务。 应用服务提供高度可缩放、自修复的 Web 应用托管服务。 使用选项卡可在 Tomcat 或嵌入式服务器 (Java SE) 指令之间切换。

本快速入门使用 azure-webapp-maven-plugin 插件部署 Spring Boot 应用、嵌入式 Tomcat 或 Quarkus 应用。

注意

应用服务可以托管 Spring 应用。 对于需要所有 Spring 服务的 Spring 应用,请改用 Azure Spring Apps

如果 Maven 不是首选开发工具,请查看面向 Java 开发人员的类似教程:

如果没有 Azure 订阅,可在开始前创建一个试用帐户

1 - 使用 Azure 本地 Shell

2 - 获取示例应用

  1. 下载并提取默认 Spring Boot Web 应用程序模板。 运行 Spring CLI 命令 spring boot new my-webapp 时,会克隆此存储库。

    git clone https://github.com/rd-1-2022/rest-service my-webapp
    
  2. 将工作目录更改为项目文件夹:

    cd my-webapp
    

3 - 配置 Maven 插件

部署到 Azure 应用服务的过程会自动使用 Azure CLI 中的 Azure 凭据。 如果未在本地安装 Azure CLI,则 Maven 插件会使用 OAuth 或设备登录来进行身份验证。 有关详细信息,请参阅 Maven 插件的身份验证

运行接下来显示的 Maven 命令来配置部署。 此命令将帮助你设置应用服务操作系统、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
  1. 对于“创建新的运行配置”,请键入 Y,然后按 Enter

  2. 对于“定义 OS 的值”,请键入 2(对于 Linux),然后按 Enter

  3. 对于“定义 javaVersion 的值”,请键入 1(对于 Java 17),然后按 Enter

  4. 对于“定义 pricingTier 的值”,请键入 9(对于 P1v2),然后按 Enter

  5. 对于“确认”,请键入 Y,然后按 Enter

    Please confirm webapp properties
    AppName : <generated-app-name>
    ResourceGroup : <generated-app-name>-rg
    Region : chinanorth2
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Java SE
    Deploy to slot : false
    Confirm (Y/N) [Y]: y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  8.139 s
    [INFO] Finished at: 2023-07-26T12:42:48Z
    [INFO] ------------------------------------------------------------------------
    

确认选择后,该插件会将上述插件元素和必备设置添加到项目的 pom.xml 文件中,该文件将 Web 应用配置为在 Azure 应用服务中运行。

pom.xml 文件的相关部分应类似于以下示例。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

可以直接在 pom.xml 中修改应用服务的配置。 下表列出了一些常见配置:

properties 必选 说明 版本
<schemaVersion> false 指定配置架构的版本。 支持的值是:v1v2 1.5.2
<subscriptionId> false 指定订阅 ID。 0.1.0+
<resourceGroup> true 用于 Web 应用的 Azure 资源组。 0.1.0+
<appName> true Web 应用的名称。 0.1.0+
<region> false 指定要托管你的 Web 应用的区域;默认值为“chinanorth2”。 支持的区域部分中列出了所有有效区域。 0.1.0+
<pricingTier> false Web 应用的定价层。 生产工作负荷的默认值为 P1v2,而 B2 是建议用于 Java 开发/测试的最低值 。 有关详细信息,请参阅应用服务定价 0.1.0+
<runtime> false 运行时环境配置。 有关详细信息,请参阅配置详细信息 0.1.0+
<deployment> false 部署配置。 有关详细信息,请参阅配置详细信息 0.1.0+

有关配置的完整列表,请参阅插件参考文档。 所有 Azure Maven 插件共享一组常用配置。 有关这些配置,请参阅常用配置。 有关特定于应用服务的配置,请参阅 Azure Web 应用:配置详细信息

注意 <appName><resourceGroup> 的值。 稍后会使用它们。

4 - 部署应用

pom.xml 文件中准备好所有配置后,只需要一个命令即可将 Java 应用部署到 Azure。

  1. 使用以下命令生成 JAR 文件:

    mvn clean package
    
  2. 使用以下命令部署到 Azure:

    mvn azure-webapp:deploy
    

    如果部署成功,则你会看到以下输出:

    [INFO] Successfully deployed the artifact to https://<app-name>.chinacloudsites.cn
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  02:20 min
    [INFO] Finished at: 2023-07-26T12:47:50Z
    [INFO] ------------------------------------------------------------------------
    

部署完成后,应用程序即可在 http://<appName>.chinacloudsites.cn/ 准备就绪。 使用本地 Web 浏览器打开 URL http://<appName>.chinacloudsites.cn/greeting(记下 /greeting 路径),你应该会看到:

Screenshot of Spring Boot Hello World web app running in Azure App Service.

祝贺你! 现已将第一个 Java 应用部署到应用服务。

5 - 清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不需要这些资源,请从门户删除资源组,或在本地 Shell 中运行以下命令来这样做:

az group delete --name <your resource group name; for example: quarkus-hello-azure-1690375364238-rg> --yes

运行此命令可能需要一分钟时间。

后续步骤