2012-05-23 12 views
6

Mam aplikację Play 2.0 wdrożoną na EC2 i uruchamiam aplikację z play start i działa ona w tle, mogę trafić Ctrl-D, a proces będzie nadal działał w tle, ale następnie umiera po pewnym czasie (15 lub 20 minut?), nie wiem dlaczego. Zwykle kończę sesję ssh po uruchomieniu aplikacji, mam nadzieję, że to nie jest powód.Scala start Odtwarzanie serwera w produkcji

+3

Tak, to prawdopodobnie w wyniku zamknięcia sygnału hang-up z ty kończąc swój 'sesji ssh'. Spróbuj uruchomić "ekran" programu Unix (multiplekser), a następnie uruchom serwer Play tak, jak zwykle. Następnie, przed wylogowaniem się z 'ssh', naciśnij' ctrl + a', a następnie 'd', aby" odłączyć "sesję' screen'. Spowoduje to, że Play będzie działać w tle (przez 'screen'), nawet po zakończeniu sesji' ssh'. – Destin

+1

Czy próbowałeś zdementować proces? Zobacz http://stackoverflow.com/a/625436/51280 – opyate

+0

@Destin, tak było ze względu na moja sesja ssh' '' a kończąc prace nohup'. – Bob

Odpowiedz

10

nohup play start pracuje dla mnie.

+0

Tak, zadziałało, dzięki! – Bob

+2

Uruchomienie nohup activator już nie działa. Musiał to zrobić: http://stackoverflow.com/a/25852899/2426994 sposób. – JohnVanDijk

3

Używam poniższego skryptu uruchamiania (w CentOS) dla mojej aplikacji Play, wydaje się działać dobrze, umieszcza go w tle i we własnej grupie procesów i sesji, więc jest odporny na zawieszanie się itp. Wskazówka na temat play stage i target/start pochodzi z Guillaume Bort i jest „właściwy sposób to zrobić.”

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

Można go zweryfikować samodzielnie z:

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

Zobaczysz coś takiego:

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

Znaczenie init (PID 1) jest jego rodzic i to samodzielnie we własnych grupa procesowa (2949).

1

Proponuję, żeby przygotować się do wdrażania projektu binarnie za pomocą polecenia na scenie, że aktywator (dawniej grać) skrypt zaczyna. Możesz uruchomić ten plik binarny w tle, można go znaleźć na ścieżce, którą pokazuje drugie polecenie w poniższym kodzie.

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

Powinieneś prawdopodobnie również odrzucić ten proces. – stephenmuss

0

Dla zabawy 2.2.3 ... dla mnie gra "start -Dhttp.port = 8080"!

Powiązane problemy