2016-03-01 133 views
4

我无法让我的Spring Boot站点在Azure Web实例上响应。我遵循Java app instructionsupload instructions。看起来IIS服务器正在接收请求,但是战争中的servlet没有响应。根据文件,有几个陷阱。特别是,web.config应该部署到wwwroot并指定java路径以及转发端口。我相信我已经介绍了这些基础 - 我的web.config粘贴在下面。无法将Spring Boot应用程序部署到Azure

我没有尝试从市场部署一个tomcat服务器,并且工作正常。当我替换我的war文件和web.config时,spring启动应用程序不起作用。

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

应用程序设置:

app settings

Azure的控制台信息(环境变量和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> 
+0

嗨,抱歉,但你能帮我吗? ,我上传了一个jar文件到/ webapp文件夹,但没有任何改变..我错过了一部分?我在哪里可以找到这个web.config文件?提前致谢 ! –

+1

正确的路径是网站/ wwwroot。在Azure门户中使用从Web App配置的ftp凭据。 web.config在这里解释:https://azure.microsoft.com/en-us/documentation/articles/web-sites-java-custom-upload/我的web.config基本上与springboot应用程序中的一样显示在该页面上。会发生什么是您启动运行您的jar的自定义Http模块。 – Brett

+0

非常感谢!另一个问题,我没有得到启动一个自定义的Http模块的一部分,我是Azure和这些东西的新手,顺便说一句,我也有一个SpringBoot应用程序..对不起,发送垃圾评论:( –

回答

5

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

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

+0

“脂肪罐”是关键。 “gradle build”就是这样做的。 Gradle命令不起作用:“gradle jar”和“gradle war”。再次感谢。 – Brett

+0

在https://azure.microsoft.com/en-us/documentation/articles/web-sites-java-custom-upload/#springboot中,您有web.config和有关如何部署它的说明。 @duffymo也许你想把它添加到你的答案。 – PhoneixS

+0

这不是我的答案。添加你自己的。我不使用Azure。 – duffymo

0

每我的经验,部署春天的简单方法在Azure上启动应用程序是创建一个webapp包括tomcat,并参考春季官方文档How to create a deployable war file创建一个war文件,然后部署我t通过FTP或Kudu控制台进入路径wwwroot\webapps

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

您的情况与SO线程Spring Boot War deployed to Tomcat类似。

2

我的2cents,希望这可以帮助别人不会放松他们几个小时的生活。我试图将春季启动REST服务部署到Azure API应用程序实例,并通过Kudo界面进行实施。

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

enter image description here

我编译从Maven项目在Eclipse,然后改名为战争文件ROOT.war WAR文件。使用Kudo控制台,我将war文件放在webapps文件夹下。请注意,我删除了/ webapps/ROOT /文件夹的内容。我不必添加一个web.config文件。我拖动了战争文件并上传了它。但是,如果将它拖到“蓝色框”上,它将解压缩战争文件,并导致服务失败。

enter image description here

如果你把战争文件的某处比蓝盒等,该文件不会解压缩。

enter image description here

我再重新启动该服务,等了一分钟,然后比能够通过Azure的URL来访问它。

+0

只是好奇,你如何设置春季启动属性'server.port'还是没关系? – Vangel

+0

在application.properties文件中:server.port = PORT_NUMBER – BgRva

+0

感谢您回复并回复:)我很惊讶,在azure文档中没有提到这个环境变量。我实际上强迫它达到8080,似乎工作。我这样的硬编码是错误的。你回答给我的想法是我正处于正确的轨道上,在你的帮助下,我已经能够获得“战争”格式。 – Vangel

相关问题