插件窝 干货文章 简明教程: 如何在VPS服务器上利用NGINX和PM2实现应用的快速部署

简明教程: 如何在VPS服务器上利用NGINX和PM2实现应用的快速部署

NGINX sudo 应用 bash 899    来源:    2025-04-11

利用NGINX和PM2在VPS上快速部署应用

准备工作

  1. 获取VPS服务器

    • 购买VPS服务(如AWS Lightsail、DigitalOcean、Linode等)
    • 确保SSH访问权限(通常使用root或具有sudo权限的用户)
  2. 基本系统更新

    sudo apt update && sudo apt upgrade -y
    

安装必要组件

1. 安装Node.js和npm

# 使用NodeSource仓库安装最新LTS版本
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs

2. 安装NGINX

sudo apt install -y nginx

3. 安装PM2

sudo npm install -g pm2

部署应用

1. 上传应用代码

将你的应用代码上传到VPS,例如放在/var/www/your-app目录

2. 安装应用依赖

cd /var/www/your-app
npm install

3. 使用PM2启动应用

pm2 start app.js --name "your-app"  # 根据你的入口文件调整

4. 设置PM2开机自启

pm2 startup
pm2 save

配置NGINX反向代理

  1. 创建NGINX配置文件
sudo nano /etc/nginx/sites-available/your-app
  1. 添加以下配置(根据实际情况调整):
server {
    listen 80;
    server_name your-domain.com;  # 替换为你的域名

    location / {
        proxy_pass http://localhost: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;
    }
}
  1. 启用配置
sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled
sudo nginx -t  # 测试配置是否正确
sudo systemctl restart nginx

安全加固(可选但推荐)

  1. 安装防火墙
sudo apt install -y ufw
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable
  1. 设置SSL证书(使用Let's Encrypt)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

常用维护命令

  • PM2命令:

    pm2 list             # 查看运行中的应用
    pm2 logs your-app    # 查看应用日志
    pm2 restart your-app # 重启应用
    pm2 stop your-app    # 停止应用
    
  • NGINX命令:

    sudo systemctl status nginx  # 查看状态
    sudo systemctl restart nginx # 重启
    

故障排查

  1. 检查端口是否监听:

    sudo netstat -tulnp
    
  2. 检查防火墙规则:

    sudo ufw status
    
  3. 查看NGINX错误日志:

    sudo tail -f /var/log/nginx/error.log
    

按照以上步骤,你应该能够成功在VPS上通过NGINX和PM2部署你的应用。根据你的具体应用需求,可能还需要调整一些配置参数。