参考:https://blog.csdn.net/yuanguozhengjust/article/details/37512993
参考【非常经典】:https://cnodejs.org/topic/5059ce39fd37ea6b2f07e1a3
本人实战总结和代码优化!
我使用的是Centos7系统,配置比较简单,基于Centos7的开机启动其实就2个步骤:
第一步:写一个成功的shell脚本test.sh【我写一个forever的执行脚本,你在本地执行脚本就会运行,说明脚本是ok的】
#!/bin/bash
#
# node Start up node server daemon
#
# chkconfig: 345 85 15
# description: Forever for Node.js
# 上面这段解释代码必须要,否则你添加到chkconfig会提示错误:service X does not support chkconfig
# 定义一些字符串变量,在shell中字符串可以不需要加"",所以这里直接写路径【一定要绝对路径,避免路径问题执行出错】
PATH=/usr/local/nodejs/bin
DEAMON=/root/nodejs/test.js
log_path=/root/nodejs/logs
out_file=/root/nodejs/logs/out_file_test.log
err_file=/root/nodejs/logs/err_file_test.log
# 这里的$1 是当前shell文件执行命令传入的参数,比如执行【./nodej_test start】命令,自动会执行start匹配的命令
# 我这里没有使用pid进程管理,直接开启某个执行文件或停止所有即可【根据自己的需求来】
case "$1" in
start)
forever start -p $log_path -o $out_file $DEAMON
;;
stopall)
forever stopall
;;
restartall)
forever restartall
;;
list)
forever list
;;
*)
echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"
exit 1
;;
esac
exit 0
第二步:把他放入/etc/init.d开启启动目录下,然后使用chkconfig --add ,增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
注意:我的项目路径是/root/nodejs/test.js,在这个nodejs目录下创建了上面的test.sh脚本,所以我在/etc/init.d/目录下载创建一个shell脚本文件node_test.sh,我通过node_test.sh来启动上面的test.sh脚本【因为test.sh要传入一个start参数,开机启动是无法传参的】
# 这里非常重要,必须给test.sh文件传入一个参数,我传入一个启动参数start
bash /root/nodejs/test.sh start
最后把node_test.sh文件添加到系统中开机启动即可
# 第一步:这里给与node_test.sh的权限问题,尤其是755是别的文章介绍的,我也加上,centos7似乎不加也没问题
chmod +x node_test.sh
chmod 755 /etc/init.d/node_test.sh
# 第二步:把node_test.sh添加到系统服务器上开机启动
chkconfig --add /etc/init.d/node_test.sh
# 第三步:启动
chkconfig node_test.sh on //开启node_test.sh服务
#第四步:查看
chkconfig --list