Sbt Native Packager Debian安装使用root用户而不是守护进程用户

时间:2015-04-23 01:08:02

标签: sbt-native-packager

我正在使用sbt native packager("com.typesafe.sbt" % "sbt-native-packager" % "1.0.0")创建我的Scala Play 2.3.8应用程序的debian包。正在生成的启动脚本使用自定义用户来启动和停止应用程序,这完全符合预期。 问题是,使用dpkg -i package.deb的安装似乎在以root用户身份安装后直接启动应用程序。然后,/var/run/neeedo-app/running.pid由root用户拥有,并且所有进一步的停止或启动尝试都会失败,因为该文件不能被守护程序用户覆盖。

这是我的build.sbt:

import com.typesafe.sbt.SbtNativePackager._
import NativePackagerKeys._
import com.typesafe.sbt.packager.archetypes.ServerLoader.SystemV

name := """neeedo-api"""

version := "1.0-SNAPSHOT"

scalaVersion := "2.11.1"

maintainer in Debian := "neeedo-team <neeedo@neeedo.com>"

packageSummary in Debian := "neeedo api application"

serverLoading in Debian := SystemV

packageDescription := "neeedo api application"

daemonUser in Linux := neeedo-api

daemonGroup in Linux := neeedo-api

我也在使用neeedo-app用户运行dpkg install命令。我不明白为什么在安装后root用户创建了running.pid文件。如果我用sudo手动删除文件并使用启动/停止脚本后缀,一切正常......

编辑(答案): 似乎以root身份启动应用程序(使用dpkg)并不是真正的问题。 running.pid文件位于app用户拥有的目录中。因此,它可以编辑和删除pid文件。

我的应用程序在其配置中使用环境变量,当您以root用户身份运行sudo作为启动脚本时,您有不同的环境变量。这导致应用程序无法启动,不幸的是没有错误报告可见(我必须进一步调查,看看为什么,因为通常应该报告)。

0 个答案:

没有答案