我将为你提供一个保姆级、从零开始的完整教程,假设你现在只有一台电脑和未打包的 Vue 项目代码。

我们将一步步完成:

  1. 购买和配置云服务器
  2. 在服务器上安装必要环境 (Nginx, Node.js)
  3. 上传并打包你的 Vue 项目
  4. 编写 Nginx 配置,解决所有问题
  5. 启动服务,成功访问!

🚀 第一步:准备工作 (购买并连接服务器)

1. 购买一台云服务器 (ECS/VPS)
如果你什么都没有,第一步就是“搞一台服务器”。

  • 服务商:阿里云、腾讯云、华为云、DigitalOcean、Vultr 等。对新手来说,国内的阿里云/腾讯云有中文界面和学生优惠,比较友好。
  • 配置选择
    • 地域:选离你或你的用户近的。
    • 操作系统 (OS)选择 Ubuntu 20.04 或更高版本。这是最流行、教程最多的 Linux 系统之一。
    • 套餐:买最便宜的入门级就行,比如 1核2G2核2G,足够部署 N 个前端项目了。
  • 购买后:你会得到三个关键信息:
    • 公网 IP 地址 (例如: 123.45.67.89)
    • 用户名 (通常是 root)
    • 密码 (你设置的或系统生成的)

2. 连接到你的服务器
你需要一个 SSH 工具来远程登录并操作服务器。

  • Windows 用户:推荐使用 Windows Terminal, Xshell, PuTTYGit Bash
  • Mac/Linux 用户:直接使用系统自带的 终端 (Terminal)

打开你的终端,输入以下命令并回车:

ssh root@你的服务器公网IP地址

例如:ssh root@123.45.67.89

首次连接会提示一个安全警告,输入 yes。然后输入你的服务器密码(注意:输入密码时屏幕上不会显示任何东西,这是正常的),回车。

当你看到类似 Welcome to Ubuntu ...root@your-server-name:~# 的提示符时,恭喜你,你已经成功登录到你的服务器了!


🚀 第二步:在服务器上安装环境

登录服务器后,我们需要安装 Nginx(Web 服务器)和 Node.js(用于打包项目)。

1. 安装 Nginx
依次执行以下命令:

# 1. 更新软件包列表
apt update

# 2. 安装 Nginx
apt install nginx -y

# 3. 启动 Nginx 并设置开机自启
systemctl start nginx
systemctl enable nginx

# 4. (可选) 检查 Nginx 状态
systemctl status nginx

看到 active (running) 就表示 Nginx 已经成功运行了。此时,在浏览器中直接访问你的服务器公网 IP 地址,应该能看到 Nginx 的欢迎页面!

2. 安装 Node.js 和 npm
我们用 nvm (Node Version Manager) 来安装,方便切换版本。

# 1. 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

# 2. 让 nvm 生效
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

# 3. 安装一个稳定的 Node.js 版本 (例如 LTS/Gallium v16)
nvm install 16

# 4. 设为默认版本
nvm use 16
nvm alias default 16

# 5. 验证安装
node -v  # 应该显示 v16.x.x
npm -v   # 应该显示 npm 版本

3. 安装 Git
我们需要用 Git 把你的项目代码拉到服务器上。

apt install git -y

🚀 第三步:上传并打包你的 Vue 项目

1. 将你的项目上传到代码仓库
确保你的本地 Vue 项目已经上传到了一个 Git 仓库,比如 GitHub、Gitee 或 GitLab。

2. 在服务器上克隆项目
我们通常把网站项目放在 /var/www/ 目录下。

# 1. 创建一个项目目录
mkdir -p /var/www

# 2. 进入该目录
cd /var/www

# 3. 从你的仓库克隆项目 (把 URL 换成你自己的)
git clone https://github.com/your-username/your-vue-project.git

# 4. 进入项目目录
cd your-vue-project

# 5. 安装项目依赖 (国内服务器用 cnpm 或 pnpm 可能更快)
npm install

# 6. 打包项目!
npm run build

执行完 npm run build 后,项目根目录下会生成一个 dist 文件夹,这里面就是我们要部署的静态文件。它的绝对路径是 /var/www/your-vue-project/dist记住这个路径!


🚀 第四步:编写 Nginx 核心配置(解决所有问题!)

这是最关键的一步。我们要告诉 Nginx 如何处理用户的访问请求。

1. 创建一个新的 Nginx 配置文件
不要直接修改主配置文件,我们为自己的网站创建一个独立的配置。

# 使用 nano 编辑器创建一个新配置文件 (名字可以自定义)
nano /etc/nginx/sites-available/my-vue-app.conf

2. 粘贴并修改以下配置模板
将下面的内容完整复制到打开的 nano 编辑器中。你需要修改 server_nameroot 路径。

server {
    listen 80;
    # 监听 80 端口 (HTTP)

    # -------------------【你需要修改的地方】-------------------
    # 1. 如果你有域名,写你的域名;如果没有,写你的服务器公",IP 地址
    server_name 你的域名或公网IP; 

    # 2. 指向你项目打包后的 dist 文件夹的绝对路径
    root /var/www/your-vue-project/dist; 
    # ---------------------------------------------------------

    index index.html index.htm;

    # 核心配置 1: 解决 VueRouter 的 history 模式白屏问题
    # 所有的请求都先尝试匹配文件($uri),再尝试匹配目录($uri/),
    # 如果都找不到,就返回 /index.html,让 Vue Router 去接管。
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 核心配置 2: 解决跨域的反向代理
    # 当前端请求 /api/users 时,Nginx 会把它转发到 http://localhost:3000/users
    location /api/ {
        # 这里的地址是你的后端 API 服务器地址
        # 如果后端服务也在这台服务器上,通常是 localhost 或 127.0.0.1
        proxy_pass http://localhost:3000/; 
        
        # (可选) 如果后端接口本身没有 /api 前缀,需要重写
        # rewrite ^/api/(.*)$ /$1 break;

        # (推荐) 传递一些必要的请求头
        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_set_header X-Forwarded-Proto $scheme;
    }

    # (可选) 错误页面配置
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

3. 保存并退出编辑器

  • Ctrl + X
  • 提示是否保存,按 Y
  • 提示文件名,直接按 Enter 确认

4. 激活配置并重启 Nginx

# 1. 创建一个符号链接,将你的配置“激活”
ln -s /etc/nginx/sites-available/my-vue-app.conf /etc/nginx/sites-enabled/

# 2. 测试 Nginx 配置语法是否有错误
nginx -t

如果看到 syntax is oktest is successful,说明配置没问题。

# 3. 平滑重启 Nginx 以应用新配置
systemctl reload nginx

🚀 第五步:大功告成,验证结果!

1. 开放防火墙端口
云服务器通常有防火墙,需要允许外部访问 80 端口。

# 检查防火墙状态 (如果 inactive 就不用管了)
ufw status

# 如果是 active,允许 Nginx 的 HTTP 流量
ufw allow 'Nginx HTTP'

# 重载防火墙
ufw reload

2. 访问你的网站
现在,打开你的浏览器,输入你的服务器公网 IP 地址或你配置的域名

你应该能看到你的 Vue 项目首页了!

3. 验证功能

  • History 模式:尝试手动在地址栏输入一个深层路径(例如 http://你的IP/about),然后按回车。如果页面能正确显示而不是 404,说明 try_files 配置成功了!
  • 反向代理:点击你应用中会触发 API 请求的按钮(例如登录)。打开浏览器开发者工具 (F12) 的 Network 面板,查看请求。你会发现请求的地址是 http://你的IP/api/...,并且能成功拿到后端数据,说明反向代理配置成功了!

总结一下流程:

服务器准备 → 安装 Nginx/Node → git clone 项目 → npm install & npm run build → 配置 Nginx 指向 dist 目录 → 添加 try_filesproxy_pass → 重启 Nginx → 搞定!

你已经从 0 到 1 完成了整个部署流程,并且解决了两个最核心的部署问题。恭喜你!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐