插件窝 干货文章 教你如何在VPS服务器上部署多个应用并利用NGINX和PM2进行管理

教你如何在VPS服务器上部署多个应用并利用NGINX和PM2进行管理

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

在VPS服务器上部署多个应用并利用NGINX和PM2进行管理

1. 准备工作

1.1 服务器基本配置

  • 确保你有一个运行Linux的VPS服务器(推荐Ubuntu/CentOS)
  • 以root用户或具有sudo权限的用户登录

1.2 更新系统

sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
# 或
sudo yum update -y                     # CentOS/RHEL

2. 安装必要软件

2.1 安装Node.js和npm

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs

2.2 安装PM2

sudo npm install -g pm2

2.3 安装NGINX

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

2.4 安装Git

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

3. 部署多个应用

3.1 创建应用目录结构

sudo mkdir -p /var/www/app1 /var/www/app2
sudo chown -R $USER:$USER /var/www

3.2 部署应用1

cd /var/www/app1
git clone <your-app1-repo> .
npm install

3.3 部署应用2

cd /var/www/app2
git clone <your-app2-repo> .
npm install

4. 使用PM2管理应用

4.1 启动应用

cd /var/www/app1
pm2 start npm --name "app1" -- start

cd /var/www/app2
pm2 start npm --name "app2" -- start

4.2 设置PM2开机自启

pm2 startup
pm2 save

4.3 常用PM2命令

pm2 list          # 查看运行中的应用
pm2 stop app1     # 停止应用1
pm2 restart app2  # 重启应用2
pm2 logs         # 查看日志

5. 配置NGINX反向代理

5.1 创建NGINX配置文件

sudo nano /etc/nginx/sites-available/app1.conf

内容示例:

server {
    listen 80;
    server_name app1.yourdomain.com;

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

为app2创建类似配置:

sudo nano /etc/nginx/sites-available/app2.conf
server {
    listen 80;
    server_name app2.yourdomain.com;

    location / {
        proxy_pass http://localhost:4000;  # 假设app2运行在4000端口
        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;
    }
}

5.2 启用站点配置

sudo ln -s /etc/nginx/sites-available/app1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/app2.conf /etc/nginx/sites-enabled/

5.3 测试并重启NGINX

sudo nginx -t  # 测试配置
sudo systemctl restart nginx

6. 安全配置

6.1 防火墙设置

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

6.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 app1.yourdomain.com -d app2.yourdomain.com

7. 监控和维护

7.1 监控服务器资源

pm2 monit

7.2 设置日志轮转

pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30

8. 常见问题解决

8.1 端口冲突

  • 确保每个应用使用不同的端口
  • 检查端口是否被占用: sudo netstat -tulnp

8.2 NGINX 502错误

  • 检查应用是否正常运行: pm2 list
  • 检查应用日志: pm2 logs app1

8.3 权限问题

  • 确保NGINX用户有权访问应用目录: sudo chown -R www-data:www-data /var/www

通过以上步骤,你可以在单个VPS服务器上高效地部署和管理多个应用,利用NGINX进行反向代理和负载均衡,同时使用PM2确保应用持续运行和自动重启。