我尝试将springboot项目部署到Azure App Service中。 我创建了一个App Service并通过FTP上传了两个文件:test.war和web.config,如他们的教程所述。
的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 "%HOME%\site\wwwroot\test.war"">
</httpPlatform>
</system.webServer>
</configuration>
我将war文件上传到site / wwwroot并将web.config文件放在那里。
我的问题是:如何执行war文件?是否应该在我自动完成部署时发生?因为现在我得到的是服务不可用,Http Error 503。
由于
答案 0 :(得分:4)
@ItaiSoudry,根据web.config
文件的内容,您似乎希望使用嵌入式servlet容器(如嵌入式tomcat或jetty)来启动spring boot Web应用程序。
假设您使用的IDE是Eclipse,您需要将Spring启动项目导出为可运行的jar文件,而不是war文件,请参见下图。
注意:Launch configuration
应该选择主函数包含的类SpringApplication.run
。
同时,您需要通过%HTTP_PLATFORM_PORT%
文件中的参数--server.port=%HTTP_PLATFORM_PORT%
配置支持web.config
Azure App服务的侦听端口,或者设置类{{3}的端口使用值System.getenv("HTTP_PLATFORM_PORT")
。
以下是web.config
--server.port=%HTTP_PLATFORM_PORT%
的示例。
<?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\test.jar"">
</httpPlatform>
</system.webServer>
</configuration>
如果要部署war文件,则需要在Azure门户上配置应用服务的ApplicationSettings
,然后将war文件上传到路径wwwroot/webapps
。
作为参考,请参阅以下文件。