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