2012-06-06 34 views
6

Tôi muốn có init.d daemon khởi động lại ứng dụng node.js của tôi nếu nó gặp sự cố. Tập lệnh này bắt đầu/dừng ứng dụng nút của tôi. Tôi đã không có may mắn nhận được nó để khởi động lại ứng dụng nếu nó bị treo.Khởi động lại ứng dụng Node.js với init.d

Tôi đang chạy trong CentOS. Tôi đang thiếu gì?

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

Trả lời

8

Bạn cần sử dụng các công cụ bổ sung như node-supervisor cho trường hợp này.

  1. Cài đặt nút-giám sát với NPM:

    sudo NPM cài đặt giám sát -g

  2. Thay đổi biến DAEMON trong kịch bản init.d của bạn để Node-giám sát thực thi:/usr/bin/giám sát . Bạn có thể kiểm tra đường dẫn này bằng cách sử dụng lệnh 'whereis supervisor' trong hệ thống của bạn (sau khi cài đặt, tất nhiên).

Giám sát viên sẽ khởi động lại ứng dụng của bạn nếu nó bị lỗi.

+0

Cảm ơn Vadim đã làm điều đó! – Sparky1

Các vấn đề liên quan