Node 应用部署:pm2 常用命令与开机自启
发布时间:2026-01-30 16:21       
更新时间:2026-01-31 05:40
Node 应用挂掉最常见的原因不是代码报错,而是终端一关,前台进程就跟着退了。pm2(Node 的进程守护管理工具)解决的就是这件事:常驻运行、崩溃自动拉起、开机自启。下面按完整流程走一遍。
一、准备条件
确认 Node 环境可用:
node -v
npm -v
全局安装 pm2:
npm install -g pm2
Node 建议选 LTS(长期支持)版本;用 nvm 管理多版本的话,注意 pm2 装在哪个 Node 下面,切换版本后要在新版本下重装一遍全局包,否则命令会突然找不到。
二、启动与日常查看
最直接的启动方式:
pm2 start app.js --name web
项目用 npm scripts 启动的,包一层再跑:
pm2 start npm --name api -- run start
常用查看命令:pm2 list 看进程表;pm2 show web 看单个进程的内存、重启次数和日志路径;pm2 logs web --lines 100 看最近一百行日志;pm2 monit 进入实时资源监控。进程信息里的重启次数是判断稳定性的第一指标,数字持续增长就要去翻日志。改完代码用 pm2 restart web 重启单个应用;pm2 delete web 才是从进程表移除,两个动作别混。进程频繁重启时先看 logs 里的报错,多数是启动即崩,是应用本身的问题而非 pm2 的问题。日志默认落在 ~/.pm2/logs 目录下,排查历史问题时直接翻文件比刷屏快。
三、配置开机自启
执行:
pm2 startup
命令会输出一行与环境对应的 sudo 命令(systemd 系统大致形如 sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u 用户名 --hp /home/用户名),复制执行即可注册系统服务。关键的第二步:
pm2 save
它把当前进程表固化到磁盘,服务器重启后按这份清单拉起应用。重启机器后跑一遍 pm2 list 验证进程是否自动在线,也可以用 systemctl list-unit-files 确认 pm2 的服务单元已注册。很多"重启后应用没起来"的案例,就是漏了 pm2 save 这一步。
四、常见报错与处理
启动报 EADDRINUSE 说明端口被占,用 ss -lntp | grep 3000 找到占用进程停掉再启。日志文件涨得太快,装个切割插件:pm2 install pm2-logrotate。担心内存缓慢泄漏的应用,启动时加 --max-memory-restart 500M,超过阈值自动重启兜底。改配置前用 pm2 env web 查看进程实际生效的环境变量,排查"配置明明改了却没生效"这类问题很有用。每次改动进程表(新增或删除应用)后记得再执行一次 pm2 save,否则下次重启又回到旧清单。