你的 Node.js 应用还在裸奔运行吗?还在用
node app.js这种原始方式部署?是时候让 PM2 来接管了!不管你是 Node.js 新手,还是需要部署生产环境的开发者,本文都能帮你全面掌握这个必备神器,从基础使用到高级配置,简洁好懂、一网打尽。
一、为什么必须用 PM2?不只是守护进程
1. 传统部署的致命缺陷(新手必避坑)
# 🚨 新手常见错误部署方式
node app.js & # 后台运行,但崩溃不重启
nohup node app.js & # 日志管理麻烦
screen/tmux 运行 # 多实例管理复杂
forever start app.js # 功能单一,监控能力弱
2. PM2 核心优势(一站式解决方案)
# PM2 一键搞定
pm2 start app.js
# 1. 进程守护(崩溃自动重启)
# 2. 多核利用(cluster 模式)
# 3. 日志管理(自动切割归档)
# 4. 监控面板(实时状态查看)
# 5. 零秒重启(无停机热更新)
二、基础:5分钟快速上手
1. 安装与基本使用
# 全局安装(一次安装,终身可用)
npm install pm2 -g
# 启动应用(最简形式,app.js 是你的入口文件)
pm2 start app.js
# 查看所有进程(常用)
pm2 ls # 或 pm2 list
# 监控面板(可视化查看状态)
pm2 monit
# 查看日志(排查错误超有用)
pm2 logs # 所有应用日志
pm2 logs app # 指定应用日志
pm2 logs --lines 100 # 查看最近100行
2. 核心进程管理命令(记这几个就够)
# 启动相关
# 指定应用名,方便管理
pm2 start app.js --name "my-api"
# 启动4个实例(多核利用)
pm2 start app.js -i 4
# 文件变化自动重启(开发用)
pm2 start app.js --watch
# 停止/删除相关
pm2 stop app # 停止指定应用
pm2 stop all # 停止所有应用
pm2 delete app # 删除指定应用
pm2 delete all # 删除所有应用
# 重启相关
pm2 restart app # 普通重启(先停后启)
pm2 reload app # 零秒重启(优雅重启,生产首选)
三、进阶:生产环境配置实战
1. 用配置文件管理(推荐,更规范)
创建 ecosystem.config.js 文件,统一配置应用参数,适合生产环境:
// ecosystem.config.js
module.exports = {
apps: [{
name: 'my-app', // 应用名
script: './app.js', // 入口文件
instances: 'max', // 启动所有CPU核心(多核利用)
exec_mode: 'cluster', // 开启cluster模式
max_memory_restart: '1G',// 内存超1G自动重启(防泄漏)
autorestart: true, // 崩溃自动重启
log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志时间格式
error_file: '/var/log/pm2/my-app-err.log', // 错误日志路径
out_file: '/var/log/pm2/my-app-out.log', // 输出日志路径
env: { // 开发环境配置
NODE_ENV: 'development',
PORT: 3000
},
env_production: { // 生产环境配置
NODE_ENV: 'production',
PORT: 80
}
}]
}
启动命令:pm2 start ecosystem.config.js --env production
2. 关键进阶配置(生产必配)
-
日志轮转:安装
pm2 install pm2-logrotate,防止日志占满磁盘; -
开机自启:
pm2 save保存进程列表,再执行pm2 startup生成自启脚本; -
健康检查:在配置文件中添加健康检查,实时监控应用状态。
四、运维:日志、监控与问题排查
1. 日志管理
pm2 logs # 实时查看日志
pm2 flush # 清空所有日志
pm2 reloadLogs # 重新加载日志配置
2. 常见问题排查
-
进程频繁重启:用
pm2 logs app --lines 50查看错误原因,大概率是内存泄漏或代码报错; -
日志过大:安装日志轮转模块,或手动执行
pm2 flush; -
进程状态异常:用
pm2 describe app查看详细配置,排查端口冲突或依赖问题。
五、常用命令速查表(快速查阅)
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
六、最佳实践总结
-
生产环境优先用
ecosystem.config.js配置,不用命令行参数; -
开启 cluster 模式,充分利用多核CPU,提升性能;
-
配置日志轮转和内存限制,避免磁盘爆满、内存泄漏;
-
重启用
pm2 reload,实现零停机更新; -
定期执行
pm2 save,备份进程列表。
PM2 不只是进程守护工具,更是 Node.js 生产部署的完整解决方案。告别原始部署方式,用 PM2 让你的应用更稳定、更高效,新手也能轻松搞定生产环境!
文章评论