首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用sbt-native-packager添加流程参数?

如何使用sbt-native-packager添加流程参数?
EN

Stack Overflow用户
提问于 2016-09-17 20:35:59
回答 1查看 257关注 0票数 0

如何使用sbt-native-packager配置添加过程参数?我想添加用于将进程stderr重定向到文件的选项?要得到这样的结果:sudo -u app bash -c "app >>/var/log/app/stderr.log 2>&1"

我使用sbt-native-packager 1.2.0-M5来构建deb包,并在日志中使用JavaServerAppPackaging, JDebPackaging, SystemdPlugin, UpstartPlugin,仅在stderr中。另外,我必须在崩溃后手动删除应用程序pid,如果它存在,那么我在stderr中有错误。

我的plugins.sbt:

代码语言:javascript
复制
resolvers += Resolver.bintrayRepo("sbt", "sbt-plugin-releases")

// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.8-netty-4.1")

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.0-M5")

addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2")

addSbtPlugin("com.lightbend.sbt" % "sbt-javaagent" % "0.1.1")

libraryDependencies += "org.vafer" % "jdeb" % "1.3" artifacts (Artifact("jdeb", "jar", "jar"))

我的build.sbt:

代码语言:javascript
复制
...
debianPackageDependencies in Debian ++= Seq("postgresql-9.5 (>= 9.5.1)")

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

scalaVersion := "2.11.8"

val akkaVersion = "2.4.10"

libraryDependencies ++= Seq(
  "org.postgresql" % "postgresql" % "9.4.1208",
  "org.scalikejdbc" %% "scalikejdbc" % "2.4.0",
  "org.scalikejdbc" %% "scalikejdbc-config" % "2.4.0",
  "org.scalikejdbc" %% "scalikejdbc-play-initializer" % "2.5.1",
  "org.flywaydb" %% "flyway-play" % "3.0.1",
  "com.typesafe.akka" %% "akka-contrib" % akkaVersion,
  "com.typesafe.akka" %% "akka-slf4j" % akkaVersion,
  "io.dropwizard.metrics" % "metrics-core" % "3.1.2",
  "io.dropwizard.metrics" % "metrics-jvm" % "3.1.2",
  "org.coursera" % "dropwizard-metrics-datadog" % "1.1.4",
  "com.typesafe.akka" %% "akka-testkit" % akkaVersion % Test,
  "com.relayrides" % "pushy" % "0.8",
  "com.relayrides" % "pushy-dropwizard-metrics-listener" % "0.8",
  "org.eclipse.jetty.alpn" % "alpn-api" % "1.1.3.v20160715" % "runtime",
  ws,
  specs2 % Test
)

resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/maven-releases/"
resolvers += Resolver.mavenLocal

routesGenerator := InjectedRoutesGenerator

javaOptions in Test ++= Seq("-Dlogger.resource=logback-test.xml")

scalacOptions in Universal ++= Seq("-unchecked", "-deprecation", "-notailcalls")

javaOptions in Universal ++= Seq(
  "-J-server",
...
)

...

import com.typesafe.sbt.packager.archetypes.systemloader._
// UpstartPlugin for ubuntu 14.04, SystemdPlugin for ubuntu 16.04
enablePlugins(JavaServerAppPackaging, JDebPackaging, SystemdPlugin, UpstartPlugin)

requiredStartFacilities := Some("datadog-agent.service, systemd-journald.service, postgresql.service")

javaAgents += "org.mortbay.jetty.alpn" % "jetty-alpn-agent" % "2.0.4" % "dist"

另外,我发现了一个变通方法,在ubuntu 16.04中,我可以使用日志来收集系统中的所有日志。

EN

回答 1

Stack Overflow用户

发布于 2016-09-21 16:06:06

感谢您使用所有相关信息更新问题。这里有几件事。

只有一个Systemloader插件

您可以启用SystemdPluginUpstartPlugin。如果它能工作,它只能在偶然的情况下工作。没有本机打包程序的版本被设计为在单个构建模块中支持单个包类型的多个系统加载器。

解决方案是创建启用了相关系统加载器的子模块。

记录到stderr

你对systemd的看法是对的。它提供了一些工具来捕获流程的日志输出。如果您愿意,可以将您的发现添加到本机打包程序文档中(有一个systemd plugin section )。

本机打包程序中对upstart的支持非常简单。由于Ubuntu正在切换到systemd,所以没有太多的requeset,你可以随时退回到systemv。这给我带来了你的问题的解决方案。

您可以使用支持daemon_log_fileSystemVPluginsystemv documentation为您提供了必要的详细信息。

干杯,Muki

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39546885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档