如何在Azure App Service上部署Jetty?

时间:2017-03-11 15:56:47

标签: java azure deployment jetty azure-api-apps

我有一个我在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.jspbackground.png。我没有任何想法导致ROOT文件夹与这些默认文件一起出现的原因。我唯一的线索是,在我更改环境变量后,它发生了几次。

ROOT文件夹显示空服务器文件后,我可以重新部署应用程序的唯一方法是通过FTP或门户网站提供的控制台手动删除此ROOT文件夹,只有这样我的重新部署请求才能成功使用我的网络应用程序。

所以,如果不够清楚,我的问题是这里发生了什么?我无法从我面临的行为中做出任何改变。我觉得我盲目地使用这个Azure服务,并且在出现问题时无法解决任何问题。是否有任何资源可以解释部署Web应用程序时后台发生的情况?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。解决方案是在部署之后调用端点。

  1. 停止Azure App服务。
  2. 在/ webapps文件夹中部署ROOT.war工件。
  3. 启动Azure App Service。
  4. 调用App Service的URL一次。
  5. 四步非常重要,并启动您之前提到的流程(自动部署)。

    我失去了很多时间来弄清问题是什么。

答案 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