用于Play框架分布式应用程序的Init.d Shell脚本
我編寫了一個Shell腳本來控制使用內置命令dist打包的Play框架應用程序。 以這種方式打包的應用程序是壓縮的獨立發行版,不需要在應該運行其的計算機上安裝Play框架。 所需的一切都在包裝內。 在zip的bin目錄中,有一個可執行的Shell腳本,其名稱與您的應用程序相同。 您可以通過運行此腳本來啟動應用程序。 這就是全部,但我想要更多。
腳本設置
從GitHub下載腳本并使其可執行:
在運行腳本之前,您必須設置NAME , PORT和APP_DIR變量的值。
讓我們以我的輔助項目Jugjane為例。 我運行了“ play dist ”,它生成了“ jugjane-1.1-SNAPSHOT.zip ”文件。 如果將其解壓縮,則會得到一個名為“ jugjane-1.1-SNAPSHOT ”的目錄,該目錄將移至“ /home/rado/bin/jugjane-1.1-SNAPSHOT ”。 Play框架生成的shell腳本為“ /home/rado/bin/jugjane-1.1-SNAPSHOT/bin/jugjane ”。 我想在端口9000上運行該應用程序。我的值是:
NAME=jugjane PORT=9000 APP_DIR=/home/rado/bin/jugjane-1.1-SNAPSHOT啟動,停止,重新啟動并檢查狀態
現在,我可以方便地將我的Pl??ay應用程序作為守護程序運行。 讓我們運行它。
開始
要啟動我的Jugjane應用程序,我只需運行以下命令:
$ ./dist-play-app-initd start Starting jugjane at port 9000... OK [PID=6564]重新開始
$ ./dist-play-app-initd restart Stopping jugjane... OK [PID=6564 stopped] Starting jugjane at port 9000... OK [PID=6677]狀態
$ ./dist-play-app-initd status Checking jugjane at port 9000... OK [PID=6677 running]停止
$ ./dist-play-app-initd stop Stopping jugjane... OK [PID=6677 stopped]機器啟動時啟動您的應用程序
這取決于您的操作系統,但是通常您需要將此腳本移至/etc/init.d目錄。
實施細節
該腳本使用Play框架生成的RUNNING_PID文件,其中包含應用程序服務器進程的ID。
安全啟動
啟動應用程序后,腳本將檢查是否已創建RUNNING_PID文件以及該進程是否真正在運行。 之后,它使用wget實用程序對根文檔發出HTTP GET請求,以再次檢查服務器是否處于活動狀態。 當然,這假定您的應用程序提供了此文檔。 如果您不喜歡(或沒有)wget,那么我也提供了curl版本,以方便您。
安全停車
停止檢查其ID在RUNNING_PID文件中的進程是否確實屬于您的應用程序。 這是一項重要的檢查,因此我們不會意外殺死一個無辜的進程。 然后,它從最溫和的信號開始向過程發送終止信號,直到過程終止。
貢獻
我感謝我的雇主Dominion Marine Media,讓我與您分享這種喜悅。 隨時貢獻。
翻譯自: https://www.javacodegeeks.com/2014/03/init-d-shell-script-for-play-framework-distributed-applications.html
總結
以上是生活随笔為你收集整理的用于Play框架分布式应用程序的Init.d Shell脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (linux的.sh文件)
- 下一篇: 在Jersey 2中进行集成测试自定义验