当前位置: 首页 > 知识库问答 >
问题:

在Azure App Service上部署Spring Boot jar

水瀚漠
2023-03-14

我在获取 Spring 启动 API 以在 Azure 应用服务上运行时遇到问题。我一直在 https://learn.microsoft.com/en-us/java/azure/spring-framework/deploy-spring-boot-java-web-app-on-azure 上遵循微软指南,但到目前为止还没有运气。

应用程序确实启动了(我可以在日志文件中看到应用程序启动),但是对应用程序服务url的http请求总是超时。

我读过 Azure 应用服务只拾取在端口 80 或 8080 上运行的嵌入式雄猫服务器,但也没有运气。

该应用程序部署在www根目录和适当的web中。config也已部署。

我尝试过在有或没有应用程序服务器的情况下运行应用程序服务(Tomcat和Jetty,这是不需要的,因为服务器嵌入在应用程序中),但两种方法都失败了。

我是否缺少其他配置部分?或者这可能与我在azure上使用的计划类型有关?也许资源有问题?

有什么指示吗?

感谢

伯特

共有3个答案

吴刚毅
2023-03-14

结合官方教程中的步骤和您的实际情况,我提供以下检查点:

要点1:请使用mvn包pom所在的目录中构建JAR包。找到xml文件。

第2点:请确保web.config中配置的jar包名称与上传的jar包名称相同。

web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
        arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\<your project name>&quot;">
    </httpPlatform>
  </system.webServer>
</configuration>

要点 3:请使用 FTP 将 jar 文件web.config 发布到 KUDU 上的 D:\home\site\wwwroot\ 目录。

第4点:请确保< code>ApplicationSettings与您的项目相匹配,例如< code>jdk版本、< code>tomcat版本。

如果要部署war文件,需要在Azure门户上配置应用程序服务的ApplicationSettings,然后将war文件上载到路径D:\home\site\wwwroot\webapps

此外,您可以检查KUDU上的日志文件:https://

作为参考,请参阅下面的文档和线程。

1.在Azure应用服务中配置web应用

2.在Azure应用服务中创建JavaWeb应用

3.将Springboot部署到Azure应用服务。

希望对你有帮助。

仲孙宇定
2023-03-14

为了让Springboot应用程序运行,您需要上传JAR文件并添加web。配置文件。

要将您尝试运行的内容传达给服务,您需要将web.config文件添加到应用程序服务的site\wwwroot文件夹中。因为您已经创建了web.config文件,所以使用Maven添加以下内容,并获得一个动态包含在包中的项目/发布。

<build>
    <resources>
        <resource>
            <directory>${project.basedir}/wwwroot</directory>
            <filtering>true</filtering>
            <targetPath>${basedir}/target</targetPath>
        </resource>
    </resources>
</build> 

现在放置jar文件和web。配置。

您只需检查一次是否创建了web.config文件,如下所示,

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
        </handlers>
        <httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
        arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\@project.artifactId@-@project.version@.jar&quot;">
        </httpPlatform>
    </system.webServer>
</configuration>
陈宜修
2023-03-14

请使用Spring和azure社区给出的以下步骤在azure上部署Spring启动应用程序:

1)进入您有pom文件的应用程序文件夹并运行

确保以下插件应位于 POM 文件中

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-spring-boot</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- tag::actuator[] -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- end::actuator[] -->
        <!-- tag::tests[] -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- end::tests[] -->
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
        <maven.build.timestamp.format>yyyyMMddHHmmssSSS</maven.build.timestamp.format>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.microsoft.azure</groupId>
                <artifactId>azure-webapp-maven-plugin</artifactId>
                <version>0.1.5</version>
                <configuration>
                    <authentication>
                        <serverId>azure-auth</serverId>
                    </authentication>
                    <resourceGroup>maven-plugin</resourceGroup>
                    <appName>maven-web-app-${maven.build.timestamp}</appName>
                    <region>westus</region>
                    <javaVersion>1.8</javaVersion>
                    <deploymentType>ftp</deploymentType>
                    <stopAppDuringDeployment>true</stopAppDuringDeployment>
                    <resources>
                        <resource>
                            <directory>${project.basedir}/target</directory>
                            <targetPath>/</targetPath>
                            <includes>
                                <include>*.jar</include>
                            </includes>
                        </resource>
                        <resource>
                            <directory>${project.basedir}</directory>
                            <targetPath>/</targetPath>
                            <includes>
                                <include>web.config</include>
                            </includes>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

注意:确保您已在azure上创建了与
maven-web-app-${maven.build.timestamp}同名的Web应用程序

现在在根上创建名为“web.config”的文件,并在web.comfig中添加你的jar

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
        </handlers>
        <httpPlatform processPath="%JAVA_HOME%\bin\java.exe"
                      arguments="-Djava.net.preferIPv4Stack=true -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%\site\wwwroot\azure-rest-example-app-0.1.0.jar&quot;">
        </httpPlatform>
    </system.webServer>
</configuration>
    < li>mvn清洁包装 < li>mvnSpring启动:运行

确保应用程序在本地正常工作。

现在,如果您有多个帐户与您的id关联,请使用以下命令

>

  • az登录

    az帐户列表

    az账户集-订阅XXX-XXX-XXX-XXXXXXXXXXXX

    现在,您需要创建“Microsoft Azure 中的服务主体”

    1) 打开终端窗口。

    2) 通过键入 az login 使用 Azure CLI 登录到你的 Azure 帐户

    3)通过键入az ad sp Create-for-RBAC-name " vaquarkhan "-password " yourpassword "创建Azure服务主体(vaquarkhan是用户名,your password是服务主体的密码)。

    az ad sp create-for-RBAC-name“app-name”-password“password”

    注意:如果你得到错误需要改变设置-

    " azure . graph RBAC . models . graph _ error。GraphErrorException:不允许来宾用户执行此操作。

    如果成功

    Azure应打印出类似于以下内容的JSON响应:

    {
       "appId": "XXX-XXXX-XXX-XXX-XXXX",
       "displayName": "vaquarkhan",
       "name": "http://vaquarkhan",
       "password": "yourpassword",
       "tenant": "YYY-YYYY-YYY-YYY-YYYY"
    }
    

    将Maven配置为使用Azure服务主体

    1)在文本编辑器中打开Mavensettings.xml文件(通常可以在 /etc/maven/settings.xml或$HOME/. m2/settings.xml找到)。

    <?xml version="1.0" encoding="UTF-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                              http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository/>
      <interactiveMode/>
      <usePluginRegistry/>
      <offline/>
      <pluginGroups/>
    
      <servers>
       <server>
         <id>azure-auth</id>
          <configuration>
             <client>ur key</client>
             <tenant>ur tenant</tenant>
             <key>YOUR PASSWORD</key>
             <environment>AZURE</environment>
          </configuration>
       </server>
    </servers>
    
    
      <proxies/>
    
      <profiles>
        <profile>
          <id>hwx</id>
          <repositories>
            <repository>
              <id>hwx</id>
              <name>hwx</name>
              <url>http://nexus-private.hortonworks.com/nexus/content/groups/public/</url>
            </repository>
          </repositories>
        </profile>
      </profiles>
    
    
      <mirrors>
        <mirror>
          <id>public</id>
          <mirrorOf>*</mirrorOf>
          <url>http://nexus-private.hortonworks.com/nexus/content/groups/public/</url>
        </mirror>
      </mirrors>
    
      <activeProfiles/>
    </settings>
    

    2)将本教程上一节中的Azure服务主体设置添加到settings.xml文件中的集合中,如下所示:

    <servers>
       <server>
         <id>azure-auth</id>
          <configuration>
             <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client>
             <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant>
             <key>pppppppp</key>
             <environment>AZURE</environment>
          </configuration>
       </server>
    </servers>
    

    3) 保存并关闭设置。xml文件。

    构建应用并将其部署到Azure

    1)运行以下命令

    >

  • mvn azure webapp:部署
  • 部署web应用后,请访问Azure门户进行管理。它将在App Services中列出。

    单击应用程序。从那里,您的Web应用程序的面向公共的URL将在概述部分中列出

    确定 Web 应用的 URL 您可以单击此链接访问 Spring Boot 应用程序并与之交互。

    Azure maven插件文档

    • https://learn.microsoft.com/en-us/java/api/overview/azure/maven/azure-webapp-maven-plugin/readme

    注意:网站名称必须是全球唯一的,它使用应用程序名称生成,请确保名称应该是唯一的。

  •  类似资料:
    • 我有个问题。我试图在WildFly服务器上部署一个应用程序。在尝试这样做时,我得到了一个错误,如下所示: 我搜索了一个解决方案,我找到了一个--我应该将jar添加到...但这无济于事!Wildfly正在尝试(当然没有任何努力)部署,但它失败了。然后我试图部署我的应用程序--同样的错误出现了:/ 干杯并感谢你事先给出的任何答案。

    • 当我试图在带有Jenkins和maven的weblogic 12c集群上重新部署EAR时,总是会出现以下错误: 我已经添加了

    • Python 2.7 64bit Django 1.3 WAMP 2.2(Apache 2.2.22)64位 mod_wsgi3.4 64位 Windows 7 64bit 由Django的start项目生成。位于默认 /myapp/myapp/wsgi.py 鉴于上述上下文,无法在WAMP上部署Django应用程序。 “Hello World”测试wsgi应用程序运行良好,因此我已确认mod_w

    • 我最近完成了我的第一个laravel站点,但现在我被部署卡住了。这对我来说是一个全新的概念。我的网络空间是由1 我尝试过几次教程,但似乎都不管用。基于此处的教程:将Laravel项目上载到Web服务器 我的服务器文件夹结构如下: (注意当第一次FTping我的服务器,没有www或html_docs,只有一个日志文件夹)。 在www上,我的索引。php更改为: 在laravel/引导/路径中。我更改

    • 我尝试在weblogic服务器上部署使用Spring apache cxf的应用程序。我一直收到这条错误消息: javax。servlet。ServletException:Servlet类:org。阿帕奇。cxf。运输servlet。CXFServlet’不实现javax。servlet。weblogic上的Servlet。servlet。内部的StubSecurityHelper$Servle

    • 当我试图将我的流星应用程序部署到Heroku时,它在引导时崩溃了。

    • TiCDC 是一款 TiDB 增量数据同步工具,本文介绍如何使用 TiDB Operator 在 Kubernetes 上部署 TiCDC。 前置条件 TiDB Operator 部署完成。 全新部署 TiDB 集群同时部署 TiCDC 参考 在标准 Kubernetes 上部署 TiDB 集群进行部署。 在现有 TiDB 集群上新增 TiCDC 组件 编辑 TidbCluster Custom

    • 本文介绍如何在 Kubernetes 上部署 TiFlash。 前置条件 TiDB Operator 部署完成。 全新部署 TiDB 集群同时部署 TiFlash 参考 在标准 Kubernetes 上部署 TiDB 集群进行部署。 在现有 TiDB 集群上新增 TiFlash 组件 编辑 TidbCluster Custom Resource: kubectl edit tc ${cluster