以下是基于知识库信息整理的 PM2 使用详细介绍,涵盖安装、基础操作、高级功能、配置管理及最佳实践等内容:
一、PM2 简介
PM2 是一个用于 Node.js 应用的进程管理器,支持进程守护、负载均衡、日志管理、自动重启等功能,适用于开发和生产环境。它不仅支持 Node.js,还可管理其他语言(如 Python、Java)的进程。
二、安装 PM2
1. 安装 Node.js
PM2 需要 Node.js 环境,可通过以下方式安装:
1 2 3 4 5
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" nvm install node
|
2. 安装 PM2
1 2 3
| npm install pm2@latest -g # 全局安装 PM2 # 或使用 Yarn yarn global add pm2
|
验证安装:
三、基础命令
1. 启动应用
1 2 3
| pm2 start app.js pm2 start server.py --name my-python-app pm2 start bash_script.sh --interpreter sh
|
2. 参数说明
- –name :指定应用名称。
- –watch:文件变动时自动重启。
- –no-daemon:在前台运行(非守护进程)。
- –log :指定日志路径。
- –max-memory-restart :内存超过指定值时重启(如–max-memory-restart 200M)。
- –cron ““:按计划重启(如–cron “0 2 * * *” 每天凌晨2点重启)。
3. 管理进程
1 2 3 4 5
| pm2 list pm2 restart app_name pm2 stop app_name pm2 delete app_name pm2 delete all
|
4. 查看日志
1 2
| pm2 logs pm2 logs app_name --lines 100
|
5. 监控状态
1 2
| pm2 monit pm2 show app_name
|
四、高级功能
1. 负载均衡(集群模式)
通过多进程提升性能:
1 2
| pm2 start app.js -i max pm2 start app.js -i 4
|
2. 生态系统配置文件(ecosystem.config.js)
统一管理多应用配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| module.exports = { apps : [{ name: "my-api", script: "app.js", instances: "max", autorestart: true, watch: ["src/"], env: { NODE_ENV: "development" }, env_production: { NODE_ENV: "production" } }] };
|
启动配置文件:
1
| pm2 start ecosystem.config.js
|
3. 环境变量管理
1 2 3
| pm2 start app.js --env production pm2 startup pm2 save
|
4. 部署与更新
1 2 3
| pm2 update pm2 reload app_name pm2 scale app_name +2
|
五、常见场景与最佳实践
1. 结合 Nginx 反向代理
1 2 3 4 5 6 7 8 9 10 11 12 13
| server { listen 80; server_name yourdomain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
|
2. 日志轮转与清理
1 2 3
| pm2 flush pm2 describe app_name | grep pm2-log-path
|
3. 安全与监控
1 2 3 4
| pm2 describe app_name pm2 logs --json
pm2 link
|
六、常见问题
1. 进程无法启动
- 检查日志:pm2 logs app_name
- 验证权限:确保脚本可执行(chmod +x script.sh)。
2. 内存泄漏或崩溃
- 设置内存阈值:pm2 start app.js –max-memory-restart 200M
- 启用自动重启:pm2 restart app_name –update-env
3. 集群模式下会话共享
七、PM2 生态系统工具
1. PM2 Plus
- 提供商业级监控、告警、跨服务器管理等功能。
- 访问pm2.io获取更多信息。
2. PM2 插件
安装插件扩展功能:
1
| pm2 install pm2-logrotate
|
八、总结
PM2 是一个功能强大的进程管理工具,适用于 Node.js 及其他语言的长期运行应用。通过进程守护、负载均衡、日志管理等特性,可显著提升应用的稳定性和性能。结合 Nginx、环境变量配置和监控工具,能构建完整的生产环境部署方案。