feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes: - Add StreamingService with OpenAI Compatible format - Upgrade Chat component V2 with Ant Design X integration - Implement AIA module with 12 intelligent agents - Update API routes to unified /api/v1 prefix - Update system documentation Backend (~1300 lines): - common/streaming: OpenAI Compatible adapter - modules/aia: 12 agents, conversation service, streaming integration - Update route versions (RVW, PKB to v1) Frontend (~3500 lines): - modules/aia: AgentHub + ChatWorkspace (100% prototype restoration) - shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook - Update API endpoints to v1 Documentation: - AIA module status guide - Universal capabilities catalog - System overview updates - All module documentation sync Tested: Stream response verified, authentication working Status: AIA V2.0 core completed (85%)
This commit is contained in:
@@ -1,97 +1,97 @@
|
||||
# REDCap Docker<65>函蔡<E587BD>滢<EFBFBD><E6BBA2>见<EFBFBD>
|
||||
|
||||
**版本:** v1.0
|
||||
**<EFBFBD><EFBFBD>𧋦嚗?* v1.0
|
||||
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD>** 2026-01-02
|
||||
**适用环境:** Windows/Linux/Mac + Docker
|
||||
**REDCap版本:** 15.8.0
|
||||
**验证状态:** ✅ 已在本地Windows环境验证通过
|
||||
**<EFBFBD><EFBFBD>鍂<EFBFBD>臬<EFBFBD>嚗?* Windows/Linux/Mac + Docker
|
||||
**REDCap<EFBFBD><EFBFBD>𧋦嚗?* 15.8.0
|
||||
**撉諹<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>** <20>?撌脣銁<E884A3>砍𧑐Windows<77>臬<EFBFBD>撉諹<E69289><E8ABB9>朞<EFBFBD>
|
||||
|
||||
---
|
||||
|
||||
## <20><> <20><>﹝<EFBFBD>格<EFBFBD>
|
||||
|
||||
本手册提供REDCap基于Docker的**标准化部署流程**,适用于:
|
||||
- ✅ 本地开发环境
|
||||
- ✅ 阿里云ECS生产环境
|
||||
- ✅ 医院私有化服务器
|
||||
<EFBFBD>祆<EFBFBD><EFBFBD>峕<EFBFBD>靘𢡱EDCap<EFBFBD>箔<EFBFBD>Docker<EFBFBD>?*<2A><><EFBFBD><EFBFBD>㚚<EFBFBD>蝵脫<E89DB5>蝔?*嚗屸<E59A97><E5B1B8>鍂鈭𠬍<E988AD>
|
||||
- <EFBFBD>?<3F>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?
|
||||
- <EFBFBD>?<3F>輸<EFBFBD>鈭䫿CS<43>煺漣<E785BA>臬<EFBFBD>
|
||||
- <EFBFBD>?<3F>駁堺蝘<E5A0BA><E89D98><EFBFBD>𡝗<EFBFBD><F0A19D97>∪膥
|
||||
|
||||
**核心优势:**
|
||||
- 🔄 **可复用**:Docker配置文件可在不同环境直接使用
|
||||
- 📦 **一致性**:开发环境=生产环境,避免环境差异
|
||||
- 🚀 **快速部署**:30分钟内完成部署
|
||||
- 🛡️ **问题规避**:基于实际踩坑经验,预防常见问题
|
||||
**<EFBFBD>詨<EFBFBD>隡睃飵嚗?*
|
||||
- <EFBFBD><EFBFBD> **<EFBFBD>臬<EFBFBD><EFBFBD>?*嚗鋽ocker<65>滨蔭<E6BBA8><E894AD>辣<EFBFBD>臬銁銝滚<E98A9D><E6BB9A>臬<EFBFBD><E887AC>湔𦻖雿輻鍂
|
||||
- <EFBFBD>𣑐 **銝<><E98A9D>湔<EFBFBD>?*嚗𡁜<E59A97><F0A1819C>𤑳㴓憓?<3F>煺漣<E785BA>臬<EFBFBD>嚗屸<E59A97><E5B1B8>滨㴓憓<E3B493>榆撘?
|
||||
- <EFBFBD><EFBFBD> **敹恍<E695B9>罸<EFBFBD>蝵?*嚗?0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鞾<EFBFBD>蝵?
|
||||
- <EFBFBD>椘儭?**<2A>桅<EFBFBD>閫<EFBFBD><E996AB>**嚗𡁜抅鈭𤾸<E988AD><F0A4BEB8><EFBFBD>萱<EFBFBD>𤑳<EFBFBD>撉䕘<E69289>憸<EFBFBD>俈撣貉<E692A3><E8B289>桅<EFBFBD>
|
||||
|
||||
---
|
||||
|
||||
## <20>㴓 <20>函蔡<E587BD>嗆<EFBFBD>
|
||||
|
||||
### 标准架构(3个Docker容器)
|
||||
### <EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗆<EFBFBD>嚗?銝枋ocker摰孵膥嚗?
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ REDCap Docker 部署架构 │
|
||||
├─────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌──────────────────────────────────┐ │
|
||||
│ │ redcap-apache (Web容器) │ │
|
||||
│ │ - PHP 8.1 + Apache 2.4 │ │
|
||||
│ │ - REDCap 15.8.0 源码 │ │
|
||||
│ │ - Cron定时任务 │ │
|
||||
│ │ Port: 8080 → 80 │ │
|
||||
│ └──────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌──────────────────────────────────┐ │
|
||||
│ │ redcap-mysql (数据库容器) │ │
|
||||
│ │ - MySQL 8.0 │ │
|
||||
│ │ - 数据持久化(Volume) │ │
|
||||
│ │ Port: 3306 (内部) │ │
|
||||
│ └──────────────────────────────────┘ │
|
||||
│ ↓ │
|
||||
│ ┌──────────────────────────────────┐ │
|
||||
│ │ redcap-phpmyadmin (管理工具) │ │
|
||||
│ │ - phpMyAdmin 5 │ │
|
||||
│ │ Port: 8081 → 80 │ │
|
||||
│ │ (可选,仅开发环境) │ │
|
||||
│ └──────────────────────────────────┘ │
|
||||
└─────────────────────────────────────────┘
|
||||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
<EFBFBD>? REDCap Docker <EFBFBD>函蔡<EFBFBD>嗆<EFBFBD> <EFBFBD>?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
<EFBFBD>? <EFBFBD>?
|
||||
<EFBFBD>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? redcap-apache (Web摰孵膥) <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? - PHP 8.1 + Apache 2.4 <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? - REDCap 15.8.0 皞鞟<EFBFBD> <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? - Cron摰𡁏𧒄隞餃𦛚 <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? Port: 8080 <EFBFBD>?80 <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?
|
||||
<EFBFBD>? <EFBFBD>? <EFBFBD>?
|
||||
<EFBFBD>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? redcap-mysql (<EFBFBD>唳旿摨枏捆<EFBFBD>? <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? - MySQL 8.0 <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? - <20>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>?Volume) <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? Port: 3306 (<EFBFBD><EFBFBD><EFBFBD>) <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?
|
||||
<EFBFBD>? <EFBFBD>? <EFBFBD>?
|
||||
<EFBFBD>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? redcap-phpmyadmin (蝞∠<EFBFBD>撌亙<EFBFBD>) <20>? <20>?
|
||||
<EFBFBD>? <20>? - phpMyAdmin 5 <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? Port: 8081 <EFBFBD>?80 <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>? (<28>舫<EFBFBD>㚁<EFBFBD>隞<EFBFBD><E99A9E><EFBFBD>𤑳㴓憓? <EFBFBD>? <20>?
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20>?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## <20>𣑐 <20>臬<EFBFBD><E887AC>函<EFBFBD>Docker<65><72>辣皜<E8BEA3><E79A9C>
|
||||
|
||||
### 核心文件(必需,可直接复用)
|
||||
### <EFBFBD>詨<EFBFBD><EFBFBD><EFBFBD>辣嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗<EFBFBD>虾<EFBFBD>湔𦻖憭滨鍂嚗?
|
||||
|
||||
| 文件路径 | 说明 | 环境差异 | 复用性 |
|
||||
| <EFBFBD><EFBFBD>辣頝臬<EFBFBD> | 霂湔<E99C82> | <20>臬<EFBFBD>撌桀<E6928C> | 憭滨鍂<E6BBA8>?|
|
||||
|---------|------|---------|--------|
|
||||
| `Dockerfile.redcap` | REDCap镜像构建文件 | 无差异 | ✅ 100%可复用 |
|
||||
| `docker-compose.yml` | 开发环境编排文件 | 需调整端口/卷路径 | ⚠️ 需微调 |
|
||||
| `docker-compose.prod.yml` | 生产环境编排文件 | 需配置RDS | ⚠️ 需修改数据库配置 |
|
||||
| `docker-entrypoint.sh` | 容器启动脚本 | 无差异 | ✅ 100%可复用 |
|
||||
| `Dockerfile.redcap` | REDCap<EFBFBD>𨅯<EFBFBD><EFBFBD><EFBFBD>遣<EFBFBD><EFBFBD>辣 | <20>惩榆撘?| <20>?100%<25>臬<EFBFBD><E887AC>?|
|
||||
| `docker-compose.yml` | 撘<EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD><EFBFBD><EFBFBD>埝<EFBFBD>隞?| <20><>靚<EFBFBD>㟲蝡臬藁/<2F>瑁楝敺?| <20>𩤃<EFBFBD> <20><>敺株<E695BA> |
|
||||
| `docker-compose.prod.yml` | <EFBFBD>煺漣<EFBFBD>臬<EFBFBD>蝻𡝗<EFBFBD><EFBFBD><EFBFBD>辣 | <20><><EFBFBD>滨蔭RDS | <20>𩤃<EFBFBD> <20><>靽格㺿<E6A0BC>唳旿摨㯄<E691A8>蝵?|
|
||||
| `docker-entrypoint.sh` | 摰孵膥<EFBFBD>臬𢆡<EFBFBD>𡁏𧋦 | <20>惩榆撘?| <20>?100%<25>臬<EFBFBD><E887AC>?|
|
||||
| `config/apache/redcap.conf` | Apache<68>𡁏<EFBFBD>銝餅㦤<E9A485>滨蔭 | <20><>靚<EFBFBD>㟲<EFBFBD>笔<EFBFBD> | <20>𩤃<EFBFBD> <20><>靽格㺿<E6A0BC>笔<EFBFBD> |
|
||||
| `config/php/php.ini` | PHP运行时配置 | 无差异 | ✅ 100%可复用 |
|
||||
| `config/database.php` | REDCap数据库连接配置 | **必须修改** | ❌ 需针对环境定制 |
|
||||
| `.gitattributes` | Git换行符规范 | 无差异 | ✅ 100%可复用 |
|
||||
| `config/php/php.ini` | PHP餈鞱<EFBFBD><EFBFBD>園<EFBFBD>蝵?| <20>惩榆撘?| <20>?100%<25>臬<EFBFBD><E887AC>?|
|
||||
| `config/database.php` | REDCap<EFBFBD>唳旿摨栞<EFBFBD><EFBFBD>仿<EFBFBD>蝵?| **敹<>◆靽格㺿** | <20>?<3F><><EFBFBD><EFBFBD>笆<EFBFBD>臬<EFBFBD>摰𡁜<E691B0> |
|
||||
| `.gitattributes` | Git<EFBFBD>Z<EFBFBD>蝚西<EFBFBD><EFBFBD>?| <20>惩榆撘?| <20>?100%<25>臬<EFBFBD><E887AC>?|
|
||||
|
||||
### 颲<>𨭌<EFBFBD>𡁏𧋦嚗<F0A78BA6>虾<EFBFBD>㚁<EFBFBD>
|
||||
|
||||
| <20><>辣頝臬<E9A09D> | 霂湔<E99C82> | <20><>鍂<EFBFBD>箸艶 |
|
||||
|---------|------|---------|
|
||||
| `scripts/setup-redcap.ps1` | 一键部署脚本(Windows) | 本地开发 |
|
||||
| `scripts/start-redcap.ps1` | 启动服务 | 本地开发 |
|
||||
| `scripts/stop-redcap.ps1` | 停止服务 | 本地开发 |
|
||||
| `scripts/clean-redcap.ps1` | 清理环境 | 本地开发 |
|
||||
| `scripts/create-redcap-password.php` | 密码重置工具 | 开发/运维 |
|
||||
| `scripts/setup-redcap.ps1` | 銝<EFBFBD><EFBFBD>桅<EFBFBD>蝵脰<EFBFBD><EFBFBD>穿<EFBFBD>Windows嚗?| <20>砍𧑐撘<F0A79190><E69298>?|
|
||||
| `scripts/start-redcap.ps1` | <EFBFBD>臬𢆡<EFBFBD>滚𦛚 | <20>砍𧑐撘<F0A79190><E69298>?|
|
||||
| `scripts/stop-redcap.ps1` | <EFBFBD>𨀣迫<EFBFBD>滚𦛚 | <20>砍𧑐撘<F0A79190><E69298>?|
|
||||
| `scripts/clean-redcap.ps1` | 皜<EFBFBD><EFBFBD><EFBFBD>臬<EFBFBD> | <20>砍𧑐撘<F0A79190><E69298>?|
|
||||
| `scripts/create-redcap-password.php` | 撖<EFBFBD><EFBFBD><EFBFBD>滨蔭撌亙<EFBFBD> | 撘<><E69298>?餈鞟輕 |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 部署流程(从0到1)
|
||||
## <EFBFBD><EFBFBD> <20>函蔡瘚<E894A1><E7989A>嚗<EFBFBD><E59A97>0<EFBFBD>?嚗?
|
||||
|
||||
### 阶段1:环境准备
|
||||
### <EFBFBD>嗆挾1嚗𡁶㴓憓<EFBFBD><EFBFBD>憭?
|
||||
|
||||
#### 1.1 摰㕑<E691B0>Docker
|
||||
|
||||
**Windows/Mac:**
|
||||
**Windows/Mac嚗?*
|
||||
```bash
|
||||
# 銝贝蝸撟嗅<E6929F>鋆<EFBFBD>ocker Desktop
|
||||
# https://www.docker.com/products/docker-desktop/
|
||||
@@ -121,22 +121,22 @@ docker-compose --version
|
||||
|
||||
#### 1.2 <20>瑕<EFBFBD>REDCap皞鞟<E79A9E>
|
||||
|
||||
**重要说明:** REDCap是商业软件,需要:
|
||||
**<EFBFBD>滩<EFBFBD>霂湔<EFBFBD>嚗?* REDCap<61>臬<EFBFBD>銝朞蔓隞塚<E99A9E><E5A19A><EFBFBD>閬<EFBFBD><E996AC>
|
||||
1. 霈輸䔮 https://projectredcap.org/
|
||||
2. 瘜典<E7989C>撟嗥𤚗霂瑞冗<E7919E>箇<EFBFBD><E7AE87>硋<EFBFBD>銝𡁶<E98A9D>
|
||||
3. 下载REDCap 15.8.0源码包(redcap15.8.0.zip)
|
||||
3. 銝贝蝸REDCap 15.8.0皞鞟<EFBFBD><EFBFBD><EFBFBD><EFBFBD>redcap15.8.0.zip嚗?
|
||||
|
||||
**目录结构:**
|
||||
**<EFBFBD>桀<EFBFBD>蝏𤘪<EFBFBD>嚗?*
|
||||
```
|
||||
your-project/
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> redcap-docker-dev/ # Docker<65>滨蔭<E6BBA8>桀<EFBFBD>
|
||||
│ ├── Dockerfile.redcap
|
||||
│ ├── docker-compose.yml
|
||||
│ ├── docker-entrypoint.sh
|
||||
│ ├── config/
|
||||
│ └── scripts/
|
||||
│
|
||||
└── redcap15.8.0/ # REDCap源码(解压后)
|
||||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> Dockerfile.redcap
|
||||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> docker-compose.yml
|
||||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> docker-entrypoint.sh
|
||||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> config/
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD> scripts/
|
||||
<EFBFBD>?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> redcap15.8.0/ # REDCap皞鞟<EFBFBD>嚗<EFBFBD>圾<EFBFBD>见<EFBFBD>嚗?
|
||||
<20>鎿<EFBFBD><E98EBF><EFBFBD> redcap_v15.8.0/
|
||||
<20>鎿<EFBFBD><E98EBF><EFBFBD> install.php
|
||||
<20>鎿<EFBFBD><E98EBF><EFBFBD> index.php
|
||||
@@ -153,7 +153,7 @@ your-project/
|
||||
# <20>𥕦遣<F0A595A6>桀<EFBFBD>蝏𤘪<E89D8F>
|
||||
mkdir -p redcap-docker-dev/config/{apache,php}
|
||||
mkdir -p redcap-docker-dev/scripts
|
||||
mkdir -p redcap-docker-dev/data/mysql # MySQL数据持久化
|
||||
mkdir -p redcap-docker-dev/data/mysql # MySQL<EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
mkdir -p redcap-docker-dev/logs # <20>亙<EFBFBD><E4BA99>桀<EFBFBD>
|
||||
```
|
||||
|
||||
@@ -162,7 +162,7 @@ mkdir -p redcap-docker-dev/logs # 日志目录
|
||||
**隞擧<E99A9E>隞祉<E99A9E>憿寧𤌍銝剖<E98A9D><E58996>嗡誑銝𧢲<E98A9D>隞塚<E99A9E>**
|
||||
|
||||
```bash
|
||||
# 核心文件(可直接复用,无需修改)
|
||||
# <EFBFBD>詨<EFBFBD><EFBFBD><EFBFBD>辣嚗<EFBFBD>虾<EFBFBD>湔𦻖憭滨鍂嚗峕<EFBFBD><EFBFBD><EFBFBD>靽格㺿嚗?
|
||||
cp AIclinicalresearch/redcap-docker-dev/Dockerfile.redcap ./
|
||||
cp AIclinicalresearch/redcap-docker-dev/docker-entrypoint.sh ./
|
||||
cp AIclinicalresearch/redcap-docker-dev/config/php/php.ini ./config/php/
|
||||
@@ -195,16 +195,16 @@ MYSQL_PORT=3306
|
||||
PHPMYADMIN_PORT=8081
|
||||
```
|
||||
|
||||
#### 2.4 修改database.php(重要!)
|
||||
#### 2.4 靽格㺿database.php嚗<EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD>嚗?
|
||||
|
||||
蝻𤥁<EFBFBD>`config/database.php`嚗峕覔<E5B395>桃㴓憓<E3B493>耨<EFBFBD>對<EFBFBD>
|
||||
|
||||
**撘<><E69298>𤑳㴓憓<E3B493><E68693>Docker MySQL嚗㚁<E59A97>**
|
||||
```php
|
||||
$hostname = 'redcap-mysql'; // Docker Compose服务名
|
||||
$hostname = 'redcap-mysql'; // Docker Compose<EFBFBD>滚𦛚<EFBFBD>?
|
||||
$db = 'redcap';
|
||||
$username = 'redcap_user';
|
||||
$password = 'your_password'; // 与.env保持一致
|
||||
$password = 'your_password'; // 銝?env靽脲<EFBFBD>銝<EFBFBD><EFBFBD>?
|
||||
$salt = 'dev_salt_2026'; // 撘<><E69298>𤑳㴓憓<E3B493>𤐄摰窃alt
|
||||
```
|
||||
|
||||
@@ -214,13 +214,13 @@ $hostname = 'rm-xxx.mysql.rds.aliyuncs.com'; // RDS内网地址
|
||||
$db = 'redcap_prod';
|
||||
$username = 'redcap_admin';
|
||||
$password = 'your_strong_prod_password'; // 撘箏<E69298><E7AE8F><EFBFBD><EFBFBD>
|
||||
$salt = 'your_random_32_chars_salt'; // ⚠️ 永不可变!
|
||||
$salt = 'your_random_32_chars_salt'; // <EFBFBD>𩤃<EFBFBD> 瘞訾<E7989E><E8A8BE>臬<EFBFBD>嚗?
|
||||
```
|
||||
|
||||
**⚠️ 关键注意事项:**
|
||||
1. ✅ **删除文件末尾的`?>`和空行**(防止CRLF污染)
|
||||
2. ✅ **Salt值一旦设置永不可改**(影响数据去标识化)
|
||||
3. ✅ **生产环境使用强密码**(32+字符)
|
||||
**<2A>𩤃<EFBFBD> <20>喲睸瘜冽<E7989C>鈭钅★嚗?*
|
||||
1. <20>?**<2A>𣳇膄<F0A3B387><E88684>辣<EFBFBD>怠偏<E680A0><E5818F>?>`<EFBFBD>𣬚征銵?*嚗<>俈甇$RLF瘙⊥<E79899>嚗?
|
||||
2. <EFBFBD>?**Salt<EFBFBD>潔<EFBFBD><EFBFBD>西挽蝵格偶銝滚虾<EFBFBD>?*嚗<>蔣<EFBFBD>齿㺭<E9BDBF>桀縧<E6A180><E7B8A7><EFBFBD><EFBFBD>吔<EFBFBD>
|
||||
3. <EFBFBD>?**<2A>煺漣<E785BA>臬<EFBFBD>雿輻鍂撘箏<E69298><E7AE8F>?*嚗?2+摮㛖泵嚗?
|
||||
|
||||
---
|
||||
|
||||
@@ -234,37 +234,37 @@ $salt = 'your_random_32_chars_salt'; // ⚠️ 永不可变!
|
||||
services:
|
||||
redcap-web:
|
||||
volumes:
|
||||
# 将REDCap源码挂载到容器
|
||||
# 撠<EFBFBD>EDCap皞鞟<EFBFBD><EFBFBD><EFBFBD>蝸<EFBFBD>啣捆<EFBFBD>?
|
||||
- ../redcap15.8.0:/var/www/html/redcap:ro # <20>芾粉<E88ABE><E7B289>蝸
|
||||
|
||||
# 将database.php复制到容器(读写)
|
||||
# 撠<EFBFBD>atabase.php憭滚<EFBFBD><EFBFBD>啣捆<EFBFBD>剁<EFBFBD>霂餃<EFBFBD>嚗?
|
||||
- ./config/database.php:/var/www/html/redcap/database.php
|
||||
```
|
||||
|
||||
**路径说明:**
|
||||
**頝臬<EFBFBD>霂湔<EFBFBD>嚗?*
|
||||
- `../redcap15.8.0`嚗𡁶㮾撖嫣<EFBFBD>`redcap-docker-dev`<EFBFBD>桀<EFBFBD>
|
||||
- 憒<><E68692>皞鞟<E79A9E><E99E9F>典<EFBFBD>隞碶<E99A9E>蝵殷<E89DB5>靽格㺿銝箇<E98A9D>撖寡楝敺<E6A59D><E695BA>`D:/path/to/redcap15.8.0`
|
||||
|
||||
#### 3.2 构建并启动容器
|
||||
#### 3.2 <EFBFBD><EFBFBD>遣撟嗅鍳<EFBFBD>典捆<EFBFBD>?
|
||||
|
||||
```bash
|
||||
# 餈𥕦<E9A488>Docker<65>滨蔭<E6BBA8>桀<EFBFBD>
|
||||
cd redcap-docker-dev
|
||||
|
||||
# 构建REDCap镜像(首次部署需要,约5-10分钟)
|
||||
# <EFBFBD><EFBFBD>遣REDCap<EFBFBD>𨅯<EFBFBD>嚗<EFBFBD><EFBFBD>甈⊿<EFBFBD>蝵脤<EFBFBD>閬<EFBFBD><EFBFBD>蝥?-10<31><30><EFBFBD>嚗?
|
||||
docker-compose build
|
||||
|
||||
# 启动所有服务
|
||||
# <EFBFBD>臬𢆡<EFBFBD><EFBFBD><EFBFBD>㗇<EFBFBD><EFBFBD>?
|
||||
docker-compose up -d
|
||||
|
||||
# 查看容器状态
|
||||
# <EFBFBD>亦<EFBFBD>摰孵膥<EFBFBD>嗆<EFBFBD>?
|
||||
docker-compose ps
|
||||
|
||||
# <20>亦<EFBFBD><E4BAA6>亙<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>仿䔮憸矋<E686B8>
|
||||
docker-compose logs -f redcap-web
|
||||
```
|
||||
|
||||
**预期输出:**
|
||||
**憸<EFBFBD><EFBFBD>颲枏枂嚗?*
|
||||
```
|
||||
NAME IMAGE STATUS PORTS
|
||||
redcap-apache redcap-custom:15.8.0 Up 10 seconds 0.0.0.0:8080->80/tcp
|
||||
@@ -278,7 +278,7 @@ redcap-phpmyadmin phpmyadmin/phpmyadmin Up 10 seconds 0.0.0.0:8081->80/tcp
|
||||
|
||||
1. 霈輸䔮 `http://localhost:8080/install.php`
|
||||
2. <20>厩<EFBFBD><E58EA9>穃紡摰峕<E691B0>摰㕑<E691B0>
|
||||
3. 创建管理员账户
|
||||
3. <EFBFBD>𥕦遣蝞∠<EFBFBD><EFBFBD>䁅揭<EFBFBD>?
|
||||
|
||||
**<EFBFBD>寞<EFBFBD>2嚗𡁜紡<EFBFBD>兄QL<EFBFBD><EFBFBD>辣**
|
||||
|
||||
@@ -286,72 +286,72 @@ redcap-phpmyadmin phpmyadmin/phpmyadmin Up 10 seconds 0.0.0.0:8081->80/tcp
|
||||
# 憒<><E68692><EFBFBD>厩緵<E58EA9>鞟<EFBFBD>redcap_install.sql
|
||||
docker exec -i redcap-mysql mysql -uredcap_user -p'your_password' redcap < redcap_install.sql
|
||||
|
||||
# 重置管理员密码
|
||||
# <EFBFBD>滨蔭蝞∠<EFBFBD><EFBFBD>睃<EFBFBD><EFBFBD>?
|
||||
docker cp scripts/create-redcap-password.php redcap-apache:/tmp/
|
||||
docker exec redcap-apache php /tmp/create-redcap-password.php
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 阶段4:验证部署
|
||||
### <EFBFBD>嗆挾4嚗𡁻<EFBFBD>霂<EFBFBD><EFBFBD>蝵?
|
||||
|
||||
#### 4.1 霈輸䔮REDCap
|
||||
|
||||
**主页:** http://localhost:8080/
|
||||
**銝駁△嚗?* http://localhost:8080/
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 页面正常显示,有REDCap Logo
|
||||
- ✅ CSS/JS加载正常,无404错误
|
||||
- ✅ 登录框可见
|
||||
**憸<EFBFBD><EFBFBD>蝏𤘪<EFBFBD>嚗?*
|
||||
- <EFBFBD>?憿菟𢒰甇<F0A292B0>虜<EFBFBD>曄內嚗峕<E59A97>REDCap Logo
|
||||
- <EFBFBD>?CSS/JS<EFBFBD>㰘蝸甇<EFBFBD>虜嚗峕<EFBFBD>404<EFBFBD>躰秤
|
||||
- <EFBFBD>?<3F>餃<EFBFBD>獢<EFBFBD>虾閫?
|
||||
|
||||
**如果页面样式错乱:** 参见下方"问题排查"章节
|
||||
**憒<EFBFBD><EFBFBD>憿菟𢒰<EFBFBD>瑕<EFBFBD><EFBFBD>嗘僚嚗?* <20><><EFBFBD>銝𧢲䲮"<22>桅<EFBFBD><E6A185>埝䰻"蝡㰘<E89DA1>
|
||||
|
||||
#### 4.2 瘚贝<E7989A><E8B49D>餃<EFBFBD>
|
||||
|
||||
**默认账户:**
|
||||
**暺䁅恕韐行<EFBFBD>嚗?*
|
||||
- Username: `Admin`
|
||||
- Password: `Admin123!`(或你设置的密码)
|
||||
- Password: `Admin123!`嚗<EFBFBD><EFBFBD>雿㰘挽蝵桃<EFBFBD>撖<EFBFBD><EFBFBD>嚗?
|
||||
|
||||
**预期结果:**
|
||||
- ✅ 登录成功,跳转到主页
|
||||
- ✅ 可以看到"Control Center"、"My Projects"等菜单
|
||||
**憸<EFBFBD><EFBFBD>蝏𤘪<EFBFBD>嚗?*
|
||||
- <EFBFBD>?<3F>餃<EFBFBD><E9A483>𣂼<EFBFBD>嚗諹歲頧砍<E9A0A7>銝駁△
|
||||
- <EFBFBD>?<3F>臭誑<E887AD>见<EFBFBD>"Control Center"<EFBFBD>?My Projects"蝑㕑<EFBFBD><EFBFBD>?
|
||||
|
||||
#### 4.3 霈輸䔮phpMyAdmin
|
||||
|
||||
**地址:** http://localhost:8081/
|
||||
**<EFBFBD>啣<EFBFBD>嚗?* http://localhost:8081/
|
||||
|
||||
**登录信息:**
|
||||
**<EFBFBD>餃<EFBFBD>靽⊥<EFBFBD>嚗?*
|
||||
- <20>滚𦛚<E6BB9A>剁<EFBFBD>`redcap-mysql`
|
||||
- <20>冽<EFBFBD><E586BD>㵪<EFBFBD>`redcap_user`
|
||||
- 撖<><E69296>嚗𡄯<E59A97>銝𥮴atabase.php銝剔<E98A9D>撖<EFBFBD><E69296>銝<EFBFBD><E98A9D>湛<EFBFBD>
|
||||
|
||||
**撉諹<E69289><E8ABB9>唳旿摨橒<E691A8>**
|
||||
- ✅ 可以看到`redcap`数据库
|
||||
- ✅ 有100+张表(如`redcap_config`, `redcap_user_information`等)
|
||||
- <EFBFBD>?<3F>臭誑<E887AD>见<EFBFBD>`redcap`<EFBFBD>唳旿摨?
|
||||
- <EFBFBD>?<3F>?00+撘㰘”嚗<E2809D><E59A97>`redcap_config`, `redcap_user_information`蝑㚁<EFBFBD>
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 常见问题与解决方案
|
||||
## <EFBFBD>𩤃<EFBFBD> 撣貉<E692A3><E8B289>桅<EFBFBD>銝舘圾<E88898>單䲮獢?
|
||||
|
||||
### <20>桅<EFBFBD>1嚗鍃RR_CONTENT_DECODING_FAILED
|
||||
|
||||
**现象:**
|
||||
**<EFBFBD>啗情嚗?*
|
||||
- 瘚讛<E7989A><E8AE9B>刻挪<E588BB>娜EDCap<61>嗆𥁒<E59786>辷<EFBFBD>`net::ERR_CONTENT_DECODING_FAILED 200 (OK)`
|
||||
- CSS/JS<4A><53>辣<EFBFBD>㰘蝸憭梯揖
|
||||
|
||||
**根本原因:**
|
||||
Apache的`mod_deflate`模块与PHP的`zlib.output_compression`冲突,导致数据被重复压缩。
|
||||
**<EFBFBD>寞𧋦<EFBFBD>笔<EFBFBD>嚗?*
|
||||
Apache<EFBFBD><EFBFBD>mod_deflate`璅∪<E79285>銝窰HP<48><50>zlib.output_compression`<EFBFBD>脩<EFBFBD>嚗<EFBFBD>紡<EFBFBD>湔㺭<EFBFBD>株◤<EFBFBD>滚<EFBFBD><EFBFBD>讠憬<EFBFBD>?
|
||||
|
||||
**解决方案:**
|
||||
**閫<EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>嚗?*
|
||||
|
||||
✅ **我们的Docker配置已自动修复此问题:**
|
||||
<EFBFBD>?**<2A>睲賑<E79DB2><E8B391>ocker<65>滨蔭撌脰䌊<E884B0>其耨憭齿迨<E9BDBF>桅<EFBFBD>嚗?*
|
||||
|
||||
1. `docker-entrypoint.sh`自动禁用`deflate`模块:
|
||||
1. `docker-entrypoint.sh`<EFBFBD>芸𢆡蝳<EFBFBD>鍂`deflate`璅∪<EFBFBD>嚗?
|
||||
```bash
|
||||
a2dismod -f deflate
|
||||
```
|
||||
|
||||
2. `php.ini`中已关闭压缩:
|
||||
2. `php.ini`銝剖歇<EFBFBD>喲𡡒<EFBFBD>讠憬嚗?
|
||||
```ini
|
||||
zlib.output_compression = Off
|
||||
output_buffering = Off
|
||||
@@ -359,9 +359,9 @@ Apache的`mod_deflate`模块与PHP的`zlib.output_compression`冲突,导致数
|
||||
|
||||
3. `redcap.conf`銝剜釣<E5899C>𦠜<EFBFBD>鈭<EFBFBD>mod_deflate`<EFBFBD>滨蔭
|
||||
|
||||
**如果还有问题:**
|
||||
**憒<EFBFBD><EFBFBD>餈䀹<EFBFBD><EFBFBD>桅<EFBFBD>嚗?*
|
||||
```bash
|
||||
# 进入容器检查
|
||||
# 餈𥕦<E9A488>摰孵膥璉<E886A5><E79289>?
|
||||
docker exec redcap-apache bash -c "apache2ctl -M | grep deflate"
|
||||
# 摨磰砲瘝⊥<E7989D>颲枏枂
|
||||
|
||||
@@ -371,60 +371,60 @@ docker-compose restart redcap-web
|
||||
|
||||
---
|
||||
|
||||
### 问题2:登录失败 - 无法加载响应数据
|
||||
### <EFBFBD>桅<EFBFBD>2嚗𡁶蒈敶訫仃韐?- <20>䭾<EFBFBD><E4ADBE>㰘蝸<E3B098>滚<EFBFBD><E6BB9A>唳旿
|
||||
|
||||
**现象:**
|
||||
**<EFBFBD>啗情嚗?*
|
||||
- 颲枏<E9A2B2><E69E8F>冽<EFBFBD><E586BD>滚<EFBFBD><E6BB9A><EFBFBD><EFBFBD>嚗屸△<E5B1B8>V<EFBFBD>頝唾蓮
|
||||
- Network<72>X踎<EFBCB8>曄內POST霂瑟<E99C82>餈𥪜<E9A488>200嚗䔶<E59A97>"<22>䭾<EFBFBD><E4ADBE>㰘蝸<E3B098>滚<EFBFBD><E6BB9A>唳旿"
|
||||
|
||||
**根本原因:**
|
||||
`database.php`文件末尾有`?>`PHP结束标签和空行,导致CRLF换行符污染HTTP响应。
|
||||
**<EFBFBD>寞𧋦<EFBFBD>笔<EFBFBD>嚗?*
|
||||
`database.php`<EFBFBD><EFBFBD>辣<EFBFBD>怠偏<EFBFBD>头?>`PHP蝏𤘪<E89D8F><F0A498AA><EFBFBD>倌<EFBFBD>𣬚征銵䕘<E98AB5>撖潸稲CRLF<4C>Z<EFBFBD>蝚行情<E8A18C>鐈TTP<54>滚<EFBFBD><E6BB9A>?
|
||||
|
||||
**解决方案:**
|
||||
**閫<EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>嚗?*
|
||||
|
||||
✅ **我们提供的`database.php`模板已修复此问题:**
|
||||
<EFBFBD>?**<2A>睲賑<E79DB2>𣂷<EFBFBD><F0A382B7><EFBFBD>database.php`璅⊥踎撌脖耨憭齿迨<EFBFBD>桅<EFBFBD>嚗?*
|
||||
|
||||
1. ✅ 文件末尾**没有`?>`**
|
||||
2. ✅ 文件末尾**没有空行**
|
||||
3. ✅ `.gitattributes`强制PHP文件使用LF换行符
|
||||
1. <20>?<3F><>辣<EFBFBD>怠偏**瘝⊥<E7989D>`?>`**
|
||||
2. <20>?<3F><>辣<EFBFBD>怠偏**瘝⊥<E7989D>蝛箄<E89D9B>**
|
||||
3. <20>?`.gitattributes`撘箏<EFBFBD>PHP<EFBFBD><EFBFBD>辣雿輻鍂LF<EFBFBD>Z<EFBFBD>蝚?
|
||||
|
||||
**如果自己创建database.php:**
|
||||
**憒<EFBFBD><EFBFBD><EFBFBD>芸楛<EFBFBD>𥕦遣database.php嚗?*
|
||||
```php
|
||||
<?php
|
||||
// 数据库配置...
|
||||
// <EFBFBD>唳旿摨㯄<EFBFBD>蝵?..
|
||||
|
||||
$hostname = 'redcap-mysql';
|
||||
$db = 'redcap';
|
||||
// ...
|
||||
|
||||
// ❌ 错误写法:
|
||||
// <EFBFBD>?<3F>躰秤<E8BAB0>蹱<EFBFBD>嚗?
|
||||
?>
|
||||
|
||||
|
||||
// ✅ 正确写法:文件末尾只有注释的结束符,没有?>
|
||||
// <EFBFBD>?甇<>&<EFBFBD>蹱<EFBFBD>嚗𡁏<E59A97>隞嗆錰撠曉蘨<E69B89>㗇釣<E39787>羓<EFBFBD>蝏𤘪<E89D8F>蝚佗<E89D9A>瘝⊥<E7989D>?>
|
||||
```
|
||||
|
||||
**验证方法:**
|
||||
**撉諹<EFBFBD><EFBFBD>寞<EFBFBD>嚗?*
|
||||
```bash
|
||||
# 检查文件末尾(十六进制)
|
||||
# 璉<><E79289>交<EFBFBD>隞嗆錰撠橘<E692A0><E6A998><EFBFBD><EFBFBD>餈𥕦<E9A488>嚗?
|
||||
docker exec redcap-apache bash -c "tail -c 50 /var/www/html/redcap/database.php | xxd"
|
||||
|
||||
# 应该看到:
|
||||
# 00000030: 2a2f 0a # */ 和换行符,没有 ?> 和多余的0d0a
|
||||
# 摨磰砲<EFBFBD>见<EFBFBD>嚗?
|
||||
# 00000030: 2a2f 0a # */ <EFBFBD>峕揢銵𣬚泵嚗峕瓷<EFBFBD>??> <20><><EFBFBD>雿嗵<E99BBF>0d0a
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### <20>桅<EFBFBD>3嚗鋳ase URL<52>滨蔭<E6BBA8>躰秤
|
||||
|
||||
**现象:**
|
||||
**<EFBFBD>啗情嚗?*
|
||||
- CSS/JS<4A><53>辣頝臬<E9A09D><E887AC>躰秤嚗䔶<E59A97>憒<EFBFBD><E68692>`http://localhost:8080/redcap/redcap_v15.8.0/Resources/...`
|
||||
- 摰鮋<E691B0>頝臬<E9A09D>摨磰砲<E7A3B0>荔<EFBFBD>`http://localhost:8080/redcap_v15.8.0/Resources/...`
|
||||
|
||||
**根本原因:**
|
||||
REDCap数据库中的`redcap_base_url`配置与Apache的`DocumentRoot`不匹配。
|
||||
**<EFBFBD>寞𧋦<EFBFBD>笔<EFBFBD>嚗?*
|
||||
REDCap<EFBFBD>唳旿摨㮖葉<EFBFBD><EFBFBD>redcap_base_url`<EFBFBD>滨蔭銝垾pache<EFBFBD><EFBFBD>DocumentRoot`銝滚龪<EFBFBD>溻<EFBFBD>?
|
||||
|
||||
**解决方案:**
|
||||
**閫<EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>嚗?*
|
||||
|
||||
```sql
|
||||
-- 餈墧𦻖<E5A2A7>衽ySQL摰孵膥
|
||||
@@ -444,30 +444,30 @@ WHERE field_name = 'redcap_base_url';
|
||||
-- WHERE field_name = 'redcap_base_url';
|
||||
```
|
||||
|
||||
**预防措施:**
|
||||
- 安装时确保Base URL与访问地址一致
|
||||
- 修改后重启浏览器或清除缓存
|
||||
**憸<EFBFBD>俈<EFBFBD>芣鴌嚗?*
|
||||
- 摰㕑<E691B0><E39591>嗥&靽𨈚ase URL銝舘挪<E88898>桀𧑐<E6A180><F0A79190>銝<EFBFBD><E98A9D>?
|
||||
- 靽格㺿<E6A0BC>𡡞<EFBFBD><F0A1A19E>舀<EFBFBD>閫<EFBFBD>膥<EFBFBD>𡝗<EFBFBD><F0A19D97>斤<EFBFBD>摮?
|
||||
|
||||
---
|
||||
|
||||
### 问题4:容器启动失败
|
||||
### <EFBFBD>桅<EFBFBD>4嚗𡁜捆<EFBFBD>典鍳<EFBFBD>典仃韐?
|
||||
|
||||
**撣貉<E692A3><E8B289>笔<EFBFBD>銝舘圾<E88898>單䲮獢<E4B2AE><E78DA2>**
|
||||
|
||||
**4.1 端口被占用**
|
||||
**4.1 蝡臬藁鋡怠<EFBFBD><EFBFBD>?*
|
||||
```bash
|
||||
# 检查端口占用
|
||||
# 璉<><E79289>亦垢<E4BAA6><E59EA2><EFBFBD><EFBFBD>?
|
||||
netstat -ano | findstr ":8080" # Windows
|
||||
lsof -i :8080 # Linux/Mac
|
||||
|
||||
# 閫<><E996AB><EFBFBD>寞<EFBFBD>1嚗帋耨<E5B88B>鉅ocker-compose.yml蝡臬藁<E887AC>惩<EFBFBD>
|
||||
ports:
|
||||
- "8090:80" # 改为8090或其他端口
|
||||
- "8090:80" # <EFBFBD>嫣蛹8090<EFBFBD>硋<EFBFBD>隞𣇉垢<EFBFBD>?
|
||||
|
||||
# 閫<><E996AB><EFBFBD>寞<EFBFBD>2嚗𡁜<E59A97>甇W<E79487><EFBCB7>函垢<E587BD><E59EA2><EFBFBD>蝔见<E89D94>
|
||||
```
|
||||
|
||||
**4.2 卷挂载路径错误**
|
||||
**4.2 <EFBFBD>瑟<EFBFBD>頧質楝敺<EFBFBD><EFBFBD>霂?*
|
||||
```bash
|
||||
# 璉<><E79289>充EDCap皞鞟<E79A9E>頝臬<E9A09D><E887AC>臬炏摮睃銁
|
||||
ls -la ../redcap15.8.0
|
||||
@@ -477,7 +477,7 @@ volumes:
|
||||
- /absolute/path/to/redcap15.8.0:/var/www/html/redcap:ro
|
||||
```
|
||||
|
||||
**4.3 权限问题(Linux)**
|
||||
**4.3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>桅<EFBFBD>嚗𡿨inux嚗?*
|
||||
```bash
|
||||
# 蝏嗘<E89D8F>Docker<65>桀<EFBFBD><E6A180><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sudo chown -R $(whoami):$(whoami) redcap-docker-dev/
|
||||
@@ -488,14 +488,14 @@ chmod +x docker-entrypoint.sh
|
||||
|
||||
### <20>桅<EFBFBD>5嚗鐝ySQL餈墧𦻖憭梯揖
|
||||
|
||||
**现象:**
|
||||
**<EFBFBD>啗情嚗?*
|
||||
- REDCap<61>曄內"Database connection failed"
|
||||
- <20>亙<EFBFBD>銝剜<E98A9D>MySQL餈墧𦻖<E5A2A7>躰秤
|
||||
|
||||
**排查步骤:**
|
||||
**<EFBFBD>埝䰻甇仿炊嚗?*
|
||||
|
||||
```bash
|
||||
# 1. 检查MySQL容器状态
|
||||
# 1. 璉<EFBFBD><EFBFBD>仗ySQL摰孵膥<EFBFBD>嗆<EFBFBD>?
|
||||
docker-compose ps redcap-mysql
|
||||
|
||||
# 2. <20>亦<EFBFBD>MySQL<51>亙<EFBFBD>
|
||||
@@ -508,40 +508,40 @@ docker exec -it redcap-mysql mysql -uredcap_user -p'your_password'
|
||||
docker exec redcap-apache cat /var/www/html/redcap/database.php | grep hostname
|
||||
```
|
||||
|
||||
**常见错误:**
|
||||
- `$hostname`写成了`localhost`(应该是`redcap-mysql`)
|
||||
**撣貉<EFBFBD><EFBFBD>躰秤嚗?*
|
||||
- `$hostname`<EFBFBD>蹱<EFBFBD>鈭<EFBFBD>localhost`嚗<EFBFBD><EFBFBD>霂交糓`redcap-mysql`嚗?
|
||||
- 撖<><E69296>銝滚龪<E6BB9A>㵪<EFBFBD>銝𥳾.env`<60>飜docker-compose.yml`銝滢<EFBFBD><EFBFBD>湛<EFBFBD>
|
||||
- MySQL摰孵膥<E5ADB5>芸<EFBFBD><E88AB8>典鍳<E585B8>剁<EFBFBD>蝑匧<E89D91>30蝘鍦<E89D98>霂𤏪<E99C82>
|
||||
|
||||
---
|
||||
|
||||
## 🔄 不同环境的配置差异
|
||||
## <EFBFBD><EFBFBD> 銝滚<E98A9D><E6BB9A>臬<EFBFBD><E887AC><EFBFBD><EFBFBD>蝵桀榆撘?
|
||||
|
||||
### 本地开发环境
|
||||
### <EFBFBD>砍𧑐撘<EFBFBD><EFBFBD>𤑳㴓憓?
|
||||
|
||||
**特点:**
|
||||
**<EFBFBD>寧<EFBFBD>嚗?*
|
||||
- 雿輻鍂Docker MySQL摰孵膥
|
||||
- <20><>鉄phpMyAdmin
|
||||
- 蝡臬藁<E887AC>惩<EFBFBD><E683A9>追ocalhost
|
||||
- 开发调试模式
|
||||
- 撘<><E69298>𤏸<EFBFBD>霂閙芋撘?
|
||||
|
||||
**需要修改的配置:**
|
||||
1. `docker-compose.yml`:使用默认配置
|
||||
**<EFBFBD><EFBFBD>閬<EFBFBD>耨<EFBFBD>寧<EFBFBD><EFBFBD>滨蔭嚗?*
|
||||
1. `docker-compose.yml`嚗帋蝙<EFBFBD>券<EFBFBD>霈日<EFBFBD>蝵?
|
||||
2. `database.php`嚗䫤$hostname = 'redcap-mysql'`
|
||||
|
||||
---
|
||||
|
||||
### <20>輸<EFBFBD>鈭䫿CS<43>煺漣<E785BA>臬<EFBFBD>
|
||||
|
||||
**特点:**
|
||||
**<EFBFBD>寧<EFBFBD>嚗?*
|
||||
- 雿輻鍂<E8BCBB>輸<EFBFBD>鈭駵DS MySQL
|
||||
- 不包含phpMyAdmin(安全考虑)
|
||||
- 銝滚<E98A9D><E6BB9A>厚hpMyAdmin嚗<6E><E59A97><EFBFBD>刻<EFBFBD><E588BB><EFBFBD>嚗?
|
||||
- 雿輻鍂<E8BCBB>笔<EFBFBD>+SSL霂<4C>髡
|
||||
- <20>煺漣隡睃<E99AA1><E79D83>滨蔭
|
||||
|
||||
**需要修改的配置:**
|
||||
**<EFBFBD><EFBFBD>閬<EFBFBD>耨<EFBFBD>寧<EFBFBD><EFBFBD>滨蔭嚗?*
|
||||
|
||||
1. **使用`docker-compose.prod.yml`:**
|
||||
1. **雿輻鍂`docker-compose.prod.yml`嚗?*
|
||||
```yaml
|
||||
services:
|
||||
redcap-web:
|
||||
@@ -551,36 +551,36 @@ docker exec redcap-apache cat /var/www/html/redcap/database.php | grep hostname
|
||||
# 蝘駁膄redcap-mysql<71>丯edcap-phpmyadmin<69>滚𦛚
|
||||
```
|
||||
|
||||
2. **修改`database.php`:**
|
||||
2. **靽格㺿`database.php`嚗?*
|
||||
```php
|
||||
$hostname = 'rm-xxx.mysql.rds.aliyuncs.com'; // RDS<44><53><EFBFBD><EFBFBD>啣<EFBFBD>
|
||||
$db = 'redcap_prod';
|
||||
$username = 'redcap_admin';
|
||||
$password = 'your_strong_password_32_chars_min'; // 强密码
|
||||
$password = 'your_strong_password_32_chars_min'; // 撘箏<EFBFBD><EFBFBD>?
|
||||
$salt = 'your_random_salt_never_change'; // 瘞訾<E7989E><E8A8BE>臬<EFBFBD>
|
||||
|
||||
// 启用SSL连接(可选但推荐)
|
||||
// <EFBFBD>舐鍂SSL餈墧𦻖嚗<EFBFBD>虾<EFBFBD>劐<EFBFBD><EFBFBD>刻<EFBFBD>嚗?
|
||||
$db_ssl_ca = '/path/to/rds-ca.pem';
|
||||
$db_ssl_verify_server_cert = true;
|
||||
```
|
||||
|
||||
3. **修改`redcap.conf`:**
|
||||
3. **靽格㺿`redcap.conf`嚗?*
|
||||
```apache
|
||||
ServerName redcap.yourdomain.com
|
||||
```
|
||||
|
||||
4. **构建并推送镜像到ACR:**
|
||||
4. **<EFBFBD><EFBFBD>遣撟嗆綫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>誩<EFBFBD>ACR嚗?*
|
||||
```bash
|
||||
# 登录阿里云容器镜像服务
|
||||
# <EFBFBD>餃<EFBFBD><EFBFBD>輸<EFBFBD>鈭穃捆<EFBFBD>券<EFBFBD><EFBFBD>𤩺<EFBFBD><EFBFBD>?
|
||||
docker login --username=your_username registry.cn-hangzhou.aliyuncs.com
|
||||
|
||||
# <20><>遣<EFBFBD>𨅯<EFBFBD>
|
||||
docker build -f Dockerfile.redcap -t redcap-custom:15.8.0 .
|
||||
|
||||
# 打标签
|
||||
# <EFBFBD>𤘪<EFBFBD>蝑?
|
||||
docker tag redcap-custom:15.8.0 registry.cn-hangzhou.aliyuncs.com/your-namespace/redcap:15.8.0
|
||||
|
||||
# 推送
|
||||
# <EFBFBD>券<EFBFBD>?
|
||||
docker push registry.cn-hangzhou.aliyuncs.com/your-namespace/redcap:15.8.0
|
||||
```
|
||||
|
||||
@@ -595,19 +595,19 @@ docker exec redcap-apache cat /var/www/html/redcap/database.php | grep hostname
|
||||
|
||||
---
|
||||
|
||||
### 医院私有化部署
|
||||
### <EFBFBD>駁堺蝘<EFBFBD><EFBFBD><EFBFBD>㚚<EFBFBD>蝵?
|
||||
|
||||
**特点:**
|
||||
**<EFBFBD>寧<EFBFBD>嚗?*
|
||||
- <20><><EFBFBD><EFBFBD>臬<EFBFBD>嚗峕<E59A97>憭𣇉<E686AD>霈輸䔮
|
||||
- <20>航<EFBFBD><E888AA>䭾<EFBFBD>雿輻鍂Docker Hub
|
||||
- <20><>閬<EFBFBD>㺭<EFBFBD>桀<EFBFBD><E6A180>其<EFBFBD><E585B6><EFBFBD><EFBFBD>
|
||||
- <20>航<EFBFBD><E888AA><EFBFBD>閬<EFBFBD><E996AC><EFBFBD>𣂼龫<F0A382BC>%IS蝟餌<E89D9F>
|
||||
|
||||
**部署步骤:**
|
||||
**<EFBFBD>函蔡甇仿炊嚗?*
|
||||
|
||||
1. **离线准备Docker镜像:**
|
||||
1. **蝳餌瑪<EFBFBD><EFBFBD><EFBFBD>Docker<EFBFBD>𨅯<EFBFBD>嚗?*
|
||||
```bash
|
||||
# 在有网络的环境导出镜像
|
||||
# <EFBFBD>冽<EFBFBD>蝵𤑳<EFBFBD><EFBFBD><EFBFBD>㴓憓<EFBFBD>紡<EFBFBD>粹<EFBFBD><EFBFBD>?
|
||||
docker save redcap-custom:15.8.0 mysql:8.0 phpmyadmin/phpmyadmin:latest > redcap-images.tar
|
||||
|
||||
# 隡㰘<E99AA1><E3B098>啣龫<E595A3>X<EFBFBD><EFBCB8>∪膥
|
||||
@@ -618,10 +618,10 @@ docker exec redcap-apache cat /var/www/html/redcap/database.php | grep hostname
|
||||
```
|
||||
|
||||
2. **<2A>滨蔭<E6BBA8><E894AD><EFBFBD><EFBFBD>唳旿摨橒<E691A8>**
|
||||
- 使用医院自己的MySQL服务器
|
||||
- 或部署独立的MySQL容器(数据目录挂载到医院存储)
|
||||
- 雿輻鍂<EFBFBD>駁堺<EFBFBD>芸楛<EFBFBD><EFBFBD>ySQL<EFBFBD>滚𦛚<EFBFBD>?
|
||||
- <EFBFBD>㚚<EFBFBD>蝵脩𡠺蝡讠<EFBFBD>MySQL摰孵膥嚗<EFBFBD>㺭<EFBFBD>桃𤌍敶閙<EFBFBD>頧賢<EFBFBD><EFBFBD>駁堺摮睃<EFBFBD>嚗?
|
||||
|
||||
3. **数据安全配置:**
|
||||
3. **<EFBFBD>唳旿摰匧<EFBFBD><EFBFBD>滨蔭嚗?*
|
||||
- <20>舐鍂<E88890>唳旿摨廍SL餈墧𦻖
|
||||
- <20>滨蔭摰𡁏<E691B0>憭<EFBFBD>遢
|
||||
- <20>亙<EFBFBD>摰∟恣
|
||||
@@ -629,45 +629,45 @@ docker exec redcap-apache cat /var/www/html/redcap/database.php | grep hostname
|
||||
|
||||
---
|
||||
|
||||
## 📋 部署检查清单
|
||||
## <EFBFBD><EFBFBD> <20>函蔡璉<E894A1><E79289>交<EFBFBD><E4BAA4>?
|
||||
|
||||
### 部署前检查
|
||||
### <EFBFBD>函蔡<EFBFBD>齿<EFBFBD><EFBFBD>?
|
||||
|
||||
- [ ] Docker已安装并运行(`docker --version`)
|
||||
- [ ] Docker Compose已安装(`docker-compose --version`)
|
||||
- [ ] Docker撌脣<EFBFBD>鋆<EFBFBD>僎餈鞱<EFBFBD>嚗Ǒdocker --version`嚗?
|
||||
- [ ] Docker Compose撌脣<EFBFBD>鋆<EFBFBD><EFBFBD>`docker-compose --version`嚗?
|
||||
- [ ] REDCap皞鞟<E79A9E>撌脖<E6928C>頧賢僎閫<E5838E><E996AB>
|
||||
- [ ] 撌脣<E6928C><E884A3>嗆<EFBFBD><E59786><EFBFBD>ocker<65>滨蔭<E6BBA8><E894AD>辣
|
||||
- [ ] `database.php`已根据环境修改
|
||||
- [ ] `database.php`末尾**没有`?>`和空行**
|
||||
- [ ] `database.php`撌脫覔<EFBFBD>桃㴓憓<EFBFBD>耨<EFBFBD>?
|
||||
- [ ] `database.php`<EFBFBD>怠偏**瘝⊥<E7989D>`?>`<EFBFBD>𣬚征銵?*
|
||||
- [ ] `.env`<EFBFBD><EFBFBD>辣撌脣<EFBFBD>撱綽<EFBFBD>憒<EFBFBD>蝙<EFBFBD>剁<EFBFBD>
|
||||
- [ ] 端口无冲突(8080, 3306, 8081)
|
||||
- [ ] 蝡臬藁<E887AC>惩<EFBFBD>蝒<EFBFBD><E89D92>8080, 3306, 8081嚗?
|
||||
|
||||
### 部署后验证
|
||||
### <EFBFBD>函蔡<EFBFBD>𡡞<EFBFBD>霂?
|
||||
|
||||
- [ ] 容器全部启动(`docker-compose ps`)
|
||||
- [ ] 可以访问REDCap首页(http://localhost:8080/)
|
||||
- [ ] 摰孵膥<E5ADB5>券<EFBFBD><E588B8>臬𢆡嚗Ǒdocker-compose ps`嚗?
|
||||
- [ ] <20>臭誑霈輸䔮REDCap擐㚚△嚗áttp://localhost:8080/嚗?
|
||||
- [ ] 憿菟𢒰<E88F9F>瑕<EFBFBD>甇<EFBFBD>虜嚗峕<E59A97>404<30>躰秤
|
||||
- [ ] <20>臭誑<E887AD>𣂼<EFBFBD><F0A382BC>餃<EFBFBD>
|
||||
- [ ] phpMyAdmin可访问(http://localhost:8081/)
|
||||
- [ ] 数据库表已创建(100+张表)
|
||||
- [ ] phpMyAdmin<EFBFBD>航挪<EFBFBD>殷<EFBFBD>http://localhost:8081/嚗?
|
||||
- [ ] <20>唳旿摨栞”撌脣<E6928C>撱綽<E692B1>100+撘㰘”嚗?
|
||||
- [ ] <20>臭誑<E887AD>𥕦遣憿寧𤌍
|
||||
- [ ] <20>臭誑<E887AD>𥕦遣銵典<E98AB5>
|
||||
- [ ] <20>唳旿<E594B3>臭誑甇<E8AA91>虜靽嘥<E99DBD>
|
||||
|
||||
### 生产环境额外检查
|
||||
### <EFBFBD>煺漣<EFBFBD>臬<EFBFBD>憸嘥<EFBFBD>璉<EFBFBD><EFBFBD>?
|
||||
|
||||
- [ ] 使用强密码(32+字符)
|
||||
- [ ] Salt值已设置且备份
|
||||
- [ ] 雿輻鍂撘箏<E69298><E7AE8F><EFBFBD><EFBFBD>32+摮㛖泵嚗?
|
||||
- [ ] Salt<EFBFBD>澆歇霈曄蔭銝𥪜<EFBFBD>隞?
|
||||
- [ ] 雿輻鍂HTTPS + SSL霂<4C>髡
|
||||
- [ ] <20>脩<EFBFBD>憓躰<E68693><E8BAB0>坔歇<E59D94>滨蔭
|
||||
- [ ] <20>唳旿摨枏<E691A8><E69E8F>笔<EFBFBD>隞賢歇<E8B3A2>滨蔭
|
||||
- [ ] 日志监控已配置
|
||||
- [ ] 域名DNS已解析
|
||||
- [ ] <20>亙<EFBFBD><E4BA99>烐綉撌脤<E6928C>蝵?
|
||||
- [ ] <20>笔<EFBFBD>DNS撌脰圾<E884B0>?
|
||||
- [ ] <20>桐辣<E6A190>滚𦛚撌脤<E6928C>蝵殷<E89DB5><E6AEB7>舫<EFBFBD>㚁<EFBFBD>
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ 日常维护命令
|
||||
## <EFBFBD><EFBFBD>儭?<3F>亙虜蝏湔擪<E6B994>賭誘
|
||||
|
||||
### 摰孵膥蝞∠<E89D9E>
|
||||
|
||||
@@ -681,10 +681,10 @@ docker-compose stop
|
||||
# <20>滚鍳<E6BB9A>滚𦛚
|
||||
docker-compose restart
|
||||
|
||||
# 停止并删除容器(数据保留)
|
||||
# <EFBFBD>𨀣迫撟嗅<EFBFBD><EFBFBD>文捆<EFBFBD>剁<EFBFBD><EFBFBD>唳旿靽萘<EFBFBD>嚗?
|
||||
docker-compose down
|
||||
|
||||
# 停止并删除容器+数据(危险!)
|
||||
# <EFBFBD>𨀣迫撟嗅<EFBFBD><EFBFBD>文捆<EFBFBD>?<3F>唳旿嚗<E697BF>暒<EFBFBD>抬<EFBFBD>嚗?
|
||||
docker-compose down -v
|
||||
|
||||
# <20>亦<EFBFBD><E4BAA6>亙<EFBFBD>
|
||||
@@ -696,13 +696,13 @@ docker exec -it redcap-apache bash
|
||||
docker exec -it redcap-mysql bash
|
||||
```
|
||||
|
||||
### 备份与恢复
|
||||
### 憭<EFBFBD>遢銝擧<EFBFBD>憭?
|
||||
|
||||
```bash
|
||||
# 备份数据库
|
||||
# 憭<>遢<EFBFBD>唳旿摨?
|
||||
docker exec redcap-mysql mysqldump -uredcap_user -p'password' redcap > backup_$(date +%Y%m%d).sql
|
||||
|
||||
# 恢复数据库
|
||||
# <EFBFBD>W<EFBFBD><EFBFBD>唳旿摨?
|
||||
docker exec -i redcap-mysql mysql -uredcap_user -p'password' redcap < backup_20260102.sql
|
||||
|
||||
# 憭<>遢edocs<63>龨emp<6D>桀<EFBFBD>
|
||||
@@ -710,10 +710,10 @@ docker cp redcap-apache:/var/www/html/redcap/edocs ./backup_edocs
|
||||
docker cp redcap-apache:/var/www/html/redcap/temp ./backup_temp
|
||||
```
|
||||
|
||||
### 重置管理员密码
|
||||
### <EFBFBD>滨蔭蝞∠<EFBFBD><EFBFBD>睃<EFBFBD><EFBFBD>?
|
||||
|
||||
```bash
|
||||
# 使用我们提供的脚本
|
||||
# 雿輻鍂<E8BCBB>睲賑<E79DB2>𣂷<EFBFBD><F0A382B7><EFBFBD><EFBFBD><EFBFBD>?
|
||||
docker cp scripts/create-redcap-password.php redcap-apache:/tmp/
|
||||
docker exec redcap-apache php /tmp/create-redcap-password.php
|
||||
|
||||
@@ -725,25 +725,25 @@ docker exec redcap-apache php /tmp/create-redcap-password.php
|
||||
## <20><> <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
|
||||
|
||||
- **<2A>桅<EFBFBD><E6A185>埝䰻霂西圾**嚗靀13-<2D>函蔡<E587BD>桅<EFBFBD><E6A185>埝䰻<E59F9D>见<EFBFBD>.md](./13-<2D>函蔡<E587BD>桅<EFBFBD><E6A185>埝䰻<E59F9D>见<EFBFBD>.md)
|
||||
- **API开发**:[../03-API对接与开发/30-REDCap_API使用指南.md](../03-API对接与开发/30-REDCap_API使用指南.md)
|
||||
- **系统配置**:[../02-系统配置与运维/20-REDCap系统配置手册.md](../02-系统配置与运维/20-REDCap系统配置手册.md)
|
||||
- **API撘<EFBFBD><EFBFBD>?*嚗靀../03-API撖寞𦻖銝𤾸<EFBFBD><EFBFBD>?30-REDCap_API雿輻鍂<EFBFBD><EFBFBD><EFBFBD>.md](../03-API撖寞𦻖銝𤾸<EFBFBD><EFBFBD>?30-REDCap_API雿輻鍂<EFBFBD><EFBFBD><EFBFBD>.md)
|
||||
- **蝟餌<E89D9F><E9A48C>滨蔭**嚗靀../02-蝟餌<E89D9F><E9A48C>滨蔭銝舘<E98A9D>蝏?20-REDCap蝟餌<E89D9F><E9A48C>滨蔭<E6BBA8>见<EFBFBD>.md](../02-蝟餌<E89D9F><E9A48C>滨蔭銝舘<E98A9D>蝏?20-REDCap蝟餌<E89D9F><E9A48C>滨蔭<E6BBA8>见<EFBFBD>.md)
|
||||
- **REDCap摰䀹䲮<E480B9><E4B2AE>﹝**嚗冴ttps://projectredcap.org/
|
||||
|
||||
---
|
||||
|
||||
## ✅ 总结
|
||||
## <EFBFBD>?<3F>餌<EFBFBD>
|
||||
|
||||
**<EFBFBD>睲賑<EFBFBD>𣂷<EFBFBD><EFBFBD><EFBFBD>ocker<EFBFBD>滨蔭<EFBFBD><EFBFBD>辣蝏讛<EFBFBD>摰墧<EFBFBD>撉諹<EFBFBD>嚗<EFBFBD>歇閫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>匧虜閫<EFBFBD>䔮憸矋<EFBFBD>**
|
||||
|
||||
1. ✅ **Gzip压缩冲突** → 自动禁用deflate模块
|
||||
2. ✅ **CRLF污染** → database.php无`?>`,.gitattributes规范换行符
|
||||
3. ✅ **Base URL错误** → 文档明确说明配置方法
|
||||
4. ✅ **跨平台兼容** → Windows/Linux/Mac均可使用
|
||||
1. <20>?**Gzip<EFBFBD>讠憬<EFBFBD>脩<EFBFBD>** <20>?<3F>芸𢆡蝳<F0A286A1>鍂deflate璅∪<EFBFBD>
|
||||
2. <20>?**CRLF瘙⊥<EFBFBD>** <EFBFBD>?database.php<EFBFBD>鮏?>`嚗?gitattributes閫<EFBFBD><EFBFBD><EFBFBD>Z<EFBFBD>蝚?
|
||||
3. <EFBFBD>?**Base URL<EFBFBD>躰秤** <20>?<3F><>﹝<EFBFBD>𡒊&霂湔<E99C82><E6B994>滨蔭<E6BBA8>寞<EFBFBD>
|
||||
4. <EFBFBD>?**頝典像<E585B8>啣<EFBFBD>摰?* <20>?Windows/Linux/Mac<EFBFBD><EFBFBD>虾雿輻鍂
|
||||
|
||||
**<EFBFBD>臬<EFBFBD><EFBFBD>冽<EFBFBD>改<EFBFBD>**
|
||||
- 🔄 **Dockerfile.redcap**:100%可复用,无需任何修改
|
||||
- 🔄 **docker-entrypoint.sh**:100%可复用
|
||||
- 🔄 **php.ini**:100%可复用
|
||||
- <EFBFBD><EFBFBD> **Dockerfile.redcap**嚗?00%<25>臬<EFBFBD><E887AC>剁<EFBFBD><E58981>𣳇<EFBFBD>隞颱<E99A9E>靽格㺿
|
||||
- <EFBFBD><EFBFBD> **docker-entrypoint.sh**嚗?00%<25>臬<EFBFBD><E887AC>?
|
||||
- <EFBFBD><EFBFBD> **php.ini**嚗?00%<25>臬<EFBFBD><E887AC>?
|
||||
- <20>𩤃<EFBFBD> **docker-compose.yml**嚗𡁻<E59A97><F0A181BB>寞旿<E5AF9E>臬<EFBFBD>靚<EFBFBD>㟲蝡臬藁<E887AC><E89781>㭘頝臬<E9A09D>
|
||||
- <20>𩤃<EFBFBD> **database.php**嚗𡁜<E59A97>憿餅覔<E9A485>桃㴓憓<E3B493><E68693><EFBFBD>嗆㺭<E59786>桀<EFBFBD>餈墧𦻖靽⊥<E99DBD>
|
||||
|
||||
@@ -754,7 +754,8 @@ docker exec redcap-apache php /tmp/create-redcap-password.php
|
||||
|
||||
---
|
||||
|
||||
**有问题?** 查看 [13-部署问题排查手册.md](./13-部署问题排查手册.md) 或提Issue!
|
||||
**<EFBFBD>厰䔮憸矋<EFBFBD>** <20>亦<EFBFBD> [13-<2D>函蔡<E587BD>桅<EFBFBD><E6A185>埝䰻<E59F9D>见<EFBFBD>.md](./13-<2D>函蔡<E587BD>桅<EFBFBD><E6A185>埝䰻<E59F9D>见<EFBFBD>.md) <EFBFBD>𡝗<EFBFBD>Issue嚗?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user