【问题标题】:How to deploy a dropwizard application如何部署 dropwizard 应用程序
【发布时间】:2014-11-27 16:47:11
【问题描述】:

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

1 - 如何在生产环境中部署jar文件?

2 - 我将如何管理服务?例如,有没有办法监控应用程序的健康状况?如果应用程序崩溃了如何自动重新启动它?

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

【问题讨论】:

    标签: java tomcat deployment production dropwizard


    【解决方案1】:

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

    您可以将监控工具指向应用的运行状况检查 URL,以便在应用出现故障时发送警报。

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

    【讨论】:

    • 如果你在 Ubuntu 上,Jamie Furness 写了一个很棒的 maven 插件dropwizard-debpkg-maven-plugin 它可以为你打包你的应用程序和配置为一个 .deb 文件,并为你创建适当的 init 和 upstart 脚本你。
    【解决方案2】:

    运行你源目录的mvn package后,maven会在目标目录下创建上述jar文件。

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

    jar 文件可以在服务器上使用 java -jar JARFILE 执行,请确保您已经安装了 java。基本上就是这样。

    现在,当您在生产中运行此程序时,您希望进程受到监督(如果失败则重新启动)并在启动时自动启动。为此,请查看您的服务器启动系统(systemd 之前提到过那些支持它的 Linux 发行版,但在当前的 debian/ubuntu 版本上,您还有 ATM 其他启动机制,您可能需要为 /etc/ 编写启动脚本init.d/myapplication)。

    健康检查 - 如前所述 - 集成在 dropwizard 应用程序中,您只需定期请求健康检查 URL。在专业环境中,您应该有一个可以指向 URL 的工具,例如 nagios。

    【讨论】:

      【解决方案3】:

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

      或使用织物 (http://www.fabfile.org/)。

      【讨论】:

        猜你喜欢
        • 2018-03-15
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 2018-07-19
        • 2013-05-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多