背景:

在上一篇文章中,我在服务器中部署了一个webhook-handler.js的node服务用于处理webhook的请求并拉取代码完成自动部署,但在实际使用中发现,这个服务经常莫名其妙就停掉了,导致我提交的代码没有及时更新到服务器。

经查阅资料发现,需要给node服务写一个.service文件,即进程守护文件,当服务异常崩溃的时候可以自动重启服务,提升服务的稳定性。

什么是Systemd?

systemd是目前大多数Linux发行版的内置进程管理工具,PID是1,是linux系统中启动的第一个进程,所有的其他进程都是systemd的子进程。

想要详细了解systemd可以参考阮一峰大佬写的这篇教程:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

具体操作:

1.在本地新建一个webhookhandler.service文件,记事本打开,写入如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Main Node.js Service
After=network.target

[Service]
ExecStart=/usr/bin/node /var/www/webhook-handler/main.js
Restart=always
User=root
Group=root
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/

[Install]
WantedBy=multi-user.target

2.将上一步创建的service文件传到/etc/systemd/system/目录下

3.启动service

💡 小提示:文件夹或文件名过长都可以敲两三个首字母然后敲tab自动补全哦~

1
sudo systemctl daemon-reload && sudo systemctl start webhookhandler.service

4.确认服务已启动

1
sudo systemctl status webhookhandler.service

如果状态是active则说明服务启动成功,快push一个提交测试一下吧~

image-20240122185447567