我在EC2上部署了一个Play 2.0应用程序,我使用play start
启动应用程序并在后台运行,我可以点击Ctrl-D
并且该过程将继续在后台运行,但随后它会在一段时间后死亡(15或20分钟?),不知道为什么。我通常在启动应用程序后退出ssh会话,我希望这不是原因。
答案 0 :(得分:10)
nohup play start
适合我。
答案 1 :(得分:3)
我在我的Play应用程序中使用以下启动脚本(在CentOS上),似乎工作正常,它将它放在后台以及它自己的进程组和会话中,因此它对hangups等免疫。关于{ {1}}和play stage
来自Guillaume Bort,是“正确的做法”。
target/start
您可以通过以下方式验证它是否已隔离:
#!/bin/bash
#
# chkconfig: 2345 98 1
# description: MyApp application
#
case "$1" in
start)
su - apps <<'EOF'
cd /opt/myapp || exit 1
PATH=/opt/play-2.1.1:$PATH
echo "Starting MyApp..."
play stage
setsid target/start < /dev/null > /dev/null 2>&1 &
EOF
;;
stop)
su - apps <<'EOF'
cd /opt/myapp || exit 1
PATH=/opt/play-2.1.1:$PATH
echo "Stopping MyApp..."
play stop
EOF
;;
esac
你会看到类似的东西:
ps -e -o user,pid,ppid,pgrp,sid,command | grep -i play
含义apps 2949 1 2949 2949 java -cp target/staged/* play.core.server.NettyServer target/..
(pid init
)是其父级,它在自己的进程组(1
)中被隔离。
答案 2 :(得分:1)
我建议你使用激活器(以前的播放)脚本所采用的stage命令来准备项目部署二进制文件。您可以在后台运行该二进制文件,它可以在下面代码中第二个命令显示的路径中找到。
./activator stage
target/universal/stage/bin/project-name &
答案 3 :(得分:0)
对于比赛2.2.3 ...比赛&#34;开始-Dhttp.port = 8080&#34;为我工作!