2012-06-06 25 views
6

Me gustaría tener un demonio init.d para reiniciar mi aplicación node.js si falla. Este script inicia/detiene mi aplicación de nodo. No he tenido suerte para reiniciar la aplicación si falla.Reiniciar la aplicación Node.js con init.d

Me estoy ejecutando bajo CentOS. ¿Qué me estoy perdiendo?

#!/bin/sh 
. /etc/rc.d/init.d/functions 

USER="rmlxadmin" 
DAEMON="/usr/bin/nodejs" 
ROOT_DIR="/home/rmlxadmin" 

SERVER="$ROOT_DIR/my_node_app.js" 
LOG_FILE="$ROOT_DIR/app.js.log" 

LOCK_FILE="/var/lock/subsys/node-server" 

do_start() 
{ 
     if [ ! -f "$LOCK_FILE" ] ; then 
       echo -n $"Starting $SERVER: " 
       runuser -l "$USER" -c "$DAEMON $SERVER >> $LOG_FILE &" && echo_success || echo_failure 
       RETVAL=$? 
       echo 
       [ $RETVAL -eq 0 ] && touch $LOCK_FILE 
     else 
       echo "$SERVER is locked." 
       RETVAL=1 
     fi 
} 
do_stop() 
{ 
     echo -n $"Stopping $SERVER: " 
     pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}'` 
     kill -9 $pid > /dev/null 2>&1 && echo_success || echo_failure 
     RETVAL=$? 
     echo 
     [ $RETVAL -eq 0 ] && rm -f $LOCK_FILE 
} 

case "$1" in 
     start) 
       do_start 
       ;; 
     stop) 
       do_stop 
       ;; 
     restart) 
       do_stop 
       do_start 
       ;; 
     *) 
       echo "Usage: $0 {start|stop|restart}" 
       RETVAL=1 
esac 
exit $RETVAL 

Respuesta

8

Necesita herramientas adicionales como node-supervisor para este caso.

  1. Instalar nodo supervisor NPM:

    sudo NPM instalar el supervisor -g

  2. cambio de variable DAEMON en el script init.d al nodo supervisor de-ejecutable:/usr/bin/supervisor de . Puede verificar esta ruta usando el comando 'whereis supervisor' en su sistema (después de la instalación, por supuesto).

Ahora el supervisor reiniciará su aplicación si se produce un bloqueo.

+0

Gracias Vadim que lo hace! – Sparky1

Cuestiones relacionadas