You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu服务器上将Node.js脚本作为后台服务运行?

我之前也遇到过类似的困扰——Node.js脚本后台运行的配置总是踩坑,给你几个亲测有效的方案,应该能解决你的问题:

方案1:使用systemd(Ubuntu官方推荐的稳定方案)

很多时候之前配置失败都是因为.service文件的细节没处理好,我给你一个经过验证的标准配置模板:

  • 创建服务配置文件:
    sudo nano /etc/systemd/system/mongo-crm-sync.service
    
  • 粘贴以下配置(一定要替换成你自己的路径和用户名):
    [Unit]
    Description=MongoDB与CRM实时同步服务
    After=network.target mongod.service  # 如果你的脚本依赖MongoDB服务,保留这行;否则可以删除
    
    [Service]
    Type=simple
    User=ubuntu  # 替换成你的服务器用户名,比如常用的ubuntu
    WorkingDirectory=/home/ubuntu/sync-scripts  # 脚本所在的目录路径
    ExecStart=/usr/bin/node /home/ubuntu/sync-scripts/sync.js  # Node的绝对路径(用`which node`可查询)+ 脚本绝对路径
    Restart=always  # 脚本崩溃后自动重启
    RestartSec=5  # 崩溃后5秒再重启
    Environment=NODE_ENV=production  # 可选,设置生产环境变量
    
    [Install]
    WantedBy=multi-user.target
    
  • 保存退出后,重新加载systemd配置:
    sudo systemctl daemon-reload
    
  • 启动服务:
    sudo systemctl start mongo-crm-sync
    
  • 设置开机自启:
    sudo systemctl enable mongo-crm-sync
    
  • 查看服务状态或实时日志:
    sudo systemctl status mongo-crm-sync
    # 或者实时查看日志
    journalctl -u mongo-crm-sync -f
    

如果之前配置失败,大概率是路径写错或者权限问题,记得给脚本和目录设置正确的权限:

chown your-username:your-username /path/to/your/script.js

方案2:使用PM2(Node.js专用进程管理器)

PM2对Node.js项目的管理非常友好,自带日志管理、自动重启、负载均衡等功能,上手成本极低:

  • 全局安装PM2:
    sudo npm install pm2 -g
    
  • 进入脚本所在目录,启动脚本并命名:
    pm2 start sync.js --name "mongo-crm-sync"
    
  • 设置PM2开机自启,按照终端提示执行生成的命令:
    pm2 startup ubuntu
    
  • 保存当前PM2进程列表,确保重启后自动恢复:
    pm2 save
    
  • 查看服务状态或日志:
    pm2 status
    # 查看指定服务的实时日志
    pm2 logs mongo-crm-sync
    

我自己的大部分Node.js后台服务都是用PM2管理的,几乎没出过问题,非常推荐。

方案3:使用nohup + screen(临时应急方案)

如果只是临时测试脚本,或者不想配置服务/进程管理器,可以用这个组合,缺点是服务器重启后需要手动重启脚本:

  • 先安装screen:
    sudo apt install screen
    
  • 创建一个新的screen会话:
    screen -S sync-session
    
  • 在会话中启动脚本(nohup会让脚本忽略挂起信号):
    nohup node sync.js &
    
  • 按Ctrl+A再按D退出会话,脚本会在后台持续运行
  • 重新进入会话查看脚本状态:
    screen -r sync-session
    
  • 查看脚本输出日志:
    cat nohup.out
    

几个关键注意点

  • 先在前台测试node sync.js,确保脚本本身能正常运行,没有数据库连接错误或代码报错
  • 确认服务器能正常访问MongoDB和CRM数据库(比如防火墙规则、内网权限等)
  • 如果CRM数据库需要特定的环境变量,记得在systemd配置或PM2启动时设置好

内容的提问来源于stack exchange,提问作者sangaloma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:30:20