将前端打包后的 dist 文件上传到云服务器并访问,通常分为 准备服务器环境、上传文件、配置 Web 服务器 和 验证访问 四个核心步骤。
以下是基于最常见的 Nginx + Linux (Ubuntu/CentOS) 环境的详细操作指南:
第一步:准备云服务器环境
首先,你需要登录到你的云服务器(如阿里云 ECS、腾讯云 CVM、AWS EC2 等)。
-
安装 Nginx(推荐作为静态资源服务器):
- Ubuntu/Debian:
sudo apt update sudo apt install nginx -y - CentOS/RHEL:
sudo yum install epel-release -y sudo yum install nginx -y
- Ubuntu/Debian:
-
开放防火墙端口(确保 80 或 443 端口可被公网访问):
- 如果是 Ubuntu (
ufw):sudo ufw allow 'Nginx Full' sudo ufw reload - 如果是 CentOS (
firewalld):sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --reload - 注意:如果是云厂商控制台(如阿里云安全组),还需要在网页控制台中放行 TCP 80 端口。
- 如果是 Ubuntu (
第二步:上传 dist 文件
你有多种方法可以将本地的 dist 文件夹上传到服务器。
方法 A:使用 SSH/SFTP 工具(推荐,适合新手)
使用 FileZilla、WinSCP 或 VS Code 的 Remote-SSH 插件。
- 连接服务器 IP。
- 将本地项目目录下的
dist文件夹直接拖拽上传到服务器的/var/www/html目录下(或者你自定义的其他目录,如/home/user/my-project)。
方法 B:使用 SCP 命令(适合命令行用户)
在本地电脑终端执行(将 your-server-ip 替换为实际 IP,username 替换为服务器用户名):
# 将整个 dist 文件夹复制到服务器
scp -r ./dist username@your-server-ip:/var/www/html/
第三步:配置 Nginx
上传完成后,需要告诉 Nginx 去哪里找这些文件。
-
创建配置文件(以默认路径为例):
sudo nano /etc/nginx/sites-available/my-app -
写入以下配置内容:
假设你的 dist 文件已放在/var/www/html/dist下server { listen 80; server_name your-domain.com; # 或者填写你的服务器 IP root /var/www/html/dist; # 指向 dist 文件夹的绝对路径 index index.html; # 默认首页文件名 # 关键配置:处理 Vue/React 路由刷新 404 问题 location / { try_files $uri $uri/ /index.html; } # 可选:缓存静态资源(js/css/img) location ~* .(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } } -
启用配置并重启 Nginx:
- 如果是 Ubuntu,通常需要链接到 sites-enabled:
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/ - 检查配置语法是否正确:
sudo nginx -t - 如果显示
syntax is ok,则重启服务:sudo systemctl restart nginx
- 如果是 Ubuntu,通常需要链接到 sites-enabled:
第四步:验证与访问
-
测试访问:
在浏览器中访问http://你的服务器IP或http://你的域名。- 如果你看到项目页面,说明成功。
- 如果你看到 "Welcome to Nginx!" 默认页,说明
root路径配置错误或文件未上传成功。
-
解决 Vue/React 路由 404 问题:
如果在开发模式下运行正常,但部署后点击侧边栏菜单出现 404,这是因为 SPA(单页应用)的路由是前端控制的,而 Nginx 默认会去服务器找对应的物理文件。- 解决方案:确保上面的 Nginx 配置中包含
try_files $uri $uri/ /index.html;。这行代码的意思是:如果找不到文件,就返回index.html,让前端路由接管。
- 解决方案:确保上面的 Nginx 配置中包含
常见问题排查
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 502 Bad Gateway | Nginx 启动失败或端口冲突 | 运行 sudo systemctl status nginx 查看日志 |
| 403 Forbidden | 文件权限不足 | 运行 sudo chown -R www-data:www-data /var/www/html/dist (用户名为 www-data) |
| 刷新页面 404 | 缺少 try_files 配置 |
检查 Nginx 配置中的 location / 部分 |
| 图片/样式不加载 | 路径写死或跨域问题 | 检查 vite.config.js 或 vue.config.js 中的 base 路径是否配置正确 |
进阶建议:HTTPS 证书
为了安全和 SEO,正式上线时建议配置 HTTPS。可以使用 Certbot 免费申请 Let’s Encrypt 证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
这将自动配置 Nginx 并重定向 HTTP 到 HTTPS。
云小栈