2012-05-23 7 views
6

EC2にPlay 2.0アプリをデプロイし、play startでアプリを起動し、バックグラウンドで実行すると、Ctrl-Dになり、プロセスはバックグラウンドで実行され続けますが、その後は終了しますしばらくしてから(15分か20分か?)、なぜ分かりませんか。私は通常、アプリケーションを起動した後にsshセッションを終了する、私はそれが理由ではないと思っています。Scala startプロダクションでサーバーを再生

+3

ええ、それはあなたの 'ssh'セッションを終了したときのハングアップシグナルの結果としておそらく閉じるでしょう。 Unixプログラム 'screen'(マルチプレクサ)を起動してから、通常のようにPlayサーバーを起動してみてください。次に、 'ssh'からログアウトする前に、' ctrl + a'を押してから 'd'を押して' screen'セッションを "デタッチ"します。これにより、あなたの 'ssh'セッションが終了した後でさえ、バックグラウンドで(スクリーンを通して)実行されたままになります。 – Destin

+1

あなたはプロセスを否認しようとしましたか? http://stackoverflow.com/a/625436/51280 – opyate

+0

@Destinを参照してください。ええ、それは私の 'ssh'セッションの終了と' nohup'の働きによるものです。 – Bob

答えて

10

nohup play startが私に役立ちます。

+0

うん、うまくいった、ありがとう! – Bob

+2

nohup activator runがもう動作しません。これを行う必要がありました:http://stackoverflow.com/a/25852899/2426994方法。 – JohnVanDijk

3

私のPlayアプリケーションには、次の起動スクリプト(CentOS上)を使用しています。うまく動作しているようです。バックグラウンドと独自のプロセスグループとセッションに配置されています。 play stagetarget/startGuillaume Bortから来て、「それを行う正しい方法」です。あなたが何かわかります

ps -e -o user,pid,ppid,pgrp,sid,command | grep -i play 

:あなたはそれを用いて単離しています確認することができます

#!/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 

init(PID 1)を意味

apps  2949  1 2949 2949 java -cp target/staged/* play.core.server.NettyServer target/.. 

は親であり、それは、独自に隔離いますプロセスグループ(2949)。

1

アクティベータ(以前は再生していた)スクリプトが実行するstageコマンドを使用して、プロジェクトデプロイメントバイナリを準備することをお勧めします。バイナリをバックグラウンドで実行することができます。このバイナリは、以下のコードの2番目のコマンドが示すパスにあります。

./activator stage 
target/universal/stage/bin/project-name & 
+0

あなたはおそらく後でそのプロセスを否定するべきでしょう。 – stephenmuss

0

再生2.2.3 ...再生 "start -Dhttp.port = 8080"が私のために働いた!

関連する問題