引言
Node.js 这个服务端 JavaScript 运行时,能帮你打造高性能的实时 Web 和移动应用。不过相比传统的 Apache 或 Nginx 这类 Web 服务器,Node 应用的管理可要多花点心思。
PM2 就是专为生产环境设计的 Node 应用进程管理系统。这篇指南将手把手教你安装配置 PM2,分享实战中的最佳姿势,让你的应用稳如老狗。
准备工作
- 确保你的系统(macOS/Linux/Windows)已安装 Node 和 NPM
- 以 root 用户登录服务器
1. 通过 NPM 安装 PM2
一行命令搞定 PM2 安装:
# npm install pm2 -g
2. 创建示例 Node 应用(可选)
如果你已有现成的 Node 应用,直接跳过这步。
用你顺手的编辑器创建 app.js
文件,塞入以下代码:
const http = require('http');
const hostname = '0.0.0.0';
const port = 80;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
保存退出后,你就得到了一个监听 80 端口的极简 Web 服务——每当收到请求时,它都会傲娇地回一句 “Hello World”。
3. 用 PM2 启动应用
启动命令很简单(记得把 app.js 换成你的入口文件):
# pm2 start app.js
PM2 还支持这些骚操作参数:
--name <应用名>
- 给应用起个响亮的名字--watch
- 文件变动时自动重启--max-memory-restart <100MB>
- 内存超限自动重启--log <日志文件>
- 指定日志路径-- arg1 arg2
- 传递额外参数- …(更多参数参见官方文档)
4. 应用管理四连
- 重启应用:
# pm2 restart app
- 热重载应用:
# pm2 reload app
- 停止应用:
# pm2 stop app
- 删除应用:
# pm2 delete app
5. 查看应用列表
想知道 PM2 在托管哪些应用?敲这个:
# pm2 list
6. 实时日志追踪
想看实时日志:
# pm2 logs
查看历史日志(200行示例):
# pm2 logs --lines 200
7. 资源监控
实时监控 CPU/内存占用:
# pm2 monit
8. 炫酷的 Web 仪表板
运行这个命令开启可视化监控:
# pm2 plus
根据提示注册/登录 PM2 账户后,浏览器打开生成的地址就能看到炫酷的监控面板啦!
9. 开机自启配置
让 PM2 随系统启动:
# pm2 startup
反悔了想取消?用这个:
# pm2 unstartup systemd
10. 应用自启管理
保存当前应用列表:
# pm2 save
手动恢复应用:
# pm2 resurrect
11. 检查更新
查看需要更新的包:
# npm outdated -g
12. 升级 PM2
升级时会短暂中断服务,请合理安排时间:
# npm install pm2@latest -g
内存热更新(无需重启):
# pm2 update
最佳实践与安全指南
集群模式防宕机
通过多实例运行避免服务中断:
# pm2 start app.js -i 3 # 启动3个实例
# pm2 scale app 4 # 动态扩容到4个实例
优雅停机不掉请求
在代码中添加信号处理逻辑,让应用完美收尾:
process.on('SIGINT', function() {
console.log('收到停机信号,开始收尾工作');
server.close();
process.exit();
});
结语
现在你已经掌握了 PM2 的核心玩法,从基础部署到集群优化、优雅停机这些进阶技巧。接下来就放手去折腾你的 Node.js 应用吧,让 PM2 做你最可靠的后盾!