前言
基于Node.js
的应用服务部署到服务器(以Centos7.5为例)之后,我们一般会使用类似pm2
这样的模块来处理负载均衡和后台线程保持。
但是,如果遇到服务器物理机重启,就需要手动连接到服务器重启node.js
服务。
那么我们能不能让node.js
的服务跟随系统重启自动启动呢?
我最先的思路是把node.js
服务像mysql
、nginx
这类服务一样进行配置随系统重启,经过尝试后没有实现,如果哪位同学知道怎么弄,欢迎联系我。
经过技术研究后大体的实现思路就清晰了,首先node.js
的服务都是通过bash
脚本运行和启动的,只需要用shell
脚本写好目标项目的启动命令;然后把启动脚本加入到centos
系统的开机自启动项中,就可以实现服务器开机重启时自动启动我们的node.js
服务了。
实现
1. shell
启动脚本
首先我们需要先编写好启动node.js
服务的脚本,脚本的存放位置根据自己的需要放置即可。
#!/bin/bash
# 切换到目标项目目录下
cd 你的node应用根目录
# 启动服务
yarn start
# or
npm run start
2. centos
自启动配置
在CentOS 7
中,开机启动脚本的位置为/etc/rc.d/rc.local
文件。
2.1 打开rc.local
文件:
sudo vi /etc/rc.d/rc.local
2.2 在rc.local
文件中添加需要在开机时自动执行的命令
比如我们想在开机时自动启动一个名为auto-start.sh
的脚本,只需要在rc.local
文件中添加如下内容:
sh /path/to/auto-start.sh
添加完成后保存文件退出。
需要注意的是,rc.local
文件必须具有可执行权限,因此你需要运行以下命令来添加权限:
sudo chmod +x /etc/rc.d/rc.local
现在,每次启动CentOS 7
时,该脚本都会自动运行。
总结
实现node.js
服务在centos7
上开机自动启动,只需要配置一个node.js
启动脚本,然后把脚本配置到centos7
的启动项目中。