我有一个我在Azure App Service实例上运行的Java Web应用程序。为了部署它,我使用了一个带有.war文件的Bitbucket repo。当我向该repo提交一个新的.war文件时,它应该由该服务自动部署。但是,通常情况下,我必须通过FTP重新启动,重新部署甚至上传.war文件,才能成功完成部署。
我有一个驻留在此服务中的Jetty实例,因此我的.war
文件名为ROOT.war
。 AFAIK,当上传到服务时(无论是通过Bitbucket还是FTP),这个.war文件应该被解压缩到同一个目录,即/site/wwwroot/webapps
。就我而言,这不会发生。该网络应用程序使用ROOT.war
文件单独位于/site/wwwroot/webapps
内。每隔一段时间,我会在ROOT
下找到一个/site/wwwroot/webapps
文件夹,其中包含两个默认文件index.jsp
和background.png
。我没有任何想法导致ROOT
文件夹与这些默认文件一起出现的原因。我唯一的线索是,在我更改环境变量后,它发生了几次。
在ROOT
文件夹显示空服务器文件后,我可以重新部署应用程序的唯一方法是通过FTP或门户网站提供的控制台手动删除此ROOT
文件夹,只有这样我的重新部署请求才能成功使用我的网络应用程序。
所以,如果不够清楚,我的问题是这里发生了什么?我无法从我面临的行为中做出任何改变。我觉得我盲目地使用这个Azure服务,并且在出现问题时无法解决任何问题。是否有任何资源可以解释部署Web应用程序时后台发生的情况?
答案 0 :(得分:1)
我遇到了同样的问题。解决方案是在部署之后调用端点。
四步非常重要,并启动您之前提到的流程(自动部署)。
我失去了很多时间来弄清问题是什么。
答案 1 :(得分:0)
因此,Azure API应用程序是PAAS,而不是IAAS服务。您可以访问yoursite.scm.azurewebsites.net
来访问PaaS平台,您可以在其中浏览CMD或Powershell中的文件系统,您可以看到正在运行的进程。这可能感觉你在一个虚拟机上,但你不是。您在此处看到的数据将被复制到您的API App实例中。您可以通过扩展API应用程序来控制您拥有的实例数。
我经常看到你的部署问题,然后ROOT为空(在内部工作以查看此修复...)。 每次对我来说最好的方法是停止你的API应用程序,手动UNZIP你的ROOT.war。将文件移动到/ ROOT /,然后启动您的API应用程序。
您可以简单地放置ROOT.war,并在重新打开时让系统解压缩,但这有时会导致空的ROOT目录,然后需要重新启动。
所有这些让我转而使用Spring-Boot。无需拆包。只需配置web.config并删除jar文件。
https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-java-custom-upload#springboot