Ubuntu 将Play应用程序部署为Debian包

Ubuntu 将Play应用程序部署为Debian包,ubuntu,playframework,debian,dpkg,Ubuntu,Playframework,Debian,Dpkg,我在创建我的Play应用程序的debian发行版时遇到了一些问题。 deb文件创建正确,我可以在Ubuntu 15.04上安装,但无法安装启动和停止服务: myusr@myhost:~/dev/projects/test/target$ sudo dpkg -i test_0.2_all.deb Selecting previously unselected package test. (Reading database ... 350339 files and directories cur

我在创建我的Play应用程序的debian发行版时遇到了一些问题。 deb文件创建正确,我可以在Ubuntu 15.04上安装,但无法安装启动和停止服务:

myusr@myhost:~/dev/projects/test/target$ sudo dpkg -i test_0.2_all.deb 
Selecting previously unselected package test.
(Reading database ... 350339 files and directories currently installed.)
Preparing to unpack test_0.2_all.deb ...
Unpacking test (0.2) ...
Setting up test (0.2) ...
Adding test to autostart using update-rc.d
update-rc.d: error: initscript does not exist: /etc/init.d/test
Failed to start test.service: Unit test.service failed to load: No such file or directory.
test could not be registered or started
我还尝试在包中包含application.conf的“生产版本”和一些jvmopts,但也没有成功(deb文件的application.conf版本来自/conf,而不是来自src/universal/conf-这是正确的路径吗?-,jvmopts似乎被完全忽略)

这是我在项目中使用的build.sbt:

import RjsKeys._

import com.typesafe.sbt.packager.archetypes.ServerLoader.{SystemV, Upstart}

serverLoading in Debian := SystemV

bashScriptConfigLocation := Some("${app_home}/../conf/jvmopts")

bashScriptExtraDefines += """addJava "-Dconfig.file=${app_home}/../conf/application.config""""

name := """test"""

version := "0.2"

maintainer in Linux := "Me <me@mail.com>"

packageSummary in Linux := "Test"

packageDescription := "Test"

daemonUser in Linux := normalizedName.value

daemonGroup in Linux := (daemonUser in Linux).value

doc in Compile <<= target.map(_ / "none")

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

linuxPackageMappings in Debian := linuxPackageMappings.value

scalaVersion := "2.11.1"

pipelineStages := Seq(rjs, digest, gzip)

resolvers += Resolver.sonatypeRepo("snapshots") 

libraryDependencies ++= Seq(
  jdbc,
  anorm,
  cache,
  ws,
  filters,
  "org.webjars" %% "webjars-play" % "2.3.0",
  "org.webjars" % "jquery" % "2.1.3",
  "org.webjars" % "bootstrap" % "3.3.4",
  "org.webjars" % "bootbox" % "4.4.0",
  "org.webjars" % "angularjs" % "1.3.15",
  "org.webjars" % "angular-ui-bootstrap" % "0.13.0",
  "org.webjars" % "nervgh-angular-file-upload" % "1.1.5-1",
  "org.webjars" % "angular-uuid4" % "0.3.0",
  "org.webjars" % "requirejs" % "2.1.14-1",
  "org.webjars" % "d3js" % "3.5.5-1",
  "org.webjars" % "d3-tip" % "0.6.6",
  "com.google.inject" % "guice" % "3.0",
  "ws.securesocial" %% "securesocial" % "master-SNAPSHOT",
  "org.reactivemongo" %% "play2-reactivemongo" % "0.10.5.0.akka23"
)

scalacOptions ++= Seq(
  "-target:jvm-1.7",
  "-encoding", "UTF-8",
  "-deprecation",
  "-feature",
  "-unchecked",
  "-Xlint",
  "-Ywarn-adapted-args",
  "-Ywarn-value-discard",
  "-Ywarn-inaccessible",
  "-Ywarn-dead-code",
  "-language:reflectiveCalls"
)

fork in run := false

webJarCdns := Map("org.webjars" -> "//cdn.jsdelivr.net/webjars")
导入RJSKEY_
导入com.typesafe.sbt.packager.archetypes.ServerLoader.{SystemV,Upstart}
Debian中的服务器加载:=SystemV
bashScriptConfigLocation:=Some(${app_home}/./conf/jvmopts)
bashScriptExtraDefines+=“addJava”-Dconfig.file=${app_home}/./conf/application.config”
名称:=“测试”
版本:=“0.2”
Linux中的维护者:=“我”
Linux中的packageSummary:=“测试”
packageDescription:=“测试”
Linux中的daemonUser:=normalizedName.value
Linux中的daemonGroup:=(Linux中的daemonUser).value
编译中的文档
。。。表明package builder未装运或正确安装单元文件,或者未正确使用sysvinit垫片。您能否运行以下命令:

dpkg -c test_0.2_all.deb 

sudo
不是必需的。这将列出
.deb
的文件内容。如果我们在这里看到一个
.service
文件,那么我们必须查看包的
.postinst
文件,看看它是否做了一些愚蠢的事情(或者更像是缺少了一些initscript设置节)。

您是否创建了
应用程序.ini
并带有
PID
的路径?不,我没有,但是PID是在以默认路径手动启动应用程序时创建的。您找到解决方案了吗?我和作者有着完全相同的问题。运行上述命令不会显示.service文件。我正在使用最新的播放版本2.5。
dpkg -c test_0.2_all.deb