Files
AIclinicalresearch/docs/05-部署文档/README.md
HaHafeng 19f9c5ea93 docs(deployment): Fix 8 critical deployment issues and enhance documentation
Summary of fixes:
- Fix service discovery address (change .sae domain to internal IP)
- Unify timezone configuration (Asia/Shanghai for all services)
- Enhance ECS security group configuration (Redis/Weaviate port binding)
- Add image pull strategy best practices
- Add Python service memory management guidelines
- Update Dify API Key deployment strategy (avoid deadlock)
- Add SSH tunnel for RDS database access
- Add NAT gateway cost optimization explanation

Modified files (7 docs):
- 00-部署架构总览.md (enhanced with 7 sections)
- 03-Dify-ECS部署完全指南.md (security hardening)
- 04-Python微服务-SAE容器部署指南.md (timezone + service discovery)
- 05-Node.js后端-SAE容器部署指南.md (timezone configuration)
- PostgreSQL部署策略-摸底报告.md (timezone best practice)
- 07-关键配置补充说明.md (3 new sections)
- 08-部署检查清单.md (service address fix)

New files:
- 文档修正报告-20251214.md (comprehensive fix report)
- Review documents from technical team

Impact:
- Fixed 3 P0/P1 critical issues (100% connection failure risk)
- Fixed 3 P2 important issues (stability and maintainability)
- Added 2 P3 best practices (developer convenience)

Status: All deployment documents reviewed and corrected, ready for production deployment
2025-12-14 13:25:28 +08:00

473 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI临床研究平台 - 阿里云部署文档导航
> **文档版本:** v2.0
> **最后更新:** 2025-12-14
> **文档总数:** 11份
> **部署目标:** 阿里云 SAE + RDS PostgreSQL 15 + OSS
> **适用团队:** 1-2人初创团队 → 10人成长团队
---
## 📋 文档清单
### 🎯 必读文档(按阅读顺序)
| # | 文档名称 | 用途 | 阅读时间 | 优先级 |
|---|---------|------|---------|--------|
| 1 | **00-部署架构总览.md** | 理解整体架构和模块关系 | 30分钟 | ⭐⭐⭐⭐⭐ |
| 2 | **⚠️ 07-关键配置补充说明.md** | 修正致命问题NAT/安全/超时) | 20分钟 | ⭐⭐⭐⭐⭐ |
| 3 | **08-部署检查清单.md** | 逐步操作清单 | 边部署边查看 | ⭐⭐⭐⭐⭐ |
### 📖 独立部署文档(按部署顺序)
| # | 文档名称 | 部署对象 | 阅读时间 | 部署时间 |
|---|---------|---------|---------|---------|
| 4 | **PostgreSQL部署策略-摸底报告.md** | RDS PostgreSQL 15 | 20分钟 | 10分钟 |
| 5 | **05-Node.js后端-SAE容器部署指南.md** | Node.js后端 | 30分钟 | 20-30分钟 |
| 6 | **04-Python微服务-SAE容器部署指南.md** | Python微服务 | 25分钟 | 20-30分钟 |
| 7 | **06-前端Nginx-SAE容器部署指南.md** | React前端 | 25分钟 | 15-20分钟 |
| 8 | **03-Dify-ECS部署完全指南.md** | Dify RAG平台 | 30分钟 | 30-60分钟 |
### 📚 参考文档
| # | 文档名称 | 用途 |
|---|---------|------|
| 9 | **CTO代码审查报告.md** | 架构审查和问题识别 |
| 10 | **集成部署补充指南.md** | 集成问题解决方案 |
| 11 | **01-部署架构设计.md** | 历史文档(待更新) |
---
## 🚀 快速开始
### 新团队首次部署(推荐路径)
```
阶段0准备工作30分钟
├─ 阅读《00-部署架构总览》
├─ 阅读《07-关键配置补充说明》⚠️ 必读
└─ 打印《08-部署检查清单》
阶段1基础设施Day 1上午2小时
├─ VPC + NAT网关 必需)
├─ RDS PostgreSQL 15
├─ OSS Bucket
└─ 参考08-部署检查清单 第1部分
阶段2核心服务Day 1下午2小时
├─ Node.js后端临时Dify配置
├─ Python微服务
├─ 前端
└─ 参考08-部署检查清单 第2部分
阶段3Dify服务Day 2上午1小时
├─ ECS部署Dify
├─ 生成API Key
└─ 更新后端配置
└─ 参考08-部署检查清单 第3部分
阶段4测试验证Day 2下午1小时
└─ 参考08-部署检查清单 第4部分
总计约6小时实际操作时间
```
---
## ⚠️ 关键注意事项(必读!)
### 🚨 致命问题P0/P1- 不解决会导致系统不可用
1. **NAT网关缺失** ⭐⭐⭐⭐⭐
- 问题SAE无公网出口AI功能全部超时
- 解决创建NAT网关 + EIP + SNAT条目
- 成本¥100/月
- 参考:`07-关键配置补充说明.md` 第1节
2. **Dify API Key死锁** ⭐⭐⭐⭐⭐
- 问题后端需要Key但Key需要Dify先启动
- 解决分阶段部署先用临时Key
- 参考:`07-关键配置补充说明.md` 第2节
3. **HTTP超时未配置** ⭐⭐⭐⭐
- 问题Python服务慢后端连接泄漏
- 解决设置timeout=120秒
- 参考:`07-关键配置补充说明.md` 第3节
4. **ECS端口安全** ⭐⭐⭐⭐⭐
- 问题Redis/Weaviate对公网开放
- 解决只监听127.0.0.1
- 参考:`07-关键配置补充说明.md` 第4节
5. **Python Workers过多** ⭐⭐⭐⭐⭐
- 问题PyMuPDF吃内存OOM崩溃
- 解决workers=2不超过2GB/0.8GB
- 参考:`07-关键配置补充说明.md` 第6节
6. **Nginx文件大小限制** ⭐⭐⭐⭐
- 问题医疗PDF大文件上传失败
- 解决client_max_body_size 50M
- 参考:`07-关键配置补充说明.md` 第5节
---
## 📊 文档更新记录
### v2.0 (2025-12-14) - 关键问题修正版
**新增文档:**
-`07-关键配置补充说明.md`813行- 修正6个致命问题
-`08-部署检查清单.md`784行- 完整操作清单
-`README.md`(本文档)- 部署文档导航
**更新文档:**
-`00-部署架构总览.md`
- 物理架构图增加NAT网关
- 成本估算更新¥1,200/月)
- 部署顺序增加分阶段说明
- 风险分析增加详细解决方案
**核心改进:**
1. ⚠️ NAT网关配置P0必需
2. ⚠️ 部署依赖死锁解决P1
3. ⚠️ HTTP超时配置P1
4. ⚠️ 安全配置强化P0
5. ⚠️ OOM防护P1
6. ⚠️ 文件上传限制P2
**审查来源:**
- `CTO代码审查报告.md`识别3个致命问题
- `集成部署补充指南.md`:提供实战解决方案
### v1.0 (2025-12-13) - 初始版本
**文档清单:**
- `00-部署架构总览.md`1,345行
- `PostgreSQL部署策略-摸底报告.md`1,327行
- `03-Dify-ECS部署完全指南.md`1,189行
- `04-Python微服务-SAE容器部署指南.md`1,524行
- `05-Node.js后端-SAE容器部署指南.md`2,178行
- `06-前端Nginx-SAE容器部署指南.md`2,064行
---
## 📖 详细文档说明
### 1. 00-部署架构总览.md ⭐⭐⭐⭐⭐
**用途:** 理解整体架构5个模块的关系阿里云服务映射
**核心内容:**
- 3个架构图逻辑/物理/数据流)
- 5个模块依赖关系L1-L4层级
- 模块与阿里云服务映射SAE/RDS/OSS/ECS
- 开发环境 vs 部署环境
- Docker版本管理策略
- 线上故障快速修复4种方案
**适合人群:** 所有人(技术负责人、开发、运维)
**关键章节:**
- 第1章架构全景图必读
- 第2章5个核心模块关系
- 第3章模块与阿里云服务映射
- 第6章线上故障快速修复⭐ 重点)
---
### 2. 07-关键配置补充说明.md ⚠️⭐⭐⭐⭐⭐
**用途:** 修正原文档遗漏的6个致命问题
**核心内容:**
- 🚨 P0/P1致命问题6个
1. SAE孤岛效应 - NAT网关配置
2. 部署依赖死锁 - Dify API Key
3. HTTP Client超时 - 120秒配置
4. ECS端口安全 - Redis/Weaviate
5. Nginx文件大小 - 50MB限制
6. Python Workers - OOM防护
**适合人群:** 所有人(⚠️ 部署前必读)
**修复时间:** 约40分钟必需修复
---
### 3. 08-部署检查清单.md ⭐⭐⭐⭐⭐
**用途:** 逐步操作清单,确保不遗漏任何步骤
**核心内容:**
- 阶段1基础设施2小时
- VPC + NAT网关 ⚠️
- RDS PostgreSQL 15
- OSS Bucket
- ACR容器镜像仓库
- 阶段2核心服务2小时
- Node.js后端临时Dify配置
- Python微服务
- 前端
- 阶段3Dify服务1小时
- ECS部署
- API Key生成
- 后端配置更新
- 阶段4测试验证1小时
- 阶段5可选优化
**使用方式:** 打印或复制到笔记,逐项打勾
---
### 4. PostgreSQL部署策略-摸底报告.md ⭐⭐⭐⭐⭐
**用途:** 深入理解PostgreSQL 15数据库架构和部署策略
**核心内容:**
- 本地数据库真实情况10个Schema隔离
- Prisma与数据库差异pg-boss表自愈机制
- 数据库连接方式DATABASE_URL + 连接池)
- 首次部署方案pg_dump vs Prisma migrate
- 未来更新策略(新表/修改字段/新模块)
- RDS备份策略4道防线
- 最佳实践与禁止操作
**适合人群:** 后端开发、DBA、运维
**关键发现:**
- ✅ pg-boss表会自动创建无需担心
- ✅ 推荐pg_dump全量导入10分钟完成
- ✅ RDS自动备份足够初期不需要ECS脚本
---
### 5. 05-Node.js后端-SAE容器部署指南.md ⭐⭐⭐⭐⭐
**用途:** Node.js后端详细部署步骤
**核心内容:**
- 为什么选择SAE容器部署
- 后端服务分析Node 22 + Fastify + Prisma
- **⭐ Prisma反向同步**关键解决Schema不一致
- Dockerfile多阶段构建
- SAE应用配置环境变量、健康检查
- 数据库部署策略pg_dump + prisma db pull
- 端到端测试
- 监控与故障排查
**适合人群:** 后端开发、运维
**关键章节:**
- 第4章Prisma反向同步必读
- 第5章Dockerfile生产环境Prisma CLI
- 第8章SAE应用配置环境变量
---
### 6. 04-Python微服务-SAE容器部署指南.md ⭐⭐⭐⭐
**用途:** Python微服务详细部署步骤
**核心内容:**
- 为什么选择SAE容器系统依赖问题
- Python服务分析PyMuPDF + Nougat + Polars
- Dockerfile多阶段构建系统依赖安装
- **⚠️ Workers限制**防止OOM
- SAE应用配置
- 端到端测试
**适合人群:** Python开发、运维
**关键注意:**
- ⚠️ workers=2不要超过会OOM
- ⚠️ 内存至少2GB
- ⚠️ 系统依赖libGL等必须在Dockerfile中安装
---
### 7. 06-前端Nginx-SAE容器部署指南.md ⭐⭐⭐⭐
**用途:** React前端详细部署步骤
**核心内容:**
- 为什么选择SAE Nginx容器
- 前端服务分析React 19 + Vite 7
- Dockerfile多阶段构建
- **nginx.conf.template**SPA路由 + 反向代理)
- SAE应用配置envsubst动态配置
- 端到端测试
**适合人群:** 前端开发、运维
**关键配置:**
- ⚠️ client_max_body_size 50M
- ⚠️ try_files $uri /index.htmlSPA路由
- ⚠️ envsubst动态注入后端地址
---
### 8. 03-Dify-ECS部署完全指南.md ⭐⭐⭐⭐
**用途:** Dify RAG平台详细部署步骤
**核心内容:**
- 为什么选择ECS复杂服务独立数据库
- ECS准备Docker + Docker Compose
- **⚠️ Swap配置**防止OOM
- docker-compose.yaml配置7个服务
- **⚠️ 端口安全**Redis/Weaviate只监听localhost
- Nginx路由层CORS处理
- 故障排查
**适合人群:** 运维、后端开发
**关键安全:**
- ⚠️ Redis: 127.0.0.1:6379:6379
- ⚠️ Weaviate: 127.0.0.1:8080:8080
- ⚠️ 独立数据库(不要和业务库混用)
---
### 9. CTO代码审查报告.md 📚
**用途:** 识别架构问题和风险点
**核心发现:**
- 🚨 SAE孤岛效应NAT网关
- 🔄 部署依赖死锁Dify Key
- 🌐 CORS问题前端直连Dify
- 🔐 端口安全Redis/Weaviate
**评分:** A-(优秀,但有关键问题需解决)
---
### 10. 集成部署补充指南.md 📚
**用途:** 集成部署的实战解决方案
**核心内容:**
- NAT网关配置两种方案
- SSH隧道配置跳板机
- 一键发布脚本(可选)
- OSS权限规划
---
## 🎯 不同角色的阅读建议
### 技术负责人/CTO
```
☐ 1. 00-部署架构总览30分钟- 理解整体架构
☐ 2. 07-关键配置补充说明20分钟- 识别风险
☐ 3. CTO代码审查报告10分钟- 审查视角
☐ 4. 成本估算¥1,200/月
总计60分钟
```
### 后端开发工程师
```
☐ 1. 00-部署架构总览30分钟- 理解架构
☐ 2. 07-关键配置补充说明20分钟- 修正问题
☐ 3. PostgreSQL部署策略30分钟- 数据库详解
☐ 4. 05-Node.js后端部署30分钟- 详细步骤
☐ 5. 04-Python微服务部署25分钟- Python服务
总计135分钟2.5小时)
```
### 前端开发工程师
```
☐ 1. 00-部署架构总览30分钟- 理解架构
☐ 2. 07-关键配置补充说明10分钟- Nginx配置
☐ 3. 06-前端Nginx部署25分钟- 详细步骤
总计65分钟
```
### 运维工程师
```
☐ 1. 00-部署架构总览30分钟- 理解架构
☐ 2. 07-关键配置补充说明20分钟- 必读
☐ 3. 08-部署检查清单(边部署边查看)- 操作清单
☐ 4. 所有独立部署文档各30分钟- 详细步骤
总计阅读2小时 + 部署6小时
```
---
## 💡 常见问题FAQ
### Q1: 必须先读哪几份文档?
**A:** 3份必读按顺序
1. `00-部署架构总览.md`(理解整体)
2. `07-关键配置补充说明.md`(修正致命问题)⚠️
3. `08-部署检查清单.md`(逐步操作)
### Q2: 为什么NAT网关这么重要
**A:** SAE部署在VPC内网没有NAT网关
- ❌ 后端无法调用DeepSeek/OpenAI API
- ❌ Python无法下载公网PDF
- ❌ npm install无法下载公网依赖
- **结果所有AI功能不可用**
### Q3: Dify API Key的鸡生蛋问题怎么解决
**A:** 分阶段部署:
1. 后端先用临时Key`temp_placeholder`
2. 部署Dify并生成真实Key
3. 更新后端环境变量并重启
### Q4: 为什么Python workers只能设置2个
**A:** PyMuPDF + Nougat OCR非常吃内存
- 单个worker~800MB内存
- SAE配置2GB内存
- workers=2安全值2 × 800MB = 1.6GB < 2GB
- workers=3会OOM崩溃
### Q5: 部署需要多长时间?
**A:**
- 首次部署6小时实际操作
- 后续更新10-30分钟镜像重新部署
### Q6: 总成本多少?
**A:** ¥1,200-1,250/月(初期配置)
- SAE¥350/月
- RDS¥400/月
- ECSDify¥300/月
- NAT网关¥100/月
- OSS¥10/月
---
## 📞 获取帮助
### 遇到问题?
1. **查看故障排查章节**:每个独立文档都有详细的故障排查
2. **检查关键配置**`07-关键配置补充说明.md`
3. **查看审查报告**`CTO代码审查报告.md``集成部署补充指南.md`
### 反馈建议
如果文档有遗漏或错误,欢迎反馈!
---
**文档维护人:** AI助手
**最后更新:** 2025-12-14
**版本:** v2.0
**核心理念:架构清晰、安全第一、步骤详细、易于上手** ⭐⭐⭐