在 Debian 上部署 Node.js 项目,常见做法有 直接部署、使用 Nginx 反向代理、使用 PM2 守护进程。下面我按生产环境推荐流程一步一步讲,适合新手也能照着做。
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget git build-essential
以 Node.js 20.x LTS 为例:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
验证:
node -v
npm -v
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
cd /var/www
sudo git clone https://github.com/yourname/yourproject.git
cd yourproject
scp -r ./myproject user@server_ip:/var/www/
cd /var/www/yourproject
npm install
npm run build # 如有前端构建
node app.js # 或 npm start
✅ 此时项目通常在:
http://服务器IP:3000
sudo npm install -g pm2
pm2 start app.js --name my-node-app
pm2 startup
pm2 save
常用命令:
pm2 list
pm2 restart my-node-app
pm2 logs
sudo apt install -y nginx
编辑配置:
sudo nano /etc/nginx/sites-available/node-app
示例配置:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1: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/node-app /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
使用 Let’s Encrypt:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
/var/www/yourproject
├── app.js
├── package.json
├── node_modules
├── .env
lsof -i:3000
sudo chown -R $(whoami) /var/www/yourproject
npm install dotenv
require('dotenv').config()
apt update
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
npm install -g pm2
cd /var/www/yourproject
npm install
pm2 start app.js
nginx 反向代理
如果你愿意,我可以:
你现在用的是 Debian 几?项目是 Express / Nuxt / Next / Nest?