Scala在生产中启动Play服务器

时间:2012-05-23 23:50:32

标签: scala playframework playframework-2.0

我在EC2上部署了一个Play 2.0应用程序,我使用play start启动应用程序并在后台运行,我可以点击Ctrl-D并且该过程将继续在后台运行,但随后它会在一段时间后死亡(15或20分钟?),不知道为什么。我通常在启动应用程序后退出ssh会话,我希望这不是原因。

4 个答案:

答案 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;为我工作!