Node.js 生产环境部署:使用 PM2 实现 5 个关键进程管理与 Nginx 反向代理配置
当你的 Node.js 应用从开发环境走向生产环境时,简单的 node app.js 启动方式已经无法满足需求。本文将深入探讨如何通过 PM2 实现专业级的进程管理,并结合 Nginx 反向代理构建高可用的生产环境部署方案。
1. 为什么需要 PM2 和 Nginx?
在开发环境中,我们习惯直接运行 node app.js 来启动应用,这种方式存在几个致命缺陷:
- 进程崩溃即服务终止 :任何未捕获的异常都会导致整个应用下线
- 缺乏负载均衡 :单进程无法充分利用多核 CPU 性能
- 日志管理困难 :控制台输出难以长期保存和分析
- 零停机部署困难 :更新代码需要手动重启服务
PM2 解决了这些核心痛点:
- 进程守护 :自动重启崩溃的应用
- 集群模式 :充分利用多核 CPU
- 日志管理 :集中收集和轮转日志
- 监控功能 :实时查看应用状态
- 零停机重启 :无缝更新应用代码
而 Nginx 作为反向代理,则提供了:
- 高性能静态文件服务
- 负载均衡
- SSL 终端
- HTTP/2 支持
- 请求缓存
2. PM2 核心配置实战
2.1 安装与基础使用
首先全局安装 PM2:
npm install pm2 -g
基础启动命令:
pm2 start app.js
但生产环境我们需要更精细的配置。创建 ecosystem.config.js 文件:
module.exports = {
apps: [{
name: 'api-server',
script: './dist/index.js',
instances: 'max', // 使用所有CPU核心
exec_mode: 'cluster', // 集群模式
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'production',
PORT: 3000
},
log_date_format: 'YYYY-MM-DD HH:mm Z',
error_file: '/var/log/pm2/api-server-error.log',
out_file: '/var/log/pm2/api-server-out.log',
combine_logs: true
}]
};
启动应用:
pm2 start ecosystem.config.js
2.2 关键进程管理功能
日志管理
PM2 自动收集日志,但生产环境需要定期轮转:
# 安装日志轮转模块
pm2 install pm2-logrotate
# 配置日志轮转
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
pm2 set pm2-logrotate:compress true
监控仪表板
实时监控应用状态:


361

被折叠的 条评论
为什么被折叠?



