# 🚀 部署与运维指南 > **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 /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 -u -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)