## 安全修复 (12项) - Webhook接口添加全局Token认证,过滤敏感请求头 - 修复JWT Base64 padding公式,防止签名验证绕过 - 数据库密码/飞书Token从源码移除,改为环境变量 - 工作流引擎添加路径遍历防护 (_resolve_safe_path) - eval()添加模板长度上限检查 - 审批API添加认证依赖 - 前端v-html增强XSS转义,console.log仅开发模式输出 - 500错误不再暴露内部异常详情 ## Agent运行时修复 (7项) - 删除_inject_knowledge_context中未定义db变量的finally块 - 工具执行添加try/except保护,异常不崩溃Agent - LLM重试计入budget计数器 - self_review异常时passed=False - max_iterations截断标记success=False - 工具参数JSON解析失败时记录警告日志 - run()开始时重置_llm_invocations计数器 ## 配置与基础设施 - DEBUG默认False,SQL_ECHO独立配置项 - init_db()补全13个缺失模型导入 - 新增WEBHOOK_AUTH_TOKEN/SQL_ECHO配置项 - 新增.env.example模板文件 ## 前端修复 (12项) - 登录改用URLSearchParams替代FormData - 401拦截器通过Pinia store统一清理状态 - SSE流超时从60s延长至300s - final/error事件时清除streamTimeout - localStorage聊天记录添加24h TTL - safeParseArgCount替代模板中裸JSON.parse - fetchUser 401时同时清除user对象 ## 新增模块 - 知识进化: knowledge_extractor/retriever/tasks - 数字孪生: shadow_executor/comparison模型 - 行为采集: behavior_middleware/collector/fingerprint_engine - 代码审查: code_review_agent/document_review_agent - 反馈学习: feedback_learner - 瓶颈检测/优化引擎/成本估算/需求估算 - 速率限制器 (rate_limiter) - Alembic迁移 015-020 ## 文档 - 商业化落地计划 - 8篇docs文档 (架构/API/部署/开发/贡献等) - Docker Compose生产配置 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
238 lines
7.0 KiB
Markdown
238 lines
7.0 KiB
Markdown
# 🚀 部署与运维指南
|
||
|
||
> **Deployment & Operations Guide**
|
||
|
||
本文档面向运维人员,提供天工智能体平台的生产环境部署方案与日常运维指导。
|
||
|
||
---
|
||
|
||
## 一、环境要求
|
||
|
||
### 服务器最低配置
|
||
|
||
| 环境 | CPU | 内存 | 磁盘 | 网络 |
|
||
|:----|:----|:-----|:-----|:-----|
|
||
| 开发 | 2 核 | 4 GB | 20 GB SSD | 内网 |
|
||
| 预发布 | 4 核 | 8 GB | 50 GB SSD | 内网 |
|
||
| 生产 | 8 核 | 16 GB | 100 GB SSD | 公网 |
|
||
|
||
### 依赖软件
|
||
|
||
| 组件 | 版本 | 安装方式 |
|
||
|:----|:-----|:---------|
|
||
| Docker | 24+ | `apt install docker.io` 或官方脚本 |
|
||
| Docker Compose | 2.20+ | `apt install docker-compose-plugin` |
|
||
| Nginx | 1.24+ | `apt install nginx` |
|
||
| MySQL | 8.0+ | **腾讯云数据库**(推荐)或自建 |
|
||
| Redis | 7+ | Docker 运行 |
|
||
|
||
---
|
||
|
||
## 二、部署架构
|
||
|
||
```
|
||
┌──────────────┐
|
||
│ 用户浏览器 │
|
||
└──────┬───────┘
|
||
│ HTTPS (443)
|
||
┌──────▼───────┐
|
||
│ Nginx │
|
||
│ SSL 终止 │
|
||
│ 反向代理 │
|
||
└──┬───────┬───┘
|
||
│ │
|
||
┌──────────▼─┐ ┌──▼──────────┐
|
||
│ 前端静态资源 │ │ 后端 API │
|
||
│ :8038 │ │ :8037 │
|
||
│ (Vue SPA) │ │ (FastAPI) │
|
||
└────────────┘ └──┬──────┬───┘
|
||
│ │
|
||
┌────────▼─┐ ┌──▼────────┐
|
||
│ MySQL │ │ Redis │
|
||
│ (腾讯云) │ │ (Docker) │
|
||
└──────────┘ └───────────┘
|
||
│
|
||
┌──────▼──────┐
|
||
│ Celery Worker│
|
||
│ 异步任务处理 │
|
||
└─────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 三、部署步骤
|
||
|
||
### Step 1:克隆代码
|
||
|
||
```bash
|
||
git clone <repository-url> /opt/aiagent
|
||
cd /opt/aiagent
|
||
```
|
||
|
||
### Step 2:配置环境变量
|
||
|
||
```bash
|
||
cd backend
|
||
|
||
# 复制环境变量模板
|
||
cp env.example .env
|
||
|
||
# ⚠️ 编辑 .env 文件
|
||
vim .env
|
||
```
|
||
|
||
#### 关键配置项
|
||
|
||
| 变量 | 说明 | 示例 |
|
||
|:-----|:-----|:------|
|
||
| `DATABASE_URL` | MySQL 连接字符串 | `mysql+asyncmy://user:pass@host:3306/aiagent?charset=utf8mb4` |
|
||
| `REDIS_URL` | Redis 连接地址 | `redis://localhost:6379/0` |
|
||
| `SECRET_KEY` | JWT 密钥(需随机生成) | `openssl rand -hex 32` |
|
||
| `ACCESS_TOKEN_EXPIRE_MINUTES` | Access Token 有效期 | `30` |
|
||
| `REFRESH_TOKEN_EXPIRE_DAYS` | Refresh Token 有效期 | `7` |
|
||
| `CORS_ORIGINS` | 允许的前端域名 | `["http://localhost:8038", "https://your-domain.com"]` |
|
||
|
||
> ⚠️ **安全警告**:`SECRET_KEY` 必须使用强随机字符串,切勿硬编码在代码中。
|
||
|
||
### Step 3:使用 Docker Compose 部署
|
||
|
||
```bash
|
||
# 构建并启动所有服务
|
||
docker-compose -f docker-compose.dev.yml up -d --build
|
||
|
||
# 确认所有容器正常运行
|
||
docker-compose ps
|
||
```
|
||
|
||
### Step 4:配置 Nginx(生产环境)
|
||
|
||
参考 `nginx.conf`,关键配置如下:
|
||
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name your-domain.com;
|
||
return 301 https://$server_name$request_uri; # HTTP 重定向到 HTTPS
|
||
}
|
||
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name your-domain.com;
|
||
|
||
# SSL 证书配置
|
||
ssl_certificate /etc/nginx/ssl/cert.pem;
|
||
ssl_certificate_key /etc/nginx/ssl/key.pem;
|
||
|
||
# 前端静态资源
|
||
location / {
|
||
proxy_pass http://localhost:8038;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
}
|
||
|
||
# 后端 API
|
||
location /api/ {
|
||
proxy_pass http://localhost:8037;
|
||
proxy_set_header Host $host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
# SSE 支持
|
||
proxy_set_header Connection '';
|
||
proxy_buffering off;
|
||
proxy_cache off;
|
||
chunked_transfer_encoding on;
|
||
}
|
||
}
|
||
```
|
||
|
||
### Step 5:数据库迁移
|
||
|
||
```bash
|
||
docker exec -it aiagent-backend-1 alembic upgrade head
|
||
```
|
||
|
||
---
|
||
|
||
## 四、日常运维
|
||
|
||
### 服务管理
|
||
|
||
```bash
|
||
# 查看所有服务状态
|
||
docker-compose ps
|
||
|
||
# 查看日志(实时)
|
||
docker-compose logs -f
|
||
|
||
# 查看特定服务日志
|
||
docker-compose logs -f backend
|
||
|
||
# 重启服务
|
||
docker-compose restart backend
|
||
|
||
# 滚动更新
|
||
docker-compose pull
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
### 数据库维护
|
||
|
||
```bash
|
||
# 备份数据库(使用腾讯云自动备份功能更佳)
|
||
mysqldump -h <host> -u <user> -p aiagent > backup_$(date +%Y%m%d).sql
|
||
|
||
# 执行数据库迁移
|
||
docker exec -it aiagent-backend-1 alembic upgrade head
|
||
|
||
# 查看迁移历史
|
||
docker exec -it aiagent-backend-1 alembic history
|
||
```
|
||
|
||
### 监控与告警
|
||
|
||
| 指标 | 说明 | 建议阈值 |
|
||
|:-----|:------|:---------|
|
||
| CPU 使用率 | 服务器 CPU | < 80% |
|
||
| 内存使用率 | 服务器内存 | < 85% |
|
||
| 磁盘使用率 | 数据盘 | < 80% |
|
||
| API 响应时间 | 接口平均延迟 | < 500ms |
|
||
| 错误率 | 5xx 错误占比 | < 1% |
|
||
|
||
---
|
||
|
||
## 五、常见运维问题
|
||
|
||
| 问题 | 排查步骤 |
|
||
|:-----|:---------|
|
||
| ❌ 服务无法启动 | `docker-compose logs` 查看错误日志 |
|
||
| 🔌 数据库连接失败 | 检查 `.env` 中 `DATABASE_URL` 和网络连通性 |
|
||
| ⏰ API 响应缓慢 | 检查慢查询、Redis 缓存命中率、LLM API 延迟 |
|
||
| 🚫 502 Bad Gateway | Nginx 无法连接后端,检查后端服务是否正常运行 |
|
||
| 💾 磁盘空间不足 | `docker system prune -a` 清理无用镜像和容器 |
|
||
| 🔄 证书过期 | 使用 acme.sh 或 certbot 自动续签 SSL 证书 |
|
||
|
||
---
|
||
|
||
## 六、备份策略
|
||
|
||
| 数据 | 备份频率 | 保留期限 | 方式 |
|
||
|:----|:---------|:---------|:-----|
|
||
| MySQL 数据库 | 每日 | 30 天 | 腾讯云自动备份或 mysqldump |
|
||
| 用户上传文件 | 实时同步 | — | 对象存储(如腾讯云 COS) |
|
||
| 配置文件 (.env) | 变更时 | — | Git 私有仓库 + 加密 |
|
||
| Docker 镜像 | 发布时 | 最近 5 个版本 | 镜像仓库 |
|
||
|
||
---
|
||
|
||
## 七、安全加固
|
||
|
||
- ✅ **关闭不必要的端口**:仅开放 80/443
|
||
- ✅ **使用 HTTPS**:Let's Encrypt 免费证书
|
||
- ✅ **限制数据库访问**:仅允许应用服务器 IP 连接
|
||
- ✅ **定期更新依赖**:`docker-compose pull` 拉取最新镜像
|
||
- ✅ **日志审计**:使用 ELK 或腾讯云 CLS 聚合分析
|
||
- ✅ **WAF 防护**:建议使用腾讯云 Web 应用防火墙
|
||
|
||
---
|
||
|
||
> 📎 **相关文档**:[快速开始指南](./quickstart.md) | [架构设计文档](./architecture.md)
|