如何将authbind添加到我的Play Framework启动脚本(使用“播放阶段”生成)?

时间:2013-04-19 18:06:12

标签: playframework playframework-2.0 sbt upstart

我正在使用authbind允许我的Play Framework应用在以非root用户身份运行时绑定到端口80。

我的目标/启动脚本需要看起来像这样才能工作:

#!/usr/bin/env sh

exec authbind --deep java $@ -cp "`dirname $0`/staged/*" play.core.server.NettyServer `dirname $0`/..

目前我正在手动修改这个生成的文件(urgh!)。我找不到一种优雅的方法让play stage在java命令之前自动插入authbind --deep

target/start脚本是从Upstart脚本启动的,我尝试将authbind --deep放在那里,但这似乎不起作用。

非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

调整您的项目/ Build.scala文件:

lazy val main = play.Project(appName, appVersion, appDependencies).settings(
    playStage <<= (playStage, baseDirectory) map {(stageCommand, baseDir) =>
      val content = """#!/usr/bin/env sh
                      |
                      |exec authbind --deep java $@ -cp "`dirname $0`/staged/*" play.core.server.NettyServer `dirname $0`/..""".stripMargin
      IO.write(baseDir / "target" / "start", content)
      stageCommand
    }
  )

这会覆盖播放阶段任务并写入自定义启动脚本文件。