2014-10-02 142 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/)。