Playframework 2.0 .deb for SystemD由debian创建:packageBin for Play 2.4.2应用程序没有创建日志的权限

Playframework 2.0 .deb for SystemD由debian创建:packageBin for Play 2.4.2应用程序没有创建日志的权限,playframework-2.0,debian,sbt,sbt-native-packager,Playframework 2.0,Debian,Sbt,Sbt Native Packager,sbt debian:packageBin创建的SystemD安装脚本如何设置webapp写入PID/var/run或子目录的权限 只有root用户有权在/var/run中创建一个pid文件,或者创建一个像/var/run/myWebApp/这样的保存pid文件的目录。debian:packageBin任务会使webapp作为从webapp名称创建的特殊user:group运行。如果像/var/run/myWebApp这样创建一个目录,myWebApp组需要写权限,但我看不到任何方法可以自动实现

sbt debian:packageBin创建的SystemD安装脚本如何设置webapp写入PID/var/run或子目录的权限

只有root用户有权在/var/run中创建一个pid文件,或者创建一个像/var/run/myWebApp/这样的保存pid文件的目录。debian:packageBin任务会使webapp作为从webapp名称创建的特殊user:group运行。如果像/var/run/myWebApp这样创建一个目录,myWebApp组需要写权限,但我看不到任何方法可以自动实现。我错过什么了吗

以下是我的一些配置文件:

dist/conf/application.ini:

conf/application.conf:

debian.sbt:


播放文档显示,在/var/run中放置pid应该可以工作,但这对我不起作用。

以下是放置在debian.sbt中的解决方案:


conf/application.conf中不需要额外的条目。

应该自动完成,您是否尝试了设置?是的,我尝试了,但没有按照Dpidfile所述工作。path=/var/run/webapp2/pid,您的appname是myWebApp?您可以发布ls-l/var/run/myWebApp的输出吗?对于play应用程序,您可以使用相同的pid目录,但名称不同,例如play.pid.play应用程序创建pid文件,并尝试在运行目录中创建它,该目录为/usr/share/appName,不可写。因此,对于play app,您需要对pid文件进行额外设置。也许您没有注意到我想要在/var/run/myWebApp/中创建pid文件,就像标准的Linux服务一样。这应该非常清楚。你的建议不起作用。我的解决方案经过测试,效果良好。我也不希望启动系统在/var/run/appName中创建downvote.pid文件。而play应用程序本身将尝试在工作目录中创建另一个daemonUser无法写入的应用程序。JavaServerAppPackaging还将此目录添加到LinuxPackageAppings中。如果有麻烦的话,我会删除下一票,没问题:可能是因为我没有使用最新版本,所以我有一个关于play framework的过时数据。行为已经改变。我正在使用当前版本的Play和所有插件。你的信息已经过时了。很难弄清楚这些东西,因为文档彼此不一致,已经过时,而且每次发布时行为都会发生变化。还要注意,/var/run/appName只能由root用户写入;见我上面的详细解释。
-Dpidfile.path=/var/run/webapp2/webapp2.pid
# This seems redundant ... should it be removed?
pidfile.path = /var/run/webapp2/pid
pidfile.path = ${?pidfile.path}
import com.typesafe.sbt.packager.archetypes.ServerLoader.{Systemd, SystemV, Upstart}
import com.typesafe.sbt.SbtNativePackager.autoImport._

lazy val root = (project in file(".")).enablePlugins(PlayScala, DebianPlugin)

enablePlugins(JavaAppPackaging)
enablePlugins(JDebPackaging)
enablePlugins(JavaServerAppPackaging)

serverLoading in Debian := Systemd

maintainer in Linux      := "Mike Slinn <mslinn@mslinn.com>"
packageSummary in Linux  := "myWebApp blah blah"
packageDescription       := "myWebApp blah blah"
daemonUser in Linux      := normalizedName.value        // user which will execute the application, resolves to "myWebApp"
daemonGroup in Linux     := (daemonUser in Linux).value // group which will execute the application, resolves to "myWebApp"
$ ls -adlF /var/run/postgresql
drwxrwsr-x 3 postgres postgres 120 Aug 28 01:17 /var/run/postgresql/
linuxPackageMappings += packageTemplateMapping(s"/var/run/${name.value}/")() withUser name.value withGroup name.value