客户端 → NGINX (反向代理/负载均衡) → PM2集群 (Node.js应用) → 数据库/其他服务
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装基础工具
sudo apt install -y git curl wget build-essential
# 安装NGINX
sudo apt install -y nginx
# 基础站点配置示例 (/etc/nginx/sites-available/yourdomain.com)
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://localhost:3000; # 假设Node应用运行在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;
}
# 静态文件处理
location /static/ {
alias /path/to/your/static/files/;
expires 30d;
}
}
# 启用配置
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置
sudo systemctl restart nginx
# 使用nvm安装Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install --lts
# 全局安装PM2
npm install -g pm2
# 启动应用 (假设入口文件是app.js)
pm2 start app.js --name "my-app" -i max # max会根据CPU核心数启动集群
# 常用命令
pm2 list # 查看运行中的应用
pm2 monit # 监控面板
pm2 logs # 查看日志
pm2 reload all # 零停机重载
pm2 save # 保存当前进程列表
pm2 startup # 设置开机自启
# 生成启动脚本并启用
pm2 startup
pm2 save
# /etc/nginx/nginx.conf 中的部分优化参数
worker_processes auto; # 自动匹配CPU核心数
worker_connections 1024; # 每个worker的连接数
keepalive_timeout 65;
gzip on; # 启用压缩
# 根据CPU核心数动态调整
pm2 scale my-app 4 # 启动4个实例
# 使用max内存重启策略
pm2 start app.js --max-memory-restart 300M
# 防火墙设置
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
# Let's Encrypt SSL证书
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# 安装htop进行资源监控
sudo apt install -y htop
# 查看NGINX状态
systemctl status nginx
# 查看PM2监控
pm2 monit
# NGINX日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
# PM2日志
pm2 logs
# 关键目录备份
tar -czvf nginx_backup.tar.gz /etc/nginx/
tar -czvf app_backup.tar.gz /path/to/your/app/
# PM2进程列表备份
pm2 save
cp ~/.pm2/dump.pm2 ~/pm2_backup.pm2
应用无法访问
pm2 list
netstat -tulnp | grep 3000
tail -f /var/log/nginx/error.log
高CPU/内存使用
htop
查看资源占用pm2 start app.js --max-memory-restart 500M
SSL证书问题
sudo certbot renew --dry-run
这套基础设施组合提供了高可用性、易扩展的应用服务环境,适合从中小型项目到企业级应用的部署需求。