奋斗
努力

如何在阿里云服务器上部署Vue或React前端项目?

云计算

在阿里云服务器(ECS)上部署 Vue 或 React 前端项目,本质是将构建后的静态文件(dist/build/ 目录)通过 Web 服务器(如 Nginx)对外提供服务。以下是完整、安全、生产级的部署流程(以 Ubuntu 22.04/CentOS 7+ 为例,推荐 Ubuntu),涵盖 Vue 和 React 的通用步骤:


✅ 一、前提准备

  1. 已购买并启动阿里云 ECS 实例

    • 推荐配置:2核4G(轻量级项目)、系统镜像选 Ubuntu 22.04 LTS(稳定、社区支持好)
    • 安全组规则:放行 80(HTTP)和 443(HTTPS)端口(控制台 → 安全组 → 配置规则)
  2. 本地开发环境已构建完成

    # Vue 项目(Vue CLI 或 Vite)
    npm run build  # 输出到 dist/
    
    # React 项目(CRA 或 Vite)
    npm run build  # 输出到 build/

    ✅ 确保 dist/build/ 中有 index.htmlassets/ 等静态资源。


✅ 二、服务器基础配置(SSH 登录后执行)

# 1. 更新系统
sudo apt update && sudo apt upgrade -y  # Ubuntu
# 或 CentOS: sudo yum update -y

# 2. 安装 Nginx(高性能静态 Web 服务器)
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx

# 3. 验证 Nginx 是否运行(浏览器访问 http://<你的ECS公网IP> 应看到 "Welcome to nginx!")

✅ 三、上传构建产物到服务器(3 种推荐方式)

方式 命令示例 说明
① SCP(最简单) scp -r ./dist/ user@<ECS_IP>:/var/www/my-app/ 替换 user(如 ubunturoot),确保目标目录存在
② SFTP(图形化) 使用 FileZilla / WinSCP 连接,拖拽 dist//var/www/my-app/ 适合不熟悉命令行的用户
③ Git + 钩子(自动化,进阶) 需配置 Git 仓库和 post-receive 钩子 适合团队 CI/CD,此处略

🔑 关键权限设置(避免 403 错误):

sudo mkdir -p /var/www/my-app
sudo chown -R $USER:$USER /var/www/my-app
sudo chmod -R 755 /var/www

✅ 四、配置 Nginx 服务(核心步骤)

# 编辑站点配置(推荐独立配置文件,而非修改 default)
sudo nano /etc/nginx/sites-available/my-app

粘贴以下配置(适配 Vue/React 路由 History 模式!)

server {
    listen 80;
    server_name your-domain.com;  # 👈 替换为你的域名(或留空用 IP 访问)
    root /var/www/my-app;
    index index.html;

    # 关键:支持前端路由 history 模式(如 /user/123)
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 静态资源缓存优化
    location ~* .(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # 防止 .htaccess / .env 等敏感文件被访问
    location ~ /. {
        deny all;
    }
}

✅ 启用配置:

# 创建软链接启用站点
sudo ln -sf /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/

# 测试 Nginx 配置语法
sudo nginx -t

# 重载配置(不中断服务)
sudo systemctl reload nginx

⚠️ 如果使用 IP 直接访问(无域名),server_name 可删掉或写成 server_name _;


✅ 五、(强烈推荐)配置 HTTPS(SSL)

使用免费证书(Let’s Encrypt + Certbot):

# 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y

# 获取并自动配置证书(需域名已解析到该 ECS IP!)
sudo certbot --nginx -d your-domain.com

# 自动续期(Certbot 已配置 systemd timer,无需额外操作)
sudo certbot renew --dry-run  # 测试续期

✅ 完成后,Nginx 会自动添加 443 端口配置,并强制 HTTP 重定向到 HTTPS。


✅ 六、常见问题排查

问题 解决方案
❌ 页面空白 / 白屏 检查 index.html 中资源路径是否为相对路径(Vite 默认 base: "/",CRA/Vue CLI 构建时确保 publicPath: "/");检查浏览器控制台 Network 标签看 JS/CSS 是否 404
❌ 刷新 404(History 路由) 确认 Nginx location / { try_files ... } 配置已生效,且未被其他 location 覆盖
❌ 403 Forbidden 检查 /var/www/my-app 目录权限:sudo chown -R www-data:www-data /var/www/my-app(Ubuntu)或 nginx:nginx(CentOS)
❌ 无法访问(超时) 检查阿里云安全组是否开放 80/443 端口;检查 ECS 实例是否运行中;sudo ufw status(Ubuntu)确认防火墙未拦截

✅ 七、进阶建议(生产环境)

  • 使用 PM2 管理 SSR 项目(如 Vue Nuxt / Next.js):

    npm install -g pm2
    pm2 start npm --name "my-ssr" -- start
    pm2 startup && pm2 save
  • CI/CD 自动化:GitHub Actions / Gitee Go 触发构建 → 自动上传到 ECS(配合 SSH 密钥)

  • 多环境部署:通过 .env.production 设置 VUE_APP_API_BASE_URLREACT_APP_API_URL,指向后端真实地址(不要写 localhost!

  • 性能优化:开启 gzip、Brotli 压缩(Nginx 配置中添加 gzip on;


📌 总结流程图

本地构建 → 上传 dist/ → Nginx 配置(含 history 支持)→ 开放端口 → HTTPS → 上线 ✅

💡 最后一步验证
在浏览器打开 http://<ECS公网IP>https://your-domain.com,应正常显示你的 Vue/React 应用。

需要我为你生成:

  • ✅ 完整的 nginx.conf 示例?
  • ✅ Vue CLI / Vite / CRA 的 vue.config.js / vite.config.ts / craco.config.jspublicPath 配置?
  • ✅ 自动化部署脚本(Shell/Python)?
  • ✅ Docker 部署方案?

欢迎随时告诉我你的具体技术栈(如 “Vue3 + Vite + 阿里云 DNS”),我可以为你定制详细配置! 🚀

未经允许不得转载:云服务器 » 如何在阿里云服务器上部署Vue或React前端项目?