
1. 为什么需要PM2管理Node.js应用每次手动启动Node.js应用是不是很麻烦特别是当你的Windows电脑或服务器重启后所有Node服务都需要重新运行。作为过来人我经历过无数次凌晨被叫起来重启服务的痛苦。直到发现了PM2这个神器它不仅能保持应用持续运行还能自动记录日志、监控性能最关键的是能实现开机自启。PM2本质上是一个Node.js进程管理器它解决了开发者最头疼的几个问题应用崩溃后自动重启系统重启后自动恢复服务多实例负载均衡实时监控应用状态集中管理日志输出我在Windows服务器上部署了十几个Node微服务全靠PM2才能安心睡觉。下面就把这套经过实战验证的方案完整分享给你从安装配置到高级功能手把手教你搭建稳定的自启环境。2. 环境准备与基础安装2.1 安装Node.js运行环境在开始之前确保你的Windows系统已经安装了Node.js。推荐使用LTS版本当前是18.x安装过程非常简单访问Node.js官网下载Windows安装包双击运行安装向导全部保持默认设置安装完成后打开命令提示符验证版本node -v npm -v如果看到版本号输出说明环境已经就绪。我建议使用管理员身份运行命令提示符因为后续的PM2安装需要系统权限。2.2 安装PM2核心模块全局安装PM2只需要一行命令npm install pm2 -g安装完成后检查PM2版本pm2 -v这里有个常见坑点某些网络环境下npm安装可能很慢。我通常会用淘宝镜像加速npm install pm2 -g --registryhttps://registry.npmmirror.com安装完成后PM2会自动注册为系统服务。你可以通过任务管理器查看PM2进程是否在运行。3. 配置开机自启动功能3.1 安装Windows自启模块PM2本身不直接支持Windows开机启动需要额外安装一个桥接模块npm install pm2-windows-startup -g这个模块会在系统启动时自动唤醒PM2再由PM2恢复所有托管的应用。安装完成后需要执行初始化pm2-startup install你会看到类似这样的输出[PM2] Init System found: windows [PM2] To setup the Startup Script, copy/paste the following command: pm2 save这表示PM2已经注册为系统服务。我建议立即重启电脑测试效果不过我们先完成后续配置。3.2 添加应用到PM2管理假设你的Node应用入口文件是D:\projects\myapp\server.js使用以下命令启动并命名pm2 start D:\projects\myapp\server.js --name myapp --watch关键参数说明--name给应用起个易记的名称--watch监听文件改动自动重启--log指定日志文件路径可选我习惯为每个应用创建单独的日志文件pm2 start D:\projects\myapp\server.js --name myapp --watch --log D:\logs\myapp.log3.3 保存当前应用列表这是最关键的一步执行以下命令保存当前PM2管理的所有应用pm2 save这个命令会在%USERPROFILE%\.pm2目录生成dump.pm2文件记录所有托管应用的信息。系统重启后PM2会根据这个文件自动恢复所有应用。4. 高级管理与监控技巧4.1 多实例与负载均衡对于高并发场景PM2可以轻松实现多实例负载均衡。比如启动4个实例pm2 start server.js -i 4 --name myapp或者直接根据CPU核心数自动分配pm2 start server.js -i max --name myapp我在部署API服务时常用这个功能实测可以显著提高吞吐量。通过pm2 monit可以实时查看各实例的资源占用情况。4.2 日志管理实战PM2的日志系统非常强大但默认配置可能很快占满磁盘。这是我的推荐配置安装日志轮转模块npm install pm2-logrotate -g pm2 set pm2-logrotate:max_size 10M pm2 set pm2-logrotate:retain 30 pm2 set pm2-logrotate:compress true这样配置后单个日志超过10MB会自动分割保留最近30个日志文件自动压缩旧日志查看实时日志pm2 logs myapp4.3 常用运维命令日常维护时这些命令特别实用重启单个应用pm2 restart myapp停止所有应用pm2 stop all删除应用pm2 delete myapp查看应用列表pm2 list监控资源使用pm2 monit我习惯用pm2 ls快速查看所有应用状态绿色表示运行正常红色则需要立即检查。5. 故障排查与优化建议5.1 自启动失败的常见原因根据我的踩坑经验开机自启失败通常是因为PM2服务未正确安装重新执行pm2-startup install应用路径包含中文或空格建议使用英文路径权限不足以管理员身份运行命令提示符Node环境变量问题检查PATH是否包含Node.js安装目录5.2 性能优化技巧长期运行的Node服务需要注意设置合理的--max-memory-restart参数避免内存泄漏使用--no-autorestart关闭开发时的自动重启通过pm2 update定期升级PM2版本在ecosystem.config.js中配置高级参数这是我常用的生产环境配置示例module.exports { apps: [{ name: api, script: ./server.js, instances: max, autorestart: true, watch: false, max_memory_restart: 1G, env: { NODE_ENV: production } }] }5.3 安全防护措施部署生产环境时务必注意不要使用--watch参数避免被恶意文件篡改攻击定期清理日志文件为PM2设置密码pm2 set pm2:password yourpassword限制监控接口的访问IP我在实际项目中会结合Windows防火墙规则只允许内网IP访问PM2的监控端口默认是9615。