AIGC/aigc-ui/DEPLOYMENT.md

349 lines
6.4 KiB
Markdown
Raw Normal View History

2026-02-27 14:37:19 +08:00
# AIGC 前端部署指南
## 环境配置说明
项目已配置开发和生产环境自动切换:
- **开发环境**: 使用 `.env.development`API 地址为 `http://localhost:20006`
- **生产环境**: 使用 `.env.production`,需要配置实际服务器地址
## 部署前准备
### 1. 修改生产环境配置
编辑 `.env.production` 文件,修改为实际的服务器地址:
```bash
# 修改为你的服务器地址
VITE_API_BASE_URL=http://your-server-ip:20006
# 或使用域名
VITE_API_BASE_URL=https://api.yourdomain.com
```
### 2. 确保后端服务已启动
确保后端服务在服务器上运行在 20006 端口(或你配置的端口)。
## 部署方式
### 方式一:本地构建 + 手动上传(推荐新手)
#### 1. 本地构建
```bash
# 安装依赖
npm install
# 构建生产版本
npm run build
```
构建完成后,会在项目根目录生成 `dist` 文件夹。
#### 2. 上传到服务器
```bash
# 打包 dist 目录
tar -czf aigc-ui.tar.gz dist/
# 上传到服务器
scp aigc-ui.tar.gz user@server:/var/www/
# 在服务器上解压
ssh user@server
cd /var/www/
tar -xzf aigc-ui.tar.gz
```
### 方式二:使用部署脚本(推荐)
#### 1. 本地构建并打包
```bash
chmod +x deploy.sh
./deploy.sh
```
这会生成一个带时间戳的压缩包,例如 `aigc-ui-20231209_143022.tar.gz`
#### 2. 上传并部署
手动上传压缩包到服务器,或使用自动部署脚本:
```bash
chmod +x deploy-to-server.sh
./deploy-to-server.sh user@server-ip /var/www/aigc
```
### 方式三:服务器上直接构建
```bash
# 在服务器上克隆代码
git clone your-repo-url /var/www/aigc
cd /var/www/aigc/aigc-ui
# 修改生产环境配置
vim .env.production
# 安装依赖并构建
npm install
npm run build
# dist 目录即为最终部署文件
```
## Nginx 配置
### 1. 安装 Nginx
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install nginx
# CentOS/RHEL
sudo yum install nginx
```
### 2. 配置 Nginx
复制示例配置文件:
```bash
sudo cp nginx.conf.example /etc/nginx/sites-available/aigc
```
编辑配置文件:
```bash
sudo vim /etc/nginx/sites-available/aigc
```
修改以下内容:
- `server_name`: 改为你的域名或服务器 IP
- `root`: 改为实际的 dist 目录路径
- `proxy_pass`: 确保后端地址正确
### 3. 启用配置
```bash
# 创建软链接
sudo ln -s /etc/nginx/sites-available/aigc /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启 Nginx
sudo systemctl restart nginx
```
### 4. 配置防火墙
```bash
# 允许 HTTP 和 HTTPS
sudo ufw allow 'Nginx Full'
# 或手动开放端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
```
## 目录结构
部署后的目录结构:
```
/var/www/aigc/
├── dist/ # 前端静态文件
│ ├── index.html
│ ├── assets/
│ │ ├── index-xxx.js
│ │ └── index-xxx.css
│ └── ...
└── dist.backup.xxx/ # 备份的旧版本(如果有)
```
## 常见问题
### 1. API 请求跨域问题
**方案一:使用 Nginx 代理(推荐)**
在 Nginx 配置中添加:
```nginx
location /api/ {
proxy_pass http://localhost:20006;
# ... 其他配置
}
```
这样前端访问 `/api/xxx` 会自动代理到后端。
**方案二:后端配置 CORS**
如果前后端分离部署,需要在后端添加 CORS 支持。
### 2. 刷新页面 404
这是 SPA 应用的常见问题,需要配置 Nginx
```nginx
location / {
try_files $uri $uri/ /index.html;
}
```
### 3. 静态资源加载失败
检查 `vite.config.ts` 中的 `base` 配置:
```typescript
export default defineConfig({
plugins: [vue()],
base: '/', // 根据实际部署路径调整
})
```
### 4. 环境变量不生效
确保:
- 环境变量以 `VITE_` 开头
- 构建时使用正确的环境:`npm run build` 会自动使用 `.env.production`
- 修改环境变量后需要重新构建
### 5. 后端连接失败
检查:
- 后端服务是否运行:`./startup.sh status`
- 端口是否正确:默认 20006
- 防火墙是否开放端口:`sudo ufw allow 20006/tcp`
- `.env.production` 中的地址是否正确
## 更新部署
### 快速更新
```bash
# 1. 拉取最新代码
git pull
# 2. 重新构建
npm run build
# 3. Nginx 会自动使用新的 dist 文件
```
### 使用脚本更新
```bash
./deploy-to-server.sh user@server /var/www/aigc
```
脚本会自动备份旧版本。
## 性能优化
### 1. 启用 Gzip 压缩
在 Nginx 配置中已包含 gzip 配置。
### 2. 配置缓存
静态资源已配置 1 年缓存:
```nginx
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
```
### 3. 使用 CDN
可以将 `dist/assets/` 下的静态资源上传到 CDN。
## HTTPS 配置(推荐)
### 使用 Let's Encrypt 免费证书
```bash
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
# 自动配置 HTTPS
sudo certbot --nginx -d yourdomain.com
# 自动续期
sudo certbot renew --dry-run
```
## 监控和日志
### 查看 Nginx 日志
```bash
# 访问日志
tail -f /var/log/nginx/aigc_access.log
# 错误日志
tail -f /var/log/nginx/aigc_error.log
```
### 查看后端日志
```bash
cd /path/to/backend
./startup.sh logs
```
## 回滚
如果新版本有问题,可以快速回滚:
```bash
cd /var/www/aigc
rm -rf dist
mv dist.backup.20231209_143022 dist
sudo systemctl reload nginx
```
## 开发环境 vs 生产环境
| 项目 | 开发环境 | 生产环境 |
|------|---------|---------|
| 命令 | `npm run dev` | `npm run build` |
| 配置文件 | `.env.development` | `.env.production` |
| API 地址 | `http://localhost:20006` | 实际服务器地址 |
| 热更新 | ✅ 支持 | ❌ 不支持 |
| 代码压缩 | ❌ 不压缩 | ✅ 压缩 |
| Source Map | ✅ 完整 | ❌ 或简化 |
## 安全建议
1. ✅ 使用 HTTPS
2. ✅ 配置安全响应头(已在 nginx.conf.example 中)
3. ✅ 定期更新依赖:`npm audit fix`
4. ✅ 不要在前端代码中硬编码敏感信息
5. ✅ 配置 CSP内容安全策略
6. ✅ 定期备份
## 故障排查清单
- [ ] 后端服务是否运行?
- [ ] 端口是否正确?
- [ ] 防火墙是否开放?
- [ ] Nginx 配置是否正确?
- [ ] 环境变量是否配置?
- [ ] 是否重新构建?
- [ ] 浏览器控制台有无错误?
- [ ] 网络请求是否成功?
## 联系支持
如遇问题,请检查:
1. 浏览器控制台错误信息
2. Nginx 错误日志
3. 后端服务日志