插件窝 干货文章 教你如何使用NGINX和PM2部署VPS服务器上的Node.js应用

教你如何使用NGINX和PM2部署VPS服务器上的Node.js应用

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

使用NGINX和PM2部署VPS上的Node.js应用指南

准备工作

  1. 拥有一台VPS服务器(推荐Ubuntu/Debian/CentOS)
  2. 拥有SSH访问权限
  3. 已安装Node.js环境

步骤1:安装必要软件

更新系统

sudo apt update && sudo apt upgrade -y

安装Node.js和npm

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

安装NGINX

sudo apt install -y nginx

安装PM2

sudo npm install -g pm2

步骤2:配置Node.js应用

  1. 将你的Node.js应用上传到服务器(可以使用scp或git clone)
  2. 安装应用依赖
cd /path/to/your/app
npm install
  1. 使用PM2启动应用
pm2 start app.js --name "my-node-app"
# 或者如果你的入口文件不同
# pm2 start server.js --name "my-node-app"
  1. 设置PM2开机自启
pm2 startup
pm2 save

步骤3:配置NGINX作为反向代理

创建NGINX配置文件

sudo nano /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;
    }
}

启用配置

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled
sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx

步骤4:设置防火墙

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

步骤5:配置SSL证书(可选但推荐)

使用Let's Encrypt免费SSL证书:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

证书会自动续期,NGINX配置也会自动更新。

常用PM2命令

  • 查看运行的应用:pm2 list
  • 查看应用日志:pm2 logs
  • 重启应用:pm2 restart app_name
  • 停止应用:pm2 stop app_name
  • 删除应用:pm2 delete app_name

故障排查

  1. 检查Node.js应用是否运行

    curl http://localhost:3000
    
  2. 检查NGINX错误日志

    sudo tail -f /var/log/nginx/error.log
    
  3. 检查PM2日志

    pm2 logs
    
  4. 检查端口占用

    sudo netstat -tulnp
    

通过以上步骤,你的Node.js应用应该已经成功部署并通过NGINX对外提供服务了。