1. 安装sysv-rc-conf、forever
sudo apt-get install sysv-rc-conf
npm install forever -g
2. 创建并测试forever启动脚本
在 /etc/init.d/路径下创建启动脚本foreverCmds和foreverStart
2.1 forever启动nodejs项目的sh脚本foreverCmds:
#!/bin/bash
### BEGIN INIT INFO
# Provides: wf
# 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
# sysv-rc-conf: 2 3 5
# description: Forever for Node.js
# 项目启动程序路径
APP_PATH=/var/www/your_project
DEAMON=$APP_PATH/app.js
# forever 日志路径
HOME=/home/your_name
LOG=$HOME/.forever/forever.log
# forever pid 路径
PID=$HOME/.forever/forever.pid
forever=forever
# $1代表此脚本的参数:start stop stopall 等等。
case "$1" in
start)
$forever start -l $LOG --pidFile $PID -a $DEAMON
#$forever start $DEAMON
;;
stop)
$forever stop --pidFile $PID $DEAMON
;;
stopall)
$forever stopall --pidFile $PID
;;
restartall)
$forever restartall --pidFile $PID
;;
reload|restart)
$forever restart -l $LOG/forever.log -o $LOG/forever_out.log -e $LOG/forever_err.log --pidFile $PID -a $DEAMON
;;
list)
$forever list
;;*)
echo "Usage: /etc/init.d/foreverStart {start|stop|restart|reload|stopall|restartall|list}"
exit 1
;;esac
exit 0
测试该脚本:
sudo sh foreverCmds start
2.2 Ubuntu启动时,启动"foreverCmds"的sh脚本foreverStart:
#!/bin/bash
# 使用sudo启动,否则log没有权限
sudo sh /etc/init.d/foreverCmds start
测试该脚本:
sh foreverStart
3. 将sh脚本foreverStart加入守护进程
# 为脚本设置权限777:所有人都有读、写、执行权限
sudo chmod 777 /etc/init.d/foreverCmds
sudo chmod 777 /etc/init.d/foreverStart
# 建立软链接
sudo ln -s /etc/init.d/foreverStart /etc/rc2.d/S95foreverStart
sudo ln -s /etc/init.d/foreverStart /etc/rc3.d/S95foreverStart
sudo ln -s /etc/init.d/foreverStart /etc/rc5.d/S95foreverStart
4. 重启Ubuntu进行测试
4.1 重启后查看服务运行状态
service foreverStart status
4.2 外网查看项目运行状态
5. 删除服务
慎用:如果服务设置错了或者不想用了,可以删除
# 前提:/etc/init.d 中存在该服务
cd /etc/init.d
sudo rm ServiceName
sudo update-rc.d ServiceName remove