聊聊如何开机自启动node.js服务

885 阅读2分钟

前言

基于Node.js的应用服务部署到服务器(以Centos7.5为例)之后,我们一般会使用类似pm2这样的模块来处理负载均衡和后台线程保持。

但是,如果遇到服务器物理机重启,就需要手动连接到服务器重启node.js服务。

那么我们能不能让node.js的服务跟随系统重启自动启动呢?

我最先的思路是把node.js服务像mysqlnginx这类服务一样进行配置随系统重启,经过尝试后没有实现,如果哪位同学知道怎么弄,欢迎联系我。

经过技术研究后大体的实现思路就清晰了,首先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的启动项目中。