← 返回文章列表

Node.js 项目部署到云服务器的完整指南

从零开始将 Node.js 项目部署到云 ECS 实例的完整流程,涵盖环境配置、PM2 进程管理、Nginx 反向代理等关键步骤。

前言

将 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 即可。