我有一個使用「sbt run」運行良好的SBT scala應用程序。但是,這會鎖定控制檯,我寧願將它作爲服務/守護進程啓動,以便我可以使用控制檯,並且還可以將其添加到init.d以確保我的應用程序在啓動時自動啓動。將SBT作爲守護進程運行
我似乎無法找到一種方法來做到這一點。運行「sbt run &」似乎在後臺掛起應用程序。
有誰知道如何做到這一點?
我有一個使用「sbt run」運行良好的SBT scala應用程序。但是,這會鎖定控制檯,我寧願將它作爲服務/守護進程啓動,以便我可以使用控制檯,並且還可以將其添加到init.d以確保我的應用程序在啓動時自動啓動。將SBT作爲守護進程運行
我似乎無法找到一種方法來做到這一點。運行「sbt run &」似乎在後臺掛起應用程序。
有誰知道如何做到這一點?
我們推出測試/演示應用與SBT在init.d中所有的時間:
#!/bin/sh
# test lift web app
case "$1" in
'start')
cd /home/demouser/wa/HTML5DemoLift231/HTML5demo/
sbt jetty run
;;
'stop')
cd /home/demouser/wa/HTML5DemoLift231/HTML5demo/
sbt jetty stop
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0
這只是工作 - 我們曾與它沒有任何問題。不過,這可能與非網絡應用程序有所不同。
您可以使用GNU Screen將其保留在後臺。無論如何,我不能認爲這是一個很好的理由。將應用程序打包並在後臺運行生成的二進制文件不是更好嗎?
一個很好的理由是有一個遠程開發機器,設計人員只需上傳html文件而不必重新啓動服務。我不知道如何在打包的應用程序中做到這一點。 – 2012-02-08 15:24:42
我沒有想過這件事。尼斯。 – 2012-02-14 10:39:55
您也可以使用sbt-assembly或sbt-onejar將您的應用程序打包成「胖」罐子。
這將使它成爲一個可執行的jar,並且可以通過java -jar jarname.jar
輕鬆運行。
我想我希望這將被內置到SBT中,這樣我就可以跳過包裝步驟,但我會研究這些。 – devinfoley 2011-05-16 04:03:25
大會工作像我的魅力,謝謝 – Jack 2012-03-09 10:15:06
只需鍵入sbt runProd 然後按Ctrl + D 該進程將作爲守護程序進程運行。
謝謝。將其更改爲正確的答案。這消除了包裝步驟,並允許我更快部署。 – devinfoley 2011-05-17 14:59:20
它確實開始但立即退出。在我的情況下,我使用sbt容器:開始。有任何想法嗎? – 2012-02-08 15:38:27
同樣在這裏。它開始,但立即退出。有任何想法嗎? – Jack 2012-03-08 14:52:51