linux-开机启动nodejs脚本

在一些日常工作中,常常会开发一些小工具,但是这些工具又没有类似服务的功能,服务器重启了又需要手动启动程序,这是十分麻烦的,这个时候就需要考虑开机脚本自动启动

在Linux系统中,将Node.js脚本添加到启动项通常涉及到创建一个服务或使用系统的初始化系统来实现。以下是几种常见的方法:

使用Systemd(适用于使用systemd的系统,如Ubuntu 16.04+,CentOS 7+,等)

1 创建systemd服务文件:在/etc/systemd/system/目录下创建一个新的服务文件,例如mynodejsscript.service

sudo nano /etc/systemd/system/mynodejsscript.service

2 编辑服务文件:添加以下内容,并根据需要修改ExecStart路径和其他参数。

[Unit]
Description=My Node.js Script
After=network.target

[Service]
ExecStart=/usr/local/bin/node /data/root/deploy/client.js
Restart=always
User=root
Group=root
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/data/root/deploy/
StandardOutput=file:/data/root/deploy/client.log
StandardError=file:/data/root/deploy/client.log

[Install]
WantedBy=multi-user.target

3 重新加载systemd配置

sudo systemctl daemon-reload

启用并启动服务

sudo systemctl enable mynodejsscript  
sudo systemctl start mynodejsscript

5服务配置的详细解释 

当然可以,这是一个 systemd 服务单元文件,通常用于定义 Linux 系统上如何启动、停止和管理服务。以下是对文件中各部分的逐行解释:

[Unit]

  • Description=My Node.js Script

    • 这行提供了服务的描述,即“My Node.js Script”。它用于描述服务的用途或内容,通常用于管理工具(如 systemctl)在显示服务列表时提供信息。
  • After=network.target

    • 这行表示此服务应在网络目标之后启动。network.target 是一个 systemd 的特殊目标,它表示网络子系统已经准备好。这意味着服务将等待网络完全启动后再开始。

[Service]

  • ExecStart=/usr/local/bin/node /data/root/deploy/client.js

    • 这是服务启动时执行的命令。它使用 /usr/local/bin/node 来执行 /data/root/deploy/client.js 脚本。
  • Restart=always

    • 这表示如果服务退出,它应始终被重新启动。always 表示无论退出状态是什么,服务都会重启。
  • User=root

    • 这表示服务应以 root 用户的身份运行。
  • Group=root

    • 这表示服务应以 root 组的身份运行。
  • Environment=PATH=/usr/bin:/usr/local/bin

    • 这行设置了服务的环境变量 PATH,它指定了可执行文件搜索的目录。
  • Environment=NODE_ENV=production

    • 这行设置了另一个环境变量 NODE_ENV,并将其设置为 production。这通常用于 Node.js 应用程序,以指示它应在生产环境中运行。
  • WorkingDirectory=/data/root/deploy/

    • 这行设置了服务的工作目录,即它启动时的当前目录。
  • StandardOutput=file:/data/root/deploy/client.log

    • 这表示服务的标准输出(stdout)应被写入 /data/root/deploy/client.log 文件。
  • StandardError=file:/data/root/deploy/client.log

    • 这表示服务的标准错误(stderr)也应被写入 /data/root/deploy/client.log 文件。

[Install]

  • WantedBy=multi-user.target

    • 这行指示 systemd 在 multi-user.target 目标被激活时启动此服务。multi-user.target 是一个系统状态,它表示系统已经准备好进行多用户操作,通常是在系统启动过程中达到的一个点。

这个文件定义了如何管理一个 Node.js 脚本作为 systemd 服务,包括它的启动方式、用户权限、环境变量设置等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值