在阿里云 ECS 上运行 Vue 或 React 前端应用,核心思路是:将构建后的静态资源部署到服务器,并通过 Nginx 等 Web 服务器提供访问。以下是完整步骤:
✅ 一、准备工作
-
购买并配置阿里云 ECS
- 选择 Linux 系统(推荐 CentOS 7+/Ubuntu 20.04+)
- 开放安全组端口(如
80、443) - 安装必要工具(可选 SSH 客户端)
-
本地开发环境确认
- Node.js ≥ 16.x 已安装
- 项目使用
npm run build或yarn build可生成dist/目录
✅ 二、构建前端项目(本地执行)
# Vue CLI 项目
npm run build
# Vite 项目
npm run build
# Create React App
npm run build
✅ 成功后会生成 dist/ 文件夹(含 index.html、js/、css/、assets/ 等静态文件)
⚠️ 注意:若使用 Vue Router 的
history模式,需在 Nginx 中配置 fallback,避免刷新 404。
✅ 三、上传至 ECS
方法 1:SCP 命令(推荐)
# 压缩 dist 目录
tar -czvf frontend.tar.gz dist/
# 上传到 ECS(替换为用户名、IP、路径)
scp frontend.tar.gz root@<ECS_IP>:/tmp/
# 登录 ECS
ssh root@<ECS_IP>
# 解压
cd /tmp
tar -xzvf frontend.tar.gz
mv dist /var/www/html/ # 或其他目标路径
方法 2:SFTP 工具(如 WinSCP、FileZilla)
- 连接 ECS → 上传
dist/文件夹到/var/www/html/
✅ 四、安装并配置 Nginx
# Ubuntu/Debian
sudo apt update && sudo apt install nginx -y
# CentOS/RHEL
sudo yum install nginx -y # 或 dnf install nginx
创建站点配置(示例:/etc/nginx/sites-available/frontend)
server {
listen 80;
server_name your-domain.com; # 替换为域名或 IP
root /var/www/html/dist; # 指向 dist 目录
index index.html;
location / {
try_files $uri $uri/ /index.html; # 关键!支持 history 模式
}
# 可选:缓存静态资源
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# 可选:Gzip 压缩
gzip on;
gzip_types text/plain application/json application/javascript text/css;
}
启用配置:
sudo ln -s /etc/nginx/sites-available/frontend /etc/nginx/sites-enabled/
sudo nginx -t # 检查语法
sudo systemctl restart nginx
✅ 五、验证与优化
-
访问测试
curl http://<ECS_IP> # 应返回 HTML 内容(非 404) -
HTTPS 配置(生产必备)
- 使用 Let’s Encrypt + Certbot:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com - 自动续期:
sudo certbot renew --dry-run
- 使用 Let’s Encrypt + Certbot:
-
防火墙设置
# 阿里云控制台:放行 80/443 # 或使用 ufw/firewalld sudo ufw allow 'Nginx Full' sudo ufw enable
🔁 自动化部署建议(进阶)
- 使用 GitHub Actions / GitLab CI 自动构建 + rsync 上传
- 使用 Ansible/SaltStack 批量管理多台 ECS
- 结合 OSS + CDN 提升加载速度(将
dist/推送到 OSS,配置 CDN 提速)
需要我为你提供:
- 完整的
docker-compose.yml方案(用 Docker 部署)? - Vue/React 项目的
.env环境变量适配指南? - 多环境(dev/staging/prod)Nginx 配置模板?
欢迎告诉我你的具体技术栈和需求 😊
PHPWP博客