无法将Spring Boot应用程序部署到Azure

时间:2016-03-01 02:36:23

标签: java azure spring-boot

我无法让我的Spring Boot站点在Azure Web实例上做出响应。我已经关注了Java app instructionsupload instructions。似乎IIS服务器正在接收请求,但战争中的servlet没有响应。根据文档,有几个陷阱。特别是,web.config应该部署到wwwroot并指定java路径和转发端口。我相信我已经涵盖了这些基础 - 我的web.config被粘贴在下面。

我确实尝试过从市场部署tomcat服务器,并且运行正常。当我替换war文件和web.config时,spring boot应用程序不起作用。

一条有趣的信息是HTTP_PLATFORM_PORT环境变量似乎没有被定义。

应用设置:

app settings

Azure控制台信息(Env变量和Web.config):

D:\home\site\wwwroot

> dir
D:\home\site\wwwroot
Volume in drive D is Windows
 Volume Serial Number is 789E-197B

 Directory of D:\home\site\wwwroot

03/01/2016  02:14 AM    <DIR>          .
03/01/2016  02:14 AM    <DIR>          ..
02/29/2016  08:15 PM    <DIR>          bin
03/01/2016  01:49 AM         8,771,899 web-0.0.1-SNAPSHOT.war
03/01/2016  02:10 AM               496 web.config
03/01/2016  02:08 AM               496 web.custom.config
03/01/2016  01:54 AM             4,868 web.tomcat.config
03/01/2016  02:14 AM    <DIR>          webapps



> echo %java_home%
D:\home\site\wwwroot
D:\Program Files\Java\jdk1.8.0_60


> echo %http_platform_port%
D:\home\site\wwwroot
%http_platform_port%


> cat web.config
D:\home\site\wwwroot
<?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\web-0.0.1-SNAPSHOT.war&quot;">
    </httpPlatform>
  </system.webServer>
</configuration>

3 个答案:

答案 0 :(得分:5)

不应该是可执行的JAR而不是WAR吗?您可以在安装了JDK 8的情况下运行Spring Boot JAR,但是您需要一个Java EE应用服务器来部署WAR。

我不知道web.config文件是什么;我使用Cloud Foundry。我需要的只是一个JAR,一个用于配置的.yml文件和一个JDK。 Spring Boot JAR应该包含整个应用程序及其依赖项。我使用Maven来创建胖JAR。

答案 1 :(得分:2)

我的2点,希望这可以帮助那些没有放松几个小时的人。我试图将一个Spring Boot REST服务部署到Azure API App实例,并通过Kudo界面实现。

我正在将WAR文件部署到API App服务。 API App服务是使用Azure门户创建的,所有应用程序设置都保留为默认值。除了设置Java版本和Web容器之外,没有其他设置被更改。

enter image description here

我在eclipse中从maven项目编译了一个War文件,然后将war文件重命名为ROOT.war。使用Kudo控制台,我将war文件放在webapps文件夹下。请注意,我删除了/ webapps / ROOT /文件夹的内容。我没有添加web.config文件。我拖动了war文件并上传了它。但是,如果你把它拖过蓝框&#39;它将解压war文件,这导致服务失败。

enter image description here

如果将war文件放在蓝色框以外的某个位置,则不会解压缩该文件。

enter image description here

然后我重新启动了服务,等了一会儿,然后才能通过Azure网址访问它。

答案 2 :(得分:0)

根据我的经验,在Azure上部署Spring Boot应用程序的简单方法是创建一个包含tomcat的webapp,并参考spring官方文档How to create a deployable war file来创建war文件,然后将其部署到路径{{ 1}}通过FTP或Kudu控制台。

如果您有一个现有的Spring Boot Jar应用程序,您可以参考另一个spring文档Converting a Spring Boot JAR Application to a WAR将jar文件转换为war文件,然后将其部署在Azure WebApp上。

您的案例与SO帖子Spring Boot War deployed to Tomcat有所不同。