返回列表 發帖

利用forever在Linux上实现Node.js项目自启动

http://blog.csdn.net/yuanguozhengjust/article/details/37512993


最早,我想着试试在/etc/rc.local中增加一句forever start xxx看看,结果发现Ubuntu(其他系统一样)就不鸟我,主要矛盾就是MongoDB使用这种方式就可以跑起来,forever就不行,无奈之下,还是从/etc/init.d的角度去考虑吧。
首先感谢这篇文章和它的作者,http://cnodejs.org/topic/5059ce39fd37ea6b2f07e1a3,真是为数不多的珍贵资料!
前提是要先把forever好,方法很简单,执行如下命令就好:
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
npm install forever -g  
安装完成后,用一个简单的Node程序测试一下:
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
forever start test.js  
forever stop test.js  
forever restart test.js  
只要不提示error,就表明forever是可以用的,也就是说用forever来后台开启一个Node项目的基本条件已经具备,剩下的就是来编写一个启动脚本了。
脚本的基本内容如下,感谢原作者的辛勤劳动:
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
#!/bin/bash  
### BEGIN INIT INFO  
# Provides:          xiyoulib  
# Required-Start:    $all  
# Required-Stop:     $all  
# Default-Start:     2 3 4 5  
# Default-Stop:      0 1 6  
# Short-Description: Start daemon at boot time  
# Description:       Enable service provided by daemon.  
### END INIT INFO  
# chkconfig: 345 88 08  
# description: Forever for Node.js  
  
DEAMON=/node.js/XiyouLibNodeExpress/bin/www   #这里需要填写你自己的Node项目的启动脚本文件  
LOG=/node.js/log/log  #可选,日志文件目录  
PID=/node.js/pid  #必填内容,用于记录forever的进程号  
  
export PATH=$PATH:/usr/local/bin  #在这里指定一下Node的可执行程序安装目录,我的是/usr/local/bin  
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules  #这里是Node类库的路径  
  
#往下的内容就不用修改了  
  
node=node  
forever=forever  
  
case "$1" in  
    start)  
        $forever start -l $LOG --pidFile $PID -a $DEAMON  
        ;;  
    stop)  
        $forever stop --pidFile $PID $DEAMON  
        ;;  
    stopall)  
        $forever stopall --pidFile $PID  
        ;;  
    restartall)  
        $forever restartall --pidFile $PID  
        ;;  
    reload|restart)  
        $forever restart -l $LOG --pidFile $PID -a $DEAMON  
        ;;  
    list)  
        $forever list  
        ;;  
    *)  
        echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"  
        exit 1  
        ;;  
esac  
在这里提醒一下:最好为Node项目单独在根目录下建立一个目录,如/Node.js,然后权限设为754,这样可以避免一些权限问题而造成的麻烦!
由于用的是Ubuntu Server系统,上面还配置了MongoDB的启动服务,而且在其init.d的脚本中加入了以下的语句:
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
# Required-Start:    $all  
# Required-Stop:     $all

返回列表