sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
# 或
sudo yum update -y # CentOS/RHEL
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g pm2
sudo apt install -y nginx # Ubuntu/Debian
# 或
sudo yum install -y nginx # CentOS/RHEL
sudo apt install -y git # Ubuntu/Debian
# 或
sudo yum install -y git # CentOS/RHEL
sudo mkdir -p /var/www/app1 /var/www/app2
sudo chown -R $USER:$USER /var/www
cd /var/www/app1
git clone <your-app1-repo> .
npm install
cd /var/www/app2
git clone <your-app2-repo> .
npm install
cd /var/www/app1
pm2 start npm --name "app1" -- start
cd /var/www/app2
pm2 start npm --name "app2" -- start
pm2 startup
pm2 save
pm2 list # 查看运行中的应用
pm2 stop app1 # 停止应用1
pm2 restart app2 # 重启应用2
pm2 logs # 查看日志
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;
}
}
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/
sudo nginx -t # 测试配置
sudo systemctl restart nginx
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
使用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
pm2 monit
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
sudo netstat -tulnp
pm2 list
pm2 logs app1
sudo chown -R www-data:www-data /var/www
通过以上步骤,你可以在单个VPS服务器上高效地部署和管理多个应用,利用NGINX进行反向代理和负载均衡,同时使用PM2确保应用持续运行和自动重启。