Playframework 服务器退出时,Play framework应用程序停止工作

Playframework 服务器退出时,Play framework应用程序停止工作,playframework,server,sbt,ubuntu-14.04,sbt-native-packager,Playframework,Server,Sbt,Ubuntu 14.04,Sbt Native Packager,我有一个Play framework web应用程序,当按照以下步骤部署到我的ubuntu(14.04)服务器时,它可以正常工作: 在sbt中运行“dist” 已将生成的.zip文件传输到服务器 嘘 进入服务器并使用“/bin”运行应用程序/ -Dplay.crypto.secret=abcxyz“ 这会在前台运行应用程序,但在我失去internet连接(断开与服务器的ssh连接)时会立即终止它 我需要我的应用程序从我运行它的那一刻起持续地启动和运行(直到我决定停止它),我希望它在后台运行(

我有一个Play framework web应用程序,当按照以下步骤部署到我的ubuntu(14.04)服务器时,它可以正常工作:

  • 在sbt中运行“dist”
  • 已将生成的.zip文件传输到服务器
  • 嘘 进入服务器并使用“/bin”运行应用程序/ -Dplay.crypto.secret=abcxyz“
这会在前台运行应用程序,但在我失去internet连接(断开与服务器的ssh连接)时会立即终止它

我需要我的应用程序从我运行它的那一刻起持续地启动和运行(直到我决定停止它),我希望它在后台运行(守护进程)


当我通过终端退出服务器时,在服务器上作为守护程序服务运行应用程序是否会阻止应用程序停止?如果是的话,我该怎么做呢?有没有一种简单的方法可以确保应用程序在我退出它运行的服务器/与它失去连接的情况下运行?

有很多方法可以做到这一点。下面是一个使用nohup的快速方法:

nohup ./bin/$NAME -Dplay.crypto.secret=abcxyz -Dpidfile.path=/dev/null > /dev/null 2>&1 &

我通常将pid文件发送到
/dev/null
,这样在重新启动播放时就不会出现锁定问题。请注意,由于这将运行后台进程,因此您应该配置文件记录器以查看服务器输出。

playframework启用from sbt native packager,它提供了对应用程序生命周期的管理。但是,您需要构建一个debian文件来使用此功能

  • 使用sbt debian:packageBin构建应用程序
  • 将生成的debian文件复制到服务器
  • 使用
    sudo dpkg-i安装你的应用程序。deb
  • 配置 @nnmat是正确的,您应该添加
    -Dpidfile.path=/dev/null
    。您可以在
    build.sbt
    ()

    同时也要确保你。默认情况下,对于debian软件包,它是
    Upstart
    。您可能需要使用
    Systemd
    。 如果使用sbt native packager
    1.2.x
    ,请查看最新文档

    干杯,
    Muki

    谢谢@Muki:)我现在正在使用nmat的解决方案来启动和运行,不过我以后一定会考虑实现这个解决方案!实际上,使用debian文件应该更容易。您不必手动杀死每个部署上正在运行的实例。这就是systemloader的好处;)为您节省了大量的手工工作。
    javaOptions in Universal ++= Seq("-Dpidfile.path=/dev/null")