前言
将 Node.js 项目部署到云服务器是全栈开发的基本功。本文整理了一套完整的部署流程,适用于大多数 Node.js Web 应用。
环境准备
1. 安装 Node.js
推荐使用 nvm(Node Version Manager)来管理 Node.js 版本:
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 重新加载配置
source ~/.bashrc
# 安装 Node.js LTS 版本
nvm install --lts
nvm use --lts
2. 安装 PM2
PM2 是 Node.js 的进程管理工具,可以保持应用持续运行:
npm install -g pm2
项目部署
3. 上传项目代码
将本地项目打包上传到服务器:
# 本地打包(排除 node_modules)
tar --exclude='node_modules' --exclude='.git' -czf blog.tar.gz .
# 上传到服务器
scp blog.tar.gz root@your-server-ip:/var/www/blog/
# SSH 登录服务器
ssh root@your-server-ip
4. 安装依赖并启动
cd /var/www/blog
tar -xzf blog.tar.gz
npm install --production
# 使用 PM2 启动应用
pm2 start app.js --name "shun-li-cheng-zhang"
pm2 save
pm2 startup
Nginx 反向代理
5. 安装并配置 Nginx
apt install nginx -y
创建配置文件 /etc/nginx/conf.d/blog.conf:
server {
listen 80;
server_name your-domain.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_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
重启 Nginx:
nginx -t
systemctl reload nginx
常用运维命令
| 命令 | 作用 |
|---|---|
pm2 list |
查看运行中的应用 |
pm2 logs shun-li-cheng-zhang |
查看应用日志 |
pm2 restart shun-li-cheng-zhang |
重启应用 |
pm2 stop shun-li-cheng-zhang |
停止应用 |
systemctl status nginx |
查看 Nginx 状态 |
总结
部署 Node.js 应用的核心步骤:安装环境 → 上传代码 → PM2 守护进程 → Nginx 反向代理。掌握这个流程后,后续更新代码只需要重新上传、pm2 restart 即可。