侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 4 条评论

怎么把程序配置为systemd 服务(nps为例)

2025-7-30 / 0 评论 / 6611 阅读

方法一:手动编写 Systemd 服务文件(通用且推荐)

适用于所有可执行程序,无需依赖额外工具。

步骤 1:确定程序路径和工作目录

假设 nps 程序位于 /opt/nps 目录下(需替换为实际路径),执行命令为 ./nps start,则:

  • 工作目录(WorkingDirectory):/opt/nps
  • 可执行文件路径(ExecStart):/opt/nps/nps(需确保 nps 有执行权限:chmod +x /opt/nps/nps

步骤 2:创建 Systemd 服务文件

/etc/systemd/system/ 目录下创建服务文件(如 nps.service):

sudo vi /etc/systemd/system/nps.service

写入以下内容(替换路径和用户):

[Unit]
Description=NPS Service  # 服务描述
After=network.target    # 网络就绪后启动(若依赖网络)

[Service]
Type=simple             # 简单服务类型(前台运行,Systemd 跟踪进程)
User=root               # 运行用户(建议改为非 root 用户,如创建 nps 用户)
Group=root              # 运行用户组(同上)
WorkingDirectory=/opt/nps  # 程序工作目录(替换为实际路径)
ExecStart=/opt/nps/nps start  # 启动命令(替换为实际路径)
Restart=on-failure      # 程序异常退出时自动重启
RestartSec=5s           # 重启间隔 5 秒
StandardOutput=syslog   # 标准输出重定向到系统日志
StandardError=syslog    # 错误输出重定向到系统日志
SyslogIdentifier=nps    # 日志标识(便于过滤)

[Install]
WantedBy=multi-user.target  # 多用户环境下自动启动(系统启动时加载)

步骤 3:配置并启动服务

  1. 重新加载 Systemd 配置(每次修改服务文件后需执行):

    sudo systemctl daemon-reload
  2. 设置开机自启

    sudo systemctl enable nps.service
  3. 启动服务

    sudo systemctl start nps.service
  4. 检查服务状态

    sudo systemctl status nps.service
    • 若状态为 active (running),则配置成功。
    • 若失败,可通过 journalctl -u nps.service -f 实时查看日志排查问题。

方法二:使用 add-to-systemd 工具(Node.js 环境下简化配置)

若系统已安装 Node.js,可通过 add-to-systemd 工具自动生成服务文件,适合快速部署。

步骤 1:安装 add-to-systemd

npm install --global add-to-systemd

步骤 2:生成并配置服务

进入 nps 程序的工作目录(如 /opt/nps),执行以下命令(替换路径和命令):

cd /opt/nps
add-to-systemd "nps start" --name=nps --cwd=/opt/nps --user=root
  • --name=nps:服务名称为 nps
  • --cwd=/opt/nps:指定工作目录。
  • --user=root:指定运行用户(建议改为非 root 用户)。

该命令会自动生成 /etc/systemd/system/nps.service 文件,并填充配置。

步骤 3:启动并验证服务

方法一的步骤 3 相同:

sudo systemctl daemon-reload
sudo systemctl enable nps.service
sudo systemctl start nps.service
sudo systemctl status nps.service

关键注意事项

  1. 权限与安全

    • 建议创建独立用户(如 nps)运行服务,避免使用 root:
      sudo useradd -r -s /sbin/nologin nps  # 创建系统用户
      sudo chown -R nps:nps /opt/nps        # 赋予目录权限

      并在服务文件中修改 User=npsGroup=nps

  2. 日志管理

    • 通过 journalctl -u nps.service 查看历史日志,或 journalctl -u nps.service -f 实时跟踪。
    • 若需将日志输出到文件,可修改 StandardOutput 为文件路径(如 StandardOutput=/var/log/nps.log)。
  3. 服务依赖

    • nps 依赖数据库、Redis 等服务,需在 [Unit] 中添加 After=mysql.service redis.service(替换为实际服务名)。

评论一下?

OωO
取消