2012-05-23 2 views
6

У меня есть приложение для Play 2.0, установленное на EC2, и я запускаю приложение с 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 больше не работает. Придется сделать это: http://stackoverflow.com/a/25852899/2426994 способом. – JohnVanDijk

3

Я использую следующий сценарий запуска (для CentOS) для своего приложения Play, кажется, работает нормально, он помещает его в фоновом режиме и в свою собственную группу процессов и сеанса, поэтому он невосприимчив к зависаниям и т. Д. play stage и target/start происходит от Guillaume Bort и является «правильным способом его выполнения».

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

Значение init (ИДП 1) является его родителем, и он изолирован в своей собственной группа процессов (2949).

1

Я предлагаю вам подготовить двоичный файл развертывания проекта, используя команду этапа, которую выполняет сценарий активатора (ранее играющий). Вы можете запустить этот двоичный код в фоновом режиме, его можно найти в пути, который показывает вторая команда в приведенном ниже коде.

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

Вы также должны, вероятно, отказаться от процесса. – stephenmuss

0

Для игры 2.2.3 ... play "start -Dhttp.port = 8080" работал для меня!

Смежные вопросы