我有一个Play框架Web应用程序,按照以下步骤部署到我的ubuntu(14.04)服务器时可以正常工作:
这会使应用程序在前台运行正常但在我丢失互联网连接时立即将其杀死(打破与服务器的ssh连接)。
我需要我的应用程序从我运行它的点开始持续运行(直到我决定停止它),并且我希望它在后台运行(守护进程)。
当我通过终端退出服务器时,将服务器作为服务器上的守护程序服务运行会阻止应用程序停止吗?如果是这样,我该怎么做呢?是否有一种简单的方法可以确保应用程序运行,无论我是从服务器上注销还是失去与它的连接?
答案 0 :(得分:1)
有很多方法可以做到这一点。以下是nohup
的快速方法:
nohup ./bin/$NAME -Dplay.crypto.secret=abcxyz -Dpidfile.path=/dev/null > /dev/null 2>&1 &
我通常将pid文件发送到/dev/null
,因此播放重启时我没有锁定问题。请注意,由于这将运行后台进程,因此应配置文件记录器以查看服务器输出。
答案 1 :(得分:0)
playframework启用来自sbt-native-packager的JavaServerAppPlugin,它提供管理应用程序生命周期的systemloaders。但是,您需要构建一个 debian 文件才能使用此功能。
sudo dpkg -i your-app.deb
-Dpidfile.path=/dev/null
@nnmat是对的,你应该添加build.sbt
。您可以在javaOptions in Universal ++= Seq("-Dpidfile.path=/dev/null")
(see the documentation)
Upstart
另请确保configure the correct systemloader。对于debian软件包,默认情况下它是Systemd
。您可能想要使用1.2.x
。
如果您使用sbt-native-packager {{1}},请查看最新文档。
欢呼声, 缪奇