美文网首页
Ubuntu 16.04 下 nodejs项目实现自启动(sys

Ubuntu 16.04 下 nodejs项目实现自启动(sys

作者: AsaGuo | 来源:发表于2018-08-09 17:10 被阅读11次

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

相关文章

网友评论

      本文标题:Ubuntu 16.04 下 nodejs项目实现自启动(sys

      本文链接:https://www.haomeiwen.com/subject/mxecbftx.html