Node.js 生产环境部署:使用 PM2 实现 5 个关键进程管理与 Nginx 反向代理配置

Node.js 生产环境部署:使用 PM2 实现 5 个关键进程管理与 Nginx 反向代理配置

当你的 Node.js 应用从开发环境走向生产环境时,简单的 node app.js 启动方式已经无法满足需求。本文将深入探讨如何通过 PM2 实现专业级的进程管理,并结合 Nginx 反向代理构建高可用的生产环境部署方案。

1. 为什么需要 PM2 和 Nginx?

在开发环境中,我们习惯直接运行 node app.js 来启动应用,这种方式存在几个致命缺陷:

  • 进程崩溃即服务终止 :任何未捕获的异常都会导致整个应用下线
  • 缺乏负载均衡 :单进程无法充分利用多核 CPU 性能
  • 日志管理困难 :控制台输出难以长期保存和分析
  • 零停机部署困难 :更新代码需要手动重启服务

PM2 解决了这些核心痛点:

  1. 进程守护 :自动重启崩溃的应用
  2. 集群模式 :充分利用多核 CPU
  3. 日志管理 :集中收集和轮转日志
  4. 监控功能 :实时查看应用状态
  5. 零停机重启 :无缝更新应用代码

而 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
监控仪表板

实时监控应用状态:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值