我正在使用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
放在那里,但这似乎不起作用。
非常感谢任何想法。
答案 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
}
)
这会覆盖播放阶段任务并写入自定义启动脚本文件。