我无法让我的Spring Boot站点在Azure Web实例上做出响应。我已经关注了Java app instructions和upload instructions。似乎IIS服务器正在接收请求,但战争中的servlet没有响应。根据文档,有几个陷阱。特别是,web.config应该部署到wwwroot并指定java路径和转发端口。我相信我已经涵盖了这些基础 - 我的web.config被粘贴在下面。
我确实尝试过从市场部署tomcat服务器,并且运行正常。当我替换war文件和web.config时,spring boot应用程序不起作用。
一条有趣的信息是HTTP_PLATFORM_PORT环境变量似乎没有被定义。
应用设置:
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 "%HOME%\site\wwwroot\web-0.0.1-SNAPSHOT.war"">
</httpPlatform>
</system.webServer>
</configuration>
答案 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容器之外,没有其他设置被更改。
我在eclipse中从maven项目编译了一个War文件,然后将war文件重命名为ROOT.war。使用Kudo控制台,我将war文件放在webapps文件夹下。请注意,我删除了/ webapps / ROOT /文件夹的内容。我没有添加web.config文件。我拖动了war文件并上传了它。但是,如果你把它拖过蓝框&#39;它将解压war文件,这导致服务失败。
如果将war文件放在蓝色框以外的某个位置,则不会解压缩该文件。
然后我重新启动了服务,等了一会儿,然后才能通过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有所不同。