插件窝 干货文章 NGINX PM2 VPS: 构建弹性的应用服务基础设施

NGINX PM2 VPS: 构建弹性的应用服务基础设施

NGINX PM2 sudo 应用 898    来源:    2025-04-11

NGINX + PM2 + VPS: 构建弹性的应用服务基础设施

核心组件概述

1. VPS (虚拟专用服务器)

  • 提供基础的计算资源
  • 推荐配置: 至少2核CPU, 4GB内存, SSD存储
  • 主流提供商: DigitalOcean, Linode, AWS Lightsail, Vultr

2. NGINX

  • 高性能Web服务器和反向代理
  • 主要功能:
    • 静态文件服务
    • 负载均衡
    • SSL/TLS终止
    • HTTP/2支持
    • 请求路由

3. PM2

  • Node.js应用进程管理器
  • 关键特性:
    • 应用守护(崩溃自动重启)
    • 日志管理
    • 集群模式
    • 性能监控
    • 零停机重载

部署架构

客户端 → NGINX (反向代理/负载均衡) → PM2集群 (Node.js应用) → 数据库/其他服务

详细配置指南

1. VPS基础设置

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y git curl wget build-essential

2. NGINX安装与配置

# 安装NGINX
sudo apt install -y nginx

# 基础站点配置示例 (/etc/nginx/sites-available/yourdomain.com)
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    location / {
        proxy_pass http://localhost:3000; # 假设Node应用运行在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;
    }

    # 静态文件处理
    location /static/ {
        alias /path/to/your/static/files/;
        expires 30d;
    }
}

# 启用配置
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl restart nginx

3. Node.js环境设置

# 使用nvm安装Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install --lts

4. PM2安装与配置

# 全局安装PM2
npm install -g pm2

# 启动应用 (假设入口文件是app.js)
pm2 start app.js --name "my-app" -i max # max会根据CPU核心数启动集群

# 常用命令
pm2 list              # 查看运行中的应用
pm2 monit             # 监控面板
pm2 logs              # 查看日志
pm2 reload all        # 零停机重载
pm2 save              # 保存当前进程列表
pm2 startup           # 设置开机自启

# 生成启动脚本并启用
pm2 startup
pm2 save

高级优化技巧

1. NGINX性能调优

# /etc/nginx/nginx.conf 中的部分优化参数
worker_processes auto; # 自动匹配CPU核心数
worker_connections 1024; # 每个worker的连接数
keepalive_timeout 65;
gzip on; # 启用压缩

2. PM2集群优化

# 根据CPU核心数动态调整
pm2 scale my-app 4 # 启动4个实例

# 使用max内存重启策略
pm2 start app.js --max-memory-restart 300M

3. 安全加固

# 防火墙设置
sudo ufw allow 22/tcp   # SSH
sudo ufw allow 80/tcp   # HTTP
sudo ufw allow 443/tcp  # HTTPS
sudo ufw enable

# Let's Encrypt SSL证书
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

监控与维护

1. 基础监控

# 安装htop进行资源监控
sudo apt install -y htop

# 查看NGINX状态
systemctl status nginx

# 查看PM2监控
pm2 monit

2. 日志管理

# NGINX日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

# PM2日志
pm2 logs

3. 备份策略

# 关键目录备份
tar -czvf nginx_backup.tar.gz /etc/nginx/
tar -czvf app_backup.tar.gz /path/to/your/app/

# PM2进程列表备份
pm2 save
cp ~/.pm2/dump.pm2 ~/pm2_backup.pm2

故障排查指南

  1. 应用无法访问

    • 检查PM2状态: pm2 list
    • 检查端口监听: netstat -tulnp | grep 3000
    • 检查NGINX错误日志: tail -f /var/log/nginx/error.log
  2. 高CPU/内存使用

    • 使用htop查看资源占用
    • PM2内存限制: pm2 start app.js --max-memory-restart 500M
  3. SSL证书问题

    • 续订证书: sudo certbot renew --dry-run
    • 检查证书路径是否正确

这套基础设施组合提供了高可用性、易扩展的应用服务环境,适合从中小型项目到企业级应用的部署需求。