2014-10-02 113 views
9

我读了一些关于dropwizard应用程序构建的注释:[1]“Dropwizard被设计为作为JAR运行,而不是WAR文件。” [2]“你不能这样做,Dropwizard嵌入Jetty,你应该考虑使用Jersey作为标准的Web应用程序。”,所以,我的问题是:如何部署dropwizard应用程序

1 - 如何部署一个jar文件生产环境?

2 - 我将如何管理服务?例如,有没有一种方法可以监控应用程序的健康状况?如果应用程序崩溃,我怎么能自动重新启动它?

[1] How to create a war from dropwizard app? [2] Dropwizard in tomcat container

回答

3

您可以使用工具,如runit或systemd管理Linux上的应用dropwizard。他们可以做一些事情,比如确保它在系统启动时启动,并且可以帮助检测故障。有一些脚本涉及。

您可以将监视工具指向应用程序的healthcheck网址,以便在警报关闭时发送警报。

对于部署,我更愿意使用系统打包格式,.deb(基于Debian的系统,包括Ubuntu)或.rpm(基于RedHat的系统)打包应用程序。使用fpm包构建器来创建它,并包含你的runit文件(或其他),以及脚本来复制目标系统上的jar文件。如果您有私有软件包存储库,则可以将应用程序构建到其中,并且安装将成为“apt-get install myapp”或“yum install myapp”的问题。否则,将软件包放到目标服务器上并运行“rpm -i myapp.rpm”或类似软件。

+1

如果你在Ubuntu上,Jamie Furness写了一个很棒的maven插件[dropwizard-debpkg-maven-plugin](https://github.com/reines/dropwizard-debpkg-maven-plugin)它可以打包你的应用程序并将其配置为.deb文件,并为您创建适当的init和upstart脚本。 – 2015-02-26 10:17:42

+0

谢谢,伟大的解决方案! – LucaA 2016-04-18 10:27:22

2

运行后mvn包你的源码目录下,这个jar文件是通过maven在目标目录下创建的。

只需将此jar文件上传到您喜欢的服务器上的目录/ opt/myapplication /。

jar文件可以在服务器上执行,java -jar JARFILE,确保你在那里安装了java。基本上就是这样。

现在,当您在生产环境中运行此过程时,您希望监督过程(如果失败则重新启动)并在启动时自动启动。为此,请查看您的服务器startup-system(systemd之前提到的那些支持它的linux发行版,但在当前的debian/ubuntu版本中,您还有ATM还有其他启动机制,您可能需要为/ etc /的init.d /所有MyApplication)。

健康检查 - 如前所述 - 集成在dropwizard应用程序中,您只需在常规基础上申请健康检查网址即可。在专业环境中,你应该有一个像Nagios这样的工具,你可以指向URL。

0

如果你的服务器是unix,你可以构建fpm包来在服务器上安装你的服务。只需构建fpm,复制到服务器并安装它。

或使用面料(http://www.fabfile.org/)。