node.js程序在Linux系统中配置为系统服务并开机自启动

本文详细介绍了如何在Linux服务器上使用systemd创建系统服务,以便部署Node.js程序并实现开机自启动,提供了必要的配置步骤和常用指令,帮助读者简化部署过程并管理程序运行。
摘要由CSDN通过智能技术生成

0.前言

        因工作需要,本人需求在linux服务器上部署nodejs程序并设置开机自启动,翻阅了很多网络文章,有很多写shell脚本放入启动文件夹,用pm2来间接实现等多种方式的,不过要么经实践发现可行性不高,要么很麻烦,目标是希望用一种较为简洁的方法实现开机启动,后来发现可以将程序配置为系统服务,不但可以实现开机自启动,还能较为简单控制程序启停,也能较为简单地查看控制台输出,故在实践后总结分享,一方面是作为个人记录,另一方面也可以让后来者少踩坑。

        本文不再赘述如何在linux系统中安装node并配置为全局可使用,也不再赘述如何创建一个示例nodejs程序。

1.确定程序路径等必要信息

        创建系统服务文件需要明确启动程序的指令,以及运行程序的用户,所以需要准备如下信息:执行程序的用户名和用户组,执行程序的指令。

        可以用以下指令获取当前用户的用户名和用户组:

//get username in linux
$ id -un

//get usergroup in linux
$ id -gn

        如果node已经配置为全局可使用,执行程序的指令为node + 程序入口的js文件绝对路径;如果没有,执行程序的指令为node的安装绝对路径 + 程序入口的js文件绝对路径。本文中,假设node已经配置为全局可使用。

2.创建service文件

        创建一个名称为xxxx.service的文件,其中xxxx为程序的标识名字,请确保言简意赅且唯一,以后将作为系统服务的标识符使用。文件内容如下:

[Unit]
Description=sample_server

[Service]
ExecStart=node /home/aoi/program/sample_server/server.js
Restart=always
User=aoi
Group=aoi
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/aoi/program/sample_server

[Install]
WantedBy=multi-user.target

        其中Description为程序的简单描述;ExecStart为程序的执行指令,如上一章节所述;Restart为程序如何重启,always表示如果进程退出总是重启;User和Group为用户名和用户组,如上一章节所述;Environment为环境变量;WorkingDirectory为工作目录的绝对路径;WantedBy字段指定,设为开机启动时,该服务所在的Target是multi-user.target。

        创建完service文件之后,将文件放置于指定的系统服务文件夹中:

$ sudo cp sample_server.service /etc/systemd/system

3.常见的相关使用指令

        程序启动停止相关指令:

// 设置开机自启动
$ sudo systemctl enable sample_server

// 取消开机自启动
$ sudo systemctl disable sample_server

// 启动程序
$ sudo systemctl start sample_server

// 停止程序
$ sudo systemctl stop sample_server

// 重启程序
$ sudo systemctl restart sample_server

        查看日志相关指令:

// 查看程序运行的日志
$ journalctl -u sample_server

// 滚动查看程序运行的实时输出
$ journalctl -u sample_server -f

4.结束语

参考内容:

Deploying Node.js with systemd · Ruben Vermeersch (rubenv) (rocketeer.be)

Linux系统查看日志命令journalctl的一些用法 - 知乎 (zhihu.com)

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值