2012-05-23 31 views
6

Tengo una aplicación Play 2.0 implementada en EC2 y la inicio con play start y se ejecuta en segundo plano, puedo presionar Ctrl-D y el proceso continuará ejecutándose en segundo plano, pero luego muere después de un tiempo (15 o 20 minutos?), no estoy seguro de por qué. Normalmente salgo de la sesión ssh después de iniciar la aplicación, espero que esa no sea la razón.Scala start Play server en producción

+3

Sí, probablemente se está cerrando como resultado de la señal de suspensión de la sesión 'ssh'. Intente ejecutar la 'pantalla' del programa Unix (un multiplexor) y luego inicie su servidor Play como siempre. Luego, antes de cerrar sesión en 'ssh', presione' ctrl + a' y luego 'd' para" separar "la sesión' screen'. Esto dejará a Play ejecutándose en segundo plano (a través de 'screen'), incluso después de que termine su sesión' ssh'. – Destin

+1

¿Has intentado negar el proceso? Ver http://stackoverflow.com/a/625436/51280 – opyate

+0

@Destin, sí, fue debido a mi 'ssh' sesión que termina y' nohup' funciona. – Bob

Respuesta

10

nohup play start trabaja para mí.

+0

Sí, eso funcionó, gracias! – Bob

+2

nohup activator run ya no funciona. Tenía que hacerlo así: http://stackoverflow.com/a/25852899/2426994 manera. – JohnVanDijk

3

Estoy usando el siguiente script de inicio (en CentOS) para mi aplicación Play, parece funcionar bien, lo pone en segundo plano y en su propio grupo de proceso y sesión, por lo que es inmune a bloqueos, etc. play stage y target/start viene de Guillaume Bort y es "la forma correcta de hacerlo".

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

puede acudir Es aislados con:

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

Usted verá algo como:

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

Significado init (pid 1) es su padre y se está aislado en su propia grupo de proceso (2949).

1

Sugiero que prepare el binario de implementación del proyecto utilizando el comando de etapa que toma el script activador (anteriormente reproducir). Puede ejecutar ese binario en segundo plano, se puede encontrar en la ruta que muestra el segundo comando en el siguiente código.

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

Probablemente también desmaterés el proceso. – stephenmuss

0

Para jugar 2.2.3 ... jugar "start -Dhttp.port = 8080" funcionó para mí!

Cuestiones relacionadas