# 部署指南
## 部署概述
本文档详细描述了 MobVue 项目的部署流程和配置说明,涵盖开发环境、预发布环境和生产环境的部署步骤。
## 环境要求
### 服务器要求
- **操作系统**: Linux (推荐 Ubuntu 20.04+ 或 CentOS 7+)
- **Node.js**: 20.x 或 22+
- **Web 服务器**: Nginx 或 Apache
- **内存**: 至少 1GB RAM
- **存储**: 至少 10GB 可用空间
### 网络要求
- **域名**: 配置正确的域名和 SSL 证书
- **防火墙**: 开放 80 (HTTP) 和 443 (HTTPS) 端口
- **CDN**: 推荐使用 CDN 加速静态资源
## 环境配置
### 1. 环境变量
#### 开发环境 (.env.development)
```env
# 开发环境配置
VITE_BASE_URL=https://apifoxmock.com/m1/2930465-2145633-default
VITE_PUBLIC_PATH=/
VITE_ROUTER_HISTORY=hash
```
#### 预发布环境 (.env.staging)
```env
# 预发布环境配置
VITE_BASE_URL=https://staging-api.example.com
VITE_PUBLIC_PATH=/
VITE_ROUTER_HISTORY=hash
```
#### 生产环境 (.env.production)
```env
# 生产环境配置
VITE_BASE_URL=https://api.example.com
VITE_PUBLIC_PATH=/
VITE_ROUTER_HISTORY=hash
```
### 2. 微信配置
#### 微信公众号配置
- **AppID**: 微信公众号应用 ID
- **AppSecret**: 微信公众号应用密钥
- **回调域名**: 配置为部署的域名
#### 企业微信配置
- **CorpID**: 企业微信企业 ID
- **AgentID**: 企业微信应用 ID
- **Secret**: 企业微信应用密钥
- **回调域名**: 配置为部署的域名
## 构建流程
### 1. 开发环境构建
```bash
# 安装依赖
pnpm i
# 启动开发服务器
pnpm dev
```
### 2. 预发布环境构建
```bash
# 构建预发布版本
pnpm build:staging
# 构建输出目录: dist/
```
### 3. 生产环境构建
```bash
# 构建生产版本
pnpm build
# 构建输出目录: dist/
```
### 构建优化
- **代码分割**: Vue 相关库独立打包
- **压缩优化**: 移除 console 和 debugger
- **浏览器兼容**: 传统浏览器支持
- **资源优化**: 图片和字体文件压缩
## 部署方式
### 1. 静态文件部署
#### Nginx 配置示例
```nginx
server {
listen 80;
server_name your-domain.com;
# 重定向到 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL 配置
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
# 静态文件服务
root /var/www/mobvue/dist;
index index.html;
# Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 缓存配置
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# SPA 路由支持
location / {
try_files $uri $uri/ /index.html;
}
# API 代理
location /api/ {
proxy_pass https://api.example.com;
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;
}
}
```
#### Apache 配置示例
```apache
ServerName your-domain.com
DocumentRoot /var/www/mobvue/dist
# 重定向到 HTTPS
Redirect permanent / https://your-domain.com/
ServerName your-domain.com
DocumentRoot /var/www/mobvue/dist
# SSL 配置
SSLEngine on
SSLCertificateFile /path/to/certificate.crt
SSLCertificateKeyFile /path/to/private.key
# SPA 路由支持
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
# 缓存配置
ExpiresActive On
ExpiresDefault "access plus 1 year"
Header append Cache-Control "public, immutable"
```
### 2. Docker 部署
#### Dockerfile
```dockerfile
# 构建阶段
FROM node:20-alpine AS builder
WORKDIR /app
# 复制 package.json 和 lock 文件
COPY package.json pnpm-lock.yaml ./
# 安装依赖
RUN npm install -g pnpm && pnpm i
# 复制源代码
COPY . .
# 构建应用
RUN pnpm build
# 生产阶段
FROM nginx:alpine
# 复制构建结果
COPY --from=builder /app/dist /usr/share/nginx/html
# 复制 Nginx 配置
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 暴露端口
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
```
#### docker-compose.yml
```yaml
version: '3.8'
services:
mobvue:
build: .
ports:
- "80:80"
environment:
- NODE_ENV=production
restart: unless-stopped
# 可选:添加反向代理
nginx-proxy:
image: nginx:alpine
ports:
- "443:443"
volumes:
- ./nginx-proxy.conf:/etc/nginx/conf.d/default.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- mobvue
restart: unless-stopped
```
### 3. 云平台部署
#### Vercel 部署
1. 连接 GitHub 仓库
2. 配置环境变量
3. 自动部署
#### Netlify 部署
1. 连接 Git 仓库
2. 构建命令: `pnpm build`
3. 发布目录: `dist`
4. 配置重定向规则
#### 阿里云/腾讯云部署
1. 上传构建文件到对象存储
2. 配置 CDN 加速
3. 配置域名和 SSL
## 部署检查清单
### 构建前检查
- [ ] 环境变量配置正确
- [ ] 依赖安装完成
- [ ] 代码 lint 通过
- [ ] 单元测试通过
### 部署前检查
- [ ] 构建产物完整
- [ ] 静态资源路径正确
- [ ] API 接口可访问
- [ ] 路由配置正确
### 部署后验证
- [ ] 首页可正常访问
- [ ] 路由跳转正常
- [ ] API 调用正常
- [ ] 移动端适配正常
- [ ] 微信登录正常
- [ ] 图片资源加载正常
## 监控和维护
### 1. 性能监控
- **Web Vitals**: 监控核心性能指标
- **错误监控**: 使用 Sentry 或类似工具
- **用户行为分析**: 使用 Google Analytics
### 2. 日志管理
- **访问日志**: Nginx 访问日志
- **错误日志**: 应用错误日志
- **API 日志**: 后端接口调用日志
### 3. 备份策略
- **代码备份**: Git 仓库备份
- **数据库备份**: 定期备份数据库
- **配置文件备份**: 环境配置备份
## 故障排除
### 常见问题
#### 1. 白屏问题
- 检查静态资源路径
- 验证路由配置
- 查看浏览器控制台错误
#### 2. API 调用失败
- 检查网络连接
- 验证 API 地址配置
- 查看跨域配置
#### 3. 微信登录失败
- 检查回调域名配置
- 验证 AppID 和 Secret
- 查看微信授权日志
#### 4. 移动端适配问题
- 测试不同设备尺寸
- 检查 viewport 配置
- 验证 CSS 媒体查询
### 调试工具
- **浏览器 DevTools**: 调试前端代码
- **网络监控**: 检查 API 请求
- **移动端模拟**: 测试移动端体验
- **性能分析**: 分析页面性能
## 安全考虑
### 1. 网络安全
- 使用 HTTPS 加密传输
- 配置 CSP 安全策略
- 启用 HSTS 强制 HTTPS
### 2. 应用安全
- 输入验证和过滤
- XSS 防护
- CSRF 防护
### 3. 数据安全
- 敏感信息加密存储
- 定期安全扫描
- 访问权限控制
## 版本管理
### 1. 版本号规范
- 遵循语义化版本规范 (SemVer)
- 主版本号.次版本号.修订版本号
- 预发布版本使用标签 (如: 1.0.0-beta.1)
### 2. 发布流程
1. 功能开发和测试
2. 预发布环境验证
3. 生产环境部署
4. 监控和反馈
### 3. 回滚策略
- 保留历史版本构建
- 快速回滚到稳定版本
- 数据库版本兼容性检查
## 附录
### 常用命令
```bash
# 开发
pnpm dev
# 构建
pnpm build
pnpm build:staging
# 代码检查
pnpm lint
pnpm test
# 依赖管理
pnpm i
pnpm update
```
### 配置文件说明
- `vite.config.ts`: Vite 构建配置
- `uno.config.ts`: UnoCSS 配置
- `tsconfig.json`: TypeScript 配置
- `eslint.config.js`: ESLint 配置
### 相关文档
- [Vue 3 官方文档](https://vuejs.org/)
- [Vite 官方文档](https://vitejs.dev/)
- [Vant 官方文档](https://vant-ui.github.io/vant/)
- [UnoCSS 官方文档](https://unocss.dev/)