Linux Ubuntu upstart从Play 1.3中获得错误的PID
我们在播放1.2.7时使用的启动-停止守护程序的Upstart脚本现在无法停止/重新启动播放1.3后的播放,因为它的PID不正确 框架版本:Ubuntu 12.04.5 LTS上的1.3.0 复制步骤:Linux Ubuntu upstart从Play 1.3中获得错误的PID,linux,ubuntu,playframework,upstart,Linux,Ubuntu,Playframework,Upstart,我们在播放1.2.7时使用的启动-停止守护程序的Upstart脚本现在无法停止/重新启动播放1.3后的播放,因为它的PID不正确 框架版本:Ubuntu 12.04.5 LTS上的1.3.0 复制步骤: 为播放应用程序设置upstart脚本(playframework.conf) 服务器重新启动时播放应用程序成功启动运行“sudo” 状态“playframework”将返回playframework启动/运行, 进程28912-此时进程28912不存在 vi{playapplicationfo
- 为播放应用程序设置upstart脚本(playframework.conf)
- 服务器重新启动时播放应用程序成功启动运行“sudo” 状态“playframework”将返回playframework启动/运行, 进程28912-此时进程28912不存在
- vi{playapplicationfolder}/server.pid显示28927
- “停止播放框架” 然后由于pid 28912“状态播放框架”结果未知而失败 playframework停止/终止,进程28912
另一篇SO帖子也问了一个类似的问题,但还没有得到答案:这是因为
getJavaVersion()
生成了一个子进程,它会影响PID计数,从而破坏Upstart,后者希望Play完全不分叉,一次或两次,具体取决于您使用的expect节
我已经解决了一个。同样的问题。从阅读上看,它似乎与启动时播放生成的子进程的数量有关。。。我在Play Google Group上发布了相同的问题,其中有一个链接描述了Upstart可能出了什么问题,但遗憾的是,没有关于如何修复它的详细说明。在您尝试修复它时,有一个临时的解决方法可以让Upstart再次进入可用状态。此脚本:将为upstart创建一个新的流程来恢复自身。我查看了pull请求和其他提交人的评论,我认为它们是有效的-您的PR解决了这个特定问题,但会导致其他问题。是的,问题是针对那些运行与application.conf的
Java.source
中所述版本不同的Java版本的人。PR被修改为接受一个标志,现在已经被合并。
#Upstart script for a play application that binds to an unprivileged user.
# put this into a file like /etc/init/playframework
# you can then start/stop it using either initctl or start/stop/restart
# e.g.
# start playframework
description "PlayApp"
author "-----"
version "1.0"
env PLAY_BINARY=/opt/play/play
env JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
env HOME=/opt/myapp/latest
env USER=ubuntu
env GROUP=admin
env PROFILE=prod
start on (filesystem and net-device-up IFACE=lo) or runlevel [2345]
stop on runlevel [!2345]
limit nofile 65536 65536
respawn
respawn limit 10 5
umask 022
expect fork
pre-start script
test -x $PLAY_BINARY || { stop; exit 0; }
test -c /dev/null || { stop; exit 0; }
chdir ${HOME}
rm ${HOME}/server.pid || true
/opt/configurer.sh
end script
pre-stop script
exec $PLAY_BINARY stop $HOME
end script
post-stop script
rm ${HOME}/server.pid || true
end script
script
exec start-stop-daemon --start --exec $PLAY_BINARY --chuid $USER:$GROUP --chdir $HOME -- start $HOME -javaagent:/opt/newrelic/newrelic.jar --%$PROFILE -Dprecompiled=true --http.port=8080 --https.port=4443
end script