play start
소스 코드에서 플레이 프레임워크 웹 애플리케이션을 배포하고 실행하여 애플리케이션을 시작하고 싶습니다 .
/etc/init.d/
서비스 시작 시 실행되는 시작 스크립트를 작성했는데 서비스 시작 명령이 반환되지 않습니다.daemon play start
+ 를 play start
입력하기를 기다리고 있기 때문인 것 같습니다 . 고칠 수는 있지만 그러려면 애플리케이션을 중지하기 위해 실행해야 하는데 그게 마음에 들지 않습니다.CtrlDnohup
nohup
kill -9 xxx
소스 코드에서 플레이 프레임워크 애플리케이션을 Linux 시작 서비스로 실행하는 가장 좋은 방법은 무엇입니까?
답변1
이는 init.d
다음과 같은 간단한 스크립트입니다.
start
: 애플리케이션이 아직 시작되지 않은 경우에만 백그라운드에서 애플리케이션을 다시 컴파일하고(필요한 경우) 시작합니다.stop
: 애플리케이션 종료
코드의 주석을 주의 깊게 읽어보세요.
#!/bin/sh
# /etc/init.d/playapp
# Play project directory is in /var/play/playapp/www, not directly in SDIR
SDIR="/var/play/playapp"
# The following part always gets executed.
echo "PLAYAPP Service"
# The following part carries out specific functions depending on arguments.
case "$1" in
start)
echo " * Starting PLAYAPP Service"
if [ -f ${SDIR}/www/target/universal/stage/RUNNING_PID ]
then
PID=$(cat ${SDIR}www/target/universal/stage/RUNNING_PID)
if ps -p $PID > /dev/null
then
echo " service already running ($PID)"
exit 1
fi
fi
cd ${SDIR}/www
# REPLACE "PROJECT_NAME" with your project name
if [ ! -f ${SDIR}/www/target/universal/stage/bin/PROJECT_NAME ]
then
echo " recompiling..."
# REPLACE path to your play command
/var/play-install/play/play clean compile stage
fi
echo " starting..."
nohup ./target/universal/stage/bin/PROJECT_NAME -Dhttp.port=9900 -Dconfig.file=/var/play/playapp/www/conf/application-prod.conf > application.log 2>&1&
;;
stop)
echo " * Stopping PLAYAPP Service"
if [ ! -f ${SDIR}/www/target/universal/stage/RUNNING_PID ]
then
echo " nothing to stop"
exit 1;
fi
kill -TERM $(cat ${SDIR}/www/target/universal/stage/RUNNING_PID)
;;
*)
echo "Usage: /etc/init.d/playapp {start|stop}"
exit 1
;;
esac
exit 0