使用阿里云轻量应用服务器(Simple Application Server)部署 Vue 项目是一个非常主流且高性价比的方案。由于 Vue 是前端框架,通常只需要一个静态文件托管服务即可,但为了配合后端接口或实现更复杂的构建流程,我们通常会采用 Nginx 反向X_X + Node.js 环境 的方式。
以下是完整的部署流程和关键注意事项:
1. 前期准备
在开始之前,请确保你拥有:
- 一台已购买的阿里云轻量应用服务器(推荐 Ubuntu 20.04/22.04 或 CentOS 7/8)。
- 本地开发好的 Vue 项目代码(包含
package.json)。 - 基础的网络知识(SSH 连接、Git 等)。
2. 服务器环境安装
登录到服务器后,首先需要安装运行环境。推荐使用 Nginx 作为 Web 服务器,并安装 Node.js 用于执行打包命令(如果不想在服务器上装 Node,也可以直接在本地打包好 dist 文件夹上传)。
A. 更新系统并安装 Nginx
# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y
# CentOS/RHEL
sudo yum update
sudo yum install nginx -y
B. 安装 Node.js (可选)
如果你打算在服务器上直接运行 npm run build,则需要安装 Node.js。推荐使用 nvm 管理版本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install --lts
node -v
npm -v
注:如果选择本地打包,此步可跳过。
3. 代码部署方式
有两种主要策略,取决于你的工作流:
方案一:本地打包,上传 dist 目录(推荐,稳定简单)
这种方式将构建过程放在本地电脑完成,服务器只负责托管静态资源,性能最稳,不易出错。
-
本地构建:
在本地终端运行:npm run build这会生成一个
dist文件夹。 -
上传文件:
使用scp命令或 FTP 工具(如 FileZilla)将dist文件夹内容上传到服务器的某个目录,例如/var/www/my-vue-app。scp -r ./dist/* root@<服务器IP>:/var/www/my-vue-app/
方案二:Git 拉取,服务器构建
适合需要频繁更新且希望自动化程度高的场景。
- 在服务器上安装 Git。
- 克隆你的代码仓库。
- 安装依赖并构建:
cd /path/to/project npm install npm run build
4. 配置 Nginx
Vue 项目通常使用了 HTML5 History 模式(路由不带 .html),因此必须配置 Nginx 将所有非静态文件请求重定向到 index.html,否则刷新页面会报 404。
编辑 Nginx 配置文件(Ubuntu 通常在 /etc/nginx/sites-available/default,CentOS 在 /etc/nginx/conf.d/default.conf):
server {
listen 80;
server_name your_domain_or_ip; # 替换为你的域名或服务器 IP
# 根目录指向你上传 dist 的文件夹
root /var/www/my-vue-app;
index index.html;
location / {
try_files $uri $uri/ /index.html;
# 解决跨域问题(如果需要)
add_header Access-Control-Allow-Origin *;
}
# 处理静态资源缓存
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
生效配置:
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx
5. 配置安全组与防火墙
这是新手最容易忽略的一步。如果访问不了,通常是端口被拦截了。
-
阿里云控制台设置:
- 进入【云服务器 ECS】->【实例】->【安全组】。
- 添加规则:放行 TCP 80 端口(HTTP)。
- 如果有 HTTPS 需求,还需放行 TCP 443。
-
服务器内部防火墙(如果开启了):
# Ubuntu (UFW) sudo ufw allow 80/tcp sudo ufw reload # CentOS (firewalld) sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --reload
6. 常见问题与优化建议
Q: 访问时刷新页面出现 404?
A: 这是典型的 History 模式问题。请检查 Nginx 配置中的 try_files $uri $uri/ /index.html; 是否正确,并确保没有拼写错误。
Q: 生产环境如何获取 API 数据?
Vue 项目中通常有 api 请求。
- 开发环境:使用
vue.config.js中的devServer.proxy。 - 生产环境:不要硬编码 localhost。建议在 Nginx 层做反向X_X,或者在后端接口地址中使用环境变量。
Nginx 反向X_X示例:location /api/ { proxy_pass http://localhost:3000; # 假设你的后端跑在 3000 端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
Q: 如何自动更新代码?
可以使用简单的 Shell 脚本配合 crontab 定时任务,或者使用 CI/CD 工具(如 GitHub Actions + SSH 插件)在推送代码后自动触发 git pull && npm run build。
总结
对于轻量应用服务器,“本地构建 -> 上传 dist -> Nginx 托管” 是最稳健的方案。它避免了服务器内存不足导致构建失败的风险,同时利用 Nginx 的高效性处理静态资源分发。只需注意配置好 try_files 以支持前端路由,并开放 80 端口即可上线。
CLOUD云计算