本指南将介绍如何在VPS上使用NGINX和PM2搭建一个高性能、可扩展的应用服务器环境。这种组合非常适合部署Node.js应用,但也可用于其他类型的应用。
获取VPS服务器
基本服务器设置
# 更新系统
sudo apt update && sudo apt upgrade -y
# 创建新用户(非root)
adduser deploy
usermod -aG sudo deploy
# 使用NodeSource仓库安装最新LTS版本
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
sudo npm install -g pm2
sudo apt install -y nginx
# 进入应用目录
cd /path/to/your/app
# 安装依赖
npm install
# 使用PM2启动应用
pm2 start app.js --name "my-app"
# 设置开机自启
pm2 startup
pm2 save
编辑NGINX配置文件:
sudo nano /etc/nginx/sites-available/your-domain.com
添加以下内容:
server {
listen 80;
server_name your-domain.com www.your-domain.com;
location / {
proxy_pass http://localhost:3000; # 假设应用运行在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;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled
sudo nginx -t # 测试配置
sudo systemctl restart nginx
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
sudo certbot renew --dry-run
pm2 delete my-app
pm2 start app.js -i max --name "my-app"
upstream node_app {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
# ...
location / {
proxy_pass http://node_app;
# 其余proxy设置...
}
}
location /static/ {
alias /path/to/static/files/;
expires 30d;
access_log off;
}
pm2 monit # 实时监控
pm2 list # 列出所有应用
pm2 logs # 查看日志
# 查看访问日志
tail -f /var/log/nginx/access.log
# 查看错误日志
tail -f /var/log/nginx/error.log
# 安装htop
sudo apt install -y htop
# 使用
htop
端口冲突
sudo netstat -tulnp
权限问题
chown
和chmod
调整PM2应用崩溃
pm2 logs my-app
pm2 start app.js --name "my-app" --restart-delay=3000
NGINX 502 Bad Gateway
pm2 list
通过以上步骤,您已经在VPS上成功搭建了一个基于NGINX和PM2的高性能、可扩展的应用服务器环境。这个架构能够处理生产级流量,并提供了良好的扩展性和可靠性。