当服务器退出时,Play框架应用程序停止工作

时间:2017-01-25 22:33:49

标签: playframework server sbt ubuntu-14.04 sbt-native-packager

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

  • 在sbt中跑'dist'
  • 将生成的.zip文件传输到服务器
  • 通过SSH连接 进入服务器并使用“/ bin /运行应用程序 -Dplay.crypto.secret = abcxyz“

这会使应用程序在前台运行正常但在我丢失互联网连接时立即将其杀死(打破与服务器的ssh连接)。

我需要我的应用程序从我运行它的点开始持续运行(直到我决定停止它),并且我希望它在后台运行(守护进程)。

当我通过终端退出服务器时,将服务器作为服务器上的守护程序服务运行会阻止应用程序停止吗?如果是这样,我该怎么做呢?是否有一种简单的方法可以确保应用程序运行,无论我是从服务器上注销还是失去与它的连接?

2 个答案:

答案 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 文件才能使用此功能。

  1. 使用sudo dpkg -i your-app.deb
  2. 构建您的应用
  3. 将生成的debian文件复制到您的服务器
  4. 使用-Dpidfile.path=/dev/null
  5. 安装

    配置

    @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}},请查看最新文档。

    欢呼声, 缪奇