插件窝 干货文章 如何使用NGINX和PM2配置VPS服务器

如何使用NGINX和PM2配置VPS服务器

NGINX sudo 配置 应用 450    来源:    2025-04-11

使用NGINX和PM2配置VPS服务器的完整指南

前期准备

  1. 获取VPS服务器

    • 选择云服务提供商(AWS, DigitalOcean, Linode等)
    • 选择Ubuntu 20.04/22.04或CentOS 7/8作为操作系统
  2. 基本服务器设置

    # 更新系统包
    sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
    sudo yum update -y                      # CentOS/RHEL
    
    # 创建非root用户
    sudo adduser deploy
    sudo usermod -aG sudo deploy
    

安装必要组件

1. 安装Node.js和NPM

# 使用NodeSource仓库安装Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -  # 选择所需版本
sudo apt install -y nodejs

# 验证安装
node -v
npm -v

2. 安装PM2

sudo npm install -g pm2

3. 安装NGINX

sudo apt install -y nginx  # Ubuntu/Debian
sudo yum install -y nginx # CentOS/RHEL

# 启动并启用开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

配置Node.js应用

  1. 部署应用代码

    # 示例:克隆你的应用代码
    git clone https://github.com/yourusername/your-app.git
    cd your-app
    npm install
    
  2. 使用PM2管理应用

    # 启动应用
    pm2 start app.js --name "your-app"  # 或你的入口文件
    
    # 设置开机自启
    pm2 startup
    pm2 save
    
    # 常用PM2命令
    pm2 list       # 查看运行中的应用
    pm2 monit      # 监控应用
    pm2 logs       # 查看日志
    

配置NGINX作为反向代理

  1. 创建NGINX配置文件

    sudo nano /etc/nginx/sites-available/your-domain.com
    
  2. 配置内容示例

    server {
       listen 80;
       server_name your-domain.com www.your-domain.com;
    
       location / {
           proxy_pass http://localhost:3000;  # 你的Node.js应用端口
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection 'upgrade';
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_cache_bypass $http_upgrade;
       }
    }
    
  3. 启用配置

    sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled/
    sudo nginx -t  # 测试配置
    sudo systemctl reload nginx
    

安全加固

  1. 设置防火墙

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable
    
  2. 安装SSL证书(使用Let's Encrypt)

    sudo apt install -y certbot python3-certbot-nginx  # Ubuntu/Debian
    sudo yum install -y certbot python3-certbot-nginx  # CentOS/RHEL
    
    sudo certbot --nginx -d your-domain.com -d www.your-domain.com
    # 设置自动续期
    sudo certbot renew --dry-run
    
  3. 优化PM2日志管理

    # 安装PM2日志轮转模块
    pm2 install pm2-logrotate
    pm2 set pm2-logrotate:max_size 10M
    pm2 set pm2-logrotate:retain 30
    

高级配置(可选)

  1. 负载均衡配置

    upstream node_servers {
       server 127.0.0.1:3000;
       server 127.0.0.1:3001;
       # 添加更多实例
    }
    
    server {
       location / {
           proxy_pass http://node_servers;
           # 其他代理设置...
       }
    }
    
  2. 静态文件服务优化

    location /static/ {
       alias /path/to/your/static/files/;
       expires 30d;
       access_log off;
    }
    
  3. 启用Gzip压缩

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    

监控与维护

  1. 安装PM2监控面板

    pm2 install pm2-monitor
    
  2. 设置日志轮转

    # 安装logrotate
    sudo apt install -y logrotate
    
    # 为PM2日志创建配置
    sudo nano /etc/logrotate.d/pm2
    
  3. 定期维护脚本

    # 示例清理脚本
    sudo nano /usr/local/bin/cleanup.sh
    

常见问题解决

  1. PM2应用崩溃

    • 检查日志: pm2 logs your-app
    • 检查资源使用: pm2 monit
  2. NGINX 502 Bad Gateway

    • 确认Node.js应用正在运行
    • 检查应用监听的端口与NGINX配置一致
    • 查看NGINX错误日志: sudo tail -f /var/log/nginx/error.log
  3. 性能优化

    • 调整PM2集群模式: pm2 start app.js -i max
    • 优化NGINX worker进程数

通过以上步骤,你应该已经成功在VPS上使用NGINX和PM2配置好了Node.js应用的生产环境。记得根据你的具体应用需求调整配置参数。