Files
AIclinicalresearch/docs/03-业务模块/Redcap/04-参考资料/03-REDCap本地Docker开发环境部署方案_旧版.md
HaHafeng 1b53ab9d52 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%)
2026-01-14 19:15:01 +08:00

1518 lines
46 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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.
# REDCap Docker<65>函蔡<E587BD><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D><EFBFBD>扳沲<E689B3><E6B2B2><EFBFBD>
> **<2A><><EFBFBD><EFB99D>𧋦嚗?* v2.0
> **<2A>𥕦遣<F0A595A6><EFBFBD>嚗?* 2026-01-01
> **<2A><><EFBFBD>擧凒<E693A7><EFBFBD>** 2026-01-01嚗<31><EFBFBD>圃CS<43>唾悅<E594BE><EFBFBD>靽株恥嚗?
> **<2A><><EFBFBD><EFBFBD>嚗?* <20><>紡IIT Manager Agent憿寧𤌍<E5AFA7><F0A48C8D>EDCap Docker<65><EFBFBD><E887AC>剖遣嚗<E981A3><E59A97><EFBFBD>?<3F>煺漣<E785BA><EFBFBD><EFBFBD><E98A9D><EFBFBD>
> **<2A><><EFBFBD>園𡢿嚗?* 25<32><35><EFBFBD>
> **<2A><EFBFBD><E6BBA9><EFBFBD>** 潃鐥<E6BD83>潃鐥<E6BD83>潃?**Day 2撘<32><E69298><EFBFBD><EFBFBD>粉**
> **憸<><EFBFBD>函蔡<E587BD>園𡢿嚗?* 1.5撠𤩺𧒄
> **<2A><EFBFBD><E59786><EFBFBD>靘脲旿嚗?* [REDCap<61>煺漣<E785BA><EFBFBD><E887AC>函蔡嚗鍃CS vs SAE瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>](./REDCap%20<32>煺漣<E785BA><EFBFBD><E887AC>函蔡嚗鍃CS%20vs%20SAE%20瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>.md)
---
## <20><> <20><>﹝霂湔<E99C82>
### <20><EFBFBD><E8A9A8><EFBFBD>艙嚗?*<2A>砍𧑐撘<F0A79190><E69298>穃朖<E7A983>煺漣<E785BA><EFBFBD>** <20>
<EFBFBD><EFBFBD><EFBFBD>抅鈭穉IT Manager Agent憿寧𤌍<E5AFA7>?*瘛瑕<E7989B><E79195><EFBFBD><E59786><EFBFBD>**嚗屸<E59A97><E5B1B8>求ocker摰孵膥<E5ADB5><EFBFBD>蝵涮EDCap嚗<70><E59A97><EFBFBD><EFBFBD>
- <20>?**撘<><E69298>𤑳㴓憓?= 瘚贝<E7989A><E8B49D><EFBFBD> = <20>煺漣<E785BA><EFBFBD>**嚗<><E59A97><EFBFBD><EFBFBD><EFBFBD>宏嚗?- <20>?**Docker<65>滨蔭<E6BBA8>舐凒<E88890>亦鍂鈭𡡞燵<F0A1A19E><EFBFBD>ECS<43>煺漣<E785BA>函蔡**
- <20>?**Docker<65>滨蔭<E6BBA8>舐凒<E88890>亦鍂鈭𤾸龫<F0A4BEB8><EFBFBD>蝵𤑳<E89DB5><F0A491B3><EFBFBD><E58CA7>函蔡**
- <20>?**2鈭箏𣪧<E7AE8F>笔虾蝏湔擪<E6B994><E693AA><EFBFBD><EFBFBD>閙沲<E99699>?*
### <20><EFBFBD>摰帋<E691B0>
```yaml
<EFBFBD>唳旿撟喲𢒰 (Data Layer) - REDCap<61>函蔡蝑𣇉裦嚗?<3F><EFBFBD> <20>砍𧑐撘<F0A79190><E69298>𡢅<EFBFBD>Docker Compose (Windows/Mac)
<EFBFBD><EFBFBD> <20><EFBFBD>鈭烐<E988AD>霂?<3F>煺漣嚗鍃CS + Docker + RDS MySQL
<EFBFBD><EFBFBD> <20>駁堺蝘<E5A0BA><E89D98><EFBFBD><EFBFBD><E59094>滚𦛚<E6BB9A>?+ Docker + <20>砍𧑐MySQL
<EFBFBD><EFBFBD>撟喲𢒰 (AI Agent Layer) - <20>函蔡蝑𣇉裦嚗?<3F><EFBFBD> Node.js<6A>𡒊垢嚗𡁻燵<F0A181BB><EFBFBD>SAE (Serverless)
<EFBFBD><EFBFBD> Python敺格<E695BA><E6A0BC><EFBFBD><E288B4><EFBFBD>鈭騌AE
<EFBFBD><EFBFBD> React<63>滨垢嚗𡁻燵<F0A181BB><EFBFBD>SAE
銝箔<EFBFBD>銋㇌EDCap<EFBFBD>汞CS<EFBFBD><EFBFBD><EFBFBD>特AE嚗?<3F>?REDCap<61><EFBFBD>銝?<3F>游𦶢<E6B8B8><EFBFBD>?銝漤<E98A9D><E6BCA4><EFBFBD>Serverless嚗? 1. Cron靘肽<E99D98><EFBFBD><E59A97>頝喃遙<E59683><EFBFBD>
2. Session蝎䀹<E89D8E><EFBFBD>𧋦<EFBFBD><EFBFBD>霂嘅<E99C82>
3. POSIX<49><58>辣蝟餌<E89D9F>靘肽<E99D98><EFBFBD>𧋦<EFBFBD><EFBFBD><E595A3><EFBFBD>
霂西<EFBFBD>嚗鑹EDCap<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>函蔡嚗鍃CS vs SAE瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>.md
```
### <20><><EFBFBD>箸艶
**<EFBFBD>砍𧑐撘<EFBFBD><EFBFBD>𤑳㴓憓?*嚗?- <20>?REDCap API Adapter撘<72><E69298><EFBFBD>瘚贝<E7989A>
- <20>?External Module撘<65><E69298><EFBFBD><EFBFBD><E99D9A>
- <20>?IIT霂閖<E99C82>憿寧𤌍<E5AFA7><EFBFBD>撉諹<E69289>
- <20>?API Token瘚贝<E7989A><E8B49D>峕㺭<E5B395>格聢撘誯<E69298>霂?
**<2A>煺漣<E785BA><EFBFBD>**嚗<><EFBFBD>㷉ocker<65>滨蔭 + 憸嘥<E686B8><E598A5>滨蔭嚗㚁<E59A97>
- <20>?<3F><EFBFBD>鈭䫿CS<43>煺漣<E785BA>函蔡嚗? RDS + OSS + SLB嚗?- <20>?<3F>駁堺<E9A781><E5A0BA><EFBFBD><EFBFBD><E89D98><EFBFBD><EFBFBD>蝵莎<E89DB5>+ SSL + 憭<>遢嚗?- <20>?憭𡁻堺<F0A181BB><EFBFBD><E7AEB8><EFBFBD><EFBFBD>鈭支<E988AD>
---
## <20>㴓 銝<><E98A9D><EFBFBD>瓲敹<E793B2><EFBFBD><E6B2B2>挽霈?
### 1.1 摰孵膥<E5ADB5><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D><EFBFBD>
#### <20>煺漣蝥扳瓲敹<E793B2><EFBFBD><EFBFBD><EFBFBD><E695B9>嚗?
```
REDCap Docker<65><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F>煺漣<E785BA>𡁶鍂嚗?<3F><EFBFBD> 摰孵膥1: MySQL 8.0 <20>唳旿摨? <20>粬edcap-db<64>?<3F>? <20><EFBFBD> <20>砍𧑐撘<F0A79190><E69298>𡢅<EFBFBD>Docker摰孵膥
<EFBFBD>? <20><EFBFBD> <20>煺漣<E785BA><EFBFBD>嚗𡁻燵<F0A181BB><EFBFBD>RDS MySQL嚗<4C><EFBFBD><EFBFBD><E7909C>靝ocker摰孵膥
<EFBFBD>?<3F><EFBFBD> 摰孵膥2: Apache + PHP 8.1 + REDCap <20>粬edcap-web<65>? <20><EFBFBD> <20><>鉄Cron摰𡁏𧒄隞餃𦛚
<20><EFBFBD> <20><>鉄External Modules
<20><EFBFBD> <20>砍𧑐摮睃<E691AE>嚗Ềdocs/<2F><>odules/<2F><>emp/嚗?
蝵𤑳<EFBFBD>嚗鬏edcap-network嚗Ê̄ridge璅<E79285>嚗?摮睃<E691AE>嚗鋽ocker<65><EFBFBD><E8B3A2><EFBFBD><E79880><EFBFBD><EFBFBD><EFBFBD>𡝗㺭<F0A19D97><EFBFBD>
```
#### 撘<><E69298>𤏸<EFBFBD><F0A48FB8>拙捆<E68B99><EFBFBD><EFBFBD><E99A9E><EFBFBD>𤑳㴓憓<E3B493><E68693><EFBFBD>煺漣蝳<E6BCA3>鍂嚗?
```
<EFBFBD>𩤃<EFBFBD> 隞乩<E99A9E>摰孵膥隞<E886A5>鍂鈭擧𧋦<E693A7><EFBFBD><E595A3>𤏸<EFBFBD>霂𤏪<E99C82><F0A48FAA>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>摰匧<E691B0><E58CA7><EFBFBD><EFBFBD>摨𠉛<E691A8><F0A0899B><EFBFBD>
摰孵膥3: phpMyAdmin嚗<6E><EFBFBD><EFBFBD> <20>醩hpmyadmin<69>?<3F><EFBFBD> <20><EFBFBD><EFBFBD><E48891>唳旿摨枏虾閫<E899BE><E996AB>蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD>霂?<3F><EFBFBD> 蝡臬藁嚗?081
<EFBFBD><EFBFBD> <20>煺漣<E785BA><EFBFBD>嚗尠<E59A97> 銝漤<E98A9D>蝵莎<E89DB5>摰匧<E691B0>憌𡡞埯嚗?
霂湔<EFBFBD>嚗?<3F>煺漣<E785BA><EFBFBD><E887AC>唳旿摨梶恣<E6A2B6><E681A3><EFBFBD><EFBFBD><EFBFBD>嚗?<3F>?<3F><EFBFBD>鈭駵DS<44><EFBFBD><E689B9>?<3F>?MySQL<51>賭誘銵䕘<E98AB5>SSH餈墧𦻖嚗?<3F>?<3F><EFBFBD><E783BE><EFBFBD>MS<4D>唳旿蝞∠<E89D9E><E288A0>滚𦛚
```
### 1.2 <20><EFBFBD>隡睃飵
```
<EFBFBD>?撘<><E69298>?<3F>煺漣<E785BA><EFBFBD><EFBFBD><E98A9D><EFBFBD><EFBFBD>膄"<22><EFBFBD><E586BD>箏膥銝𡃏<E98A9D>頝?<3F><EFBFBD>嚗?<3F>?MySQL<51>求ocker<65><72><EFBFBD><EFBFBD>𣳇<EFBFBD><F0A3B387>祆㦤摰㕑<E691B0><EFBFBD><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693>
<EFBFBD>?<3F><EFBFBD>蝻嘥<E89DBB><E598A5><EFBFBD>RDS MySQL嚗<4C><E59A97>鈭抒㴓憓<E3B493><E68693>
<EFBFBD>?<3F><><EFBFBD><EFBFBD>韏㚚<E99F8F>蝳鳴<E89DB3>銝齿情<E9BDBF>㮖蜓<E3AE96>箇㴓憓?<3F>?銝<><E98A9D>桀鍳<E6A180>?<3F>𨀣迫嚗?鈭箏𣪧<E7AE8F>笔虾蝏湔擪
<EFBFBD>?<3F><EFBFBD><E887AC><EFBFBD>憭齿<E686AD>撱綽<E692B1>摰孵膥<E5ADB5>𡝗<EFBFBD><F0A19D97><EFBFBD>漱隞矋<E99A9E>
<EFBFBD>?<3F><EFBFBD><E3AE96><EFBFBD><EFBFBD><E798A5>撱綽<E692B1>瘚贝<E7989A><E8B49D>见末嚗?<3F>?<3F>唳旿<E594B3><E697BF><EFBFBD><EFBFBD><EFBFBD>Docker<65>?<3F>?RDS嚗?<3F>?<3F><EFBFBD>憭𡁶<E686AD><F0A181B6>砍僎摮矋<E691AE>銝滚<E98A9D>蝡臬藁嚗?<3F>?<3F>湔𦻖<E6B994>舐鍂鈭𤾸龫<F0A4BEB8><EFBFBD>蝵煾<E89DB5>蝵莎<E89DB5>蝳餌瑪鈭支<E988AD>嚗?```
### 1.3 蝡臬藁<E887AC><E89781><EFBFBD>
| <20>滚𦛚 | 摰孵膥蝡臬藁 | 銝餅㦤蝡臬藁 | 霈輸䔮<E8BCB8><EFBFBD> | <20>煺漣<E785BA><EFBFBD> |
|------|---------|---------|---------|---------|
| REDCap Web | 80 | 8080 | http://localhost:8080 | <20>?<3F>函蔡嚗<E894A1><EFBFBD>?0嚗?|
| MySQL | 3306 | 3306 | localhost:3306 | <20>𩤃<EFBFBD> <20>碶蝙<E7A2B6>沖DS |
| phpMyAdmin | 80 | 8081 | http://localhost:8081 | <20>?蝳<>鍂 |
**<2A>煺漣<E785BA><EFBFBD>蝡臬藁靚<E89781>㟲**嚗?- REDCap Web嚗帋蝙<E5B88B><EFBFBD><E586BD>?0/443蝡臬藁嚗<E89781><E59A97><EFBFBD>SLB嚗?- MySQL嚗𡁜<E59A97>雿輻鍂RDS嚗峕<E59A97><E5B395><EFBFBD><EFBFBD>湧蠧蝡臬藁嚗<E89781><E59A97>蝵𤏸<E89DB5><F0A48FB8><EFBFBD>
- phpMyAdmin嚗帋<E59A97><E5B88B>函蔡
---
## <20><>儭?鈭䎚<E988AD><E48E9A><EFBFBD>隞嗥<E99A9E><E597A5><EFBFBD><EFBFBD><EFBFBD>?
### 2.1 憿寧𤌍<E5AFA7><EFBFBD>蝏𤘪<E89D8F>
```
AIclinicalresearch/
<EFBFBD><EFBFBD> redcap15.8.0/ # <20>?撌脫<E6928C>REDCap皞鞟<E79A9E>
<EFBFBD>? <20><EFBFBD> redcap/ # REDCap<61><EFBFBD><E8A9A8><EFBFBD>
<EFBFBD>?<3F><EFBFBD> redcap-docker-dev/ # <20><> Docker<65>函蔡<E587BD><EFBFBD><EFBFBD><E59A97><EFBFBD>𥕦遣嚗?<3F>? <20><EFBFBD> docker-compose.yml # Docker蝻𡝗<E89DBB><F0A19D97>滨蔭嚗<E894AD>瓲敹<E793B2><E695B9>
<EFBFBD>? <20><EFBFBD> Dockerfile.redcap # REDCap摰孵膥<E5ADB5>𨅯<EFBFBD>摰帋<E691B0>
<EFBFBD>? <20><EFBFBD> .env # <20><EFBFBD><E887AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E69296>蝑㚁<E89D91>
<EFBFBD>? <20>?<3F>? <20><EFBFBD> config/ # <20>滨蔭<E6BBA8><E894AD><EFBFBD><EFBFBD>
<EFBFBD>? <20>? <20><EFBFBD> apache/
<EFBFBD>? <20>? <20>? <20><EFBFBD> redcap.conf # Apache<68>𡁏<EFBFBD>銝餅㦤<E9A485>滨蔭
<EFBFBD>? <20>? <20><EFBFBD> php/
<EFBFBD>? <20>? <20>? <20><EFBFBD> php.ini # PHP<48>滨蔭
<EFBFBD>? <20>? <20><EFBFBD> database.php # REDCap<61>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵?<3F>? <20>?<3F>? <20><EFBFBD> scripts/ # <20>芸𢆡<E88AB8>𤥁<EFBFBD><F0A4A581>?<3F>? <20>? <20><EFBFBD> setup-redcap.ps1 # <20>圲 銝<><E98A9D><EFBFBD>蝵脰<E89DB5><E884B0>穿<EFBFBD>PowerShell嚗?<3F>? <20>? <20><EFBFBD> start-redcap.ps1 # <20><> <20>臬𢆡<E887AC>𡁏𧋦
<EFBFBD>? <20>? <20><EFBFBD> stop-redcap.ps1 # <20><EFBFBD> <20>𨀣迫<F0A880A3>𡁏𧋦
<EFBFBD>? <20>? <20><EFBFBD> logs-redcap.ps1 # <20><> <20><EFBFBD><E4BAA6><EFBFBD>
<EFBFBD>? <20>? <20><EFBFBD> clean-redcap.ps1 # <20><>儭?皜<><E79A9C><EFBFBD><EFBFBD>
<EFBFBD>? <20>?<3F>? <20><EFBFBD> README.md # <20>函蔡<E587BD><E894A1>
```
### 2.2 <20><EFBFBD>霂湔<E99C82>
| <20><EFBFBD>/<2F><>辣 | <20><EFBFBD>?| 撘<><E69298>𤑳㴓憓?| <20>煺漣<E785BA><EFBFBD> |
|----------|------|---------|---------|
| `docker-compose.yml` | 摰帋<E691B0>憭𡁜捆<F0A1819C><EFBFBD><E585B8>?| <20>?敹<><E695B9> | <20>?敹<><E695B9><EFBFBD><E59A97><EFBFBD>㟲嚗?|
| `Dockerfile.redcap` | <20><EFBFBD>銋兴EDCap<61>𨅯<EFBFBD> | <20>?敹<><E695B9> | <20>?敹<><E695B9> |
| `.env` | <20>𤩺<EFBFBD>靽⊥<E99DBD><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD> | <20>?敹<><E695B9> | <20>?敹<><E695B9><EFBFBD>撩撖<E692A9><E69296>嚗?|
| `config/apache/` | Web<65>滚𦛚<E6BB9A><EFBFBD>蝵?| <20>?敹<><E695B9> | <20>?敹<><E695B9>嚗?SSL嚗?|
| `config/php/` | PHP餈鞱<E9A488><E99EB1><EFBFBD>蝵?| <20>?敹<><E695B9> | <20>?敹<><E695B9> |
| `config/database.php` | REDCap<61>唳旿摨栞<E691A8><E6A09E>?| <20>?敹<><E695B9> | <20>?敹<><E695B9>嚗㇌DS餈墧𦻖嚗?|
| `scripts/` | 餈鞟輕<E99E9F>𡁏𧋦 | 潃?<3F><EFBFBD> | <20>?敹<><E695B9> |
**<2A>煺漣<E785BA><EFBFBD>憸嘥<E686B8><E598A5><EFBFBD>閬?*嚗?- SSL霂<4C><EFBFBD><E9ABA1>辣嚗𡿨et's Encrypt<70><EFBFBD>銝朞<E98A9D>銋佗<E98A8B>
- 憭<><EFBFBD>𡁏𧋦嚗<F0A78BA6><EFBFBD><EFBFBD> + <20><>辣嚗?- <20>烐綉<E78390>滨蔭嚗㇃loudMonitor Agent嚗?- <20><EFBFBD>頧株蓮<E6A0AA>滨蔭
---
## <20>圲 銝剹<E98A9D><E589B9><EFBFBD><EFBFBD><EFBFBD>蝵株秩<E6A0AA>?
### 3.1 MySQL<51>滨蔭嚗<E894AD><EFBFBD><EFBFBD>嚗?
#### 3.1.1 <20>箸𧋦<E7AEB8>滨蔭
```yaml
# docker-compose.yml - MySQL<51>滚𦛚
services:
redcap-db:
image: mysql:8.0
container_name: redcap-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- redcap-db-data:/var/lib/mysql # <20>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>? ports:
- "3306:3306"
networks:
- redcap-network
command: --default-authentication-plugin=mysql_native_password
```
#### 3.1.2 <20><EFBFBD><E887AC><EFBFBD>嚗?env<6E><76>辣嚗?
```bash
# <20>唳旿摨㯄<E691A8>蝵殷<E89DB5><EFBFBD><E69298>𤑳㴓憓<E3B493><E68693>
MYSQL_ROOT_PASSWORD=redcap_root_123
MYSQL_DATABASE=redcap
MYSQL_USER=redcap_user
MYSQL_PASSWORD=redcap_pass_456
# <20>𩤃<EFBFBD> 霅血<E99C85>嚗朞<E59A97>鈭𥟇糓撘<E7B393><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD>
# <20>煺漣<E785BA><EFBFBD><EFBFBD>◆雿輻鍂撘箏<E69298><E7AE8F><EFBFBD><EFBFBD>
```
#### 3.1.3 霈方<E99C88><E696B9>雴辣霂湔<E99C82>
```bash
# 銝箔<E98A9D><EFBFBD><EFBFBD>?mysql_native_password嚗?# REDCap 15.8.0<EFBFBD>澆捆<EFBFBD><EFBFBD>瘙?# 憒<><E68692>雿輻鍂MySQL 8.0暺䁅恕<EFBFBD><EFBFBD>aching_sha2_password隡𡁜紡<EFBFBD><EFBFBD><EFBFBD>亙仃韐?```
---
### 3.2 PHP + Apache<68>滨蔭
#### 3.2.1 PHP<48>滨蔭嚗īhp.ini嚗?
```ini
# config/php/php.ini
# ========== <20><>辣銝𠹺<E98A9D>嚗㇌EDCap敹<70><E695B9>嚗?=========
upload_max_filesize = 32M # REDCap<61><70>辣銝𠹺<E98A9D><F0A0B9BA>𣂼<EFBFBD>
post_max_size = 32M # 銵典<E98AB5><E585B8>𣂷漱憭批<E686AD>
max_file_uploads = 20 # <20>峕𧒄銝𠹺<E98A9D><F0A0B9BA><EFBFBD><EFBFBD>?
# ========== <20><EFBFBD><E689AF>園𡢿嚗<F0A1A2BF><EFBFBD>桀紡<E6A180><EFBFBD><EFBFBD><E996AC>==========
max_execution_time = 300 # 5<><35><EFBFBD><EFBFBD><EFBFBD>唳旿撖澆枂嚗?max_input_time = 300 # 颲枏<E9A2B2><EFBFBD><E996AB><EFBFBD>園𡢿
# ========== <20><><EFBFBD>嚗㇌EDCap<61><70>雿舘<E99BBF><EFBFBD><E79899>==========
memory_limit = 256M # REDCap<61><EFBFBD>256MB
# ========== <20>嗅躹嚗<E8BAB9><E59A97><EFBFBD><E996AC>嚗?=========
date.timezone = Asia/Shanghai # <20>𦯀漪<F0A6AF80>園𡢿
# ========== <20>躰秤<E8BAB0><EFBFBD><EFBFBD><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693>==========
display_errors = On # 撘<><E69298>𤑳㴓憓<E3B493>遬蝷粹<E89DB7>霂?error_reporting = E_ALL # <20><EFBFBD><E4BA99><EFBFBD><EFBFBD><EFBFBD>霂?
# ========== Session<6F>滨蔭 ==========
session.gc_maxlifetime = 3600 # Session餈<6E><E9A488><EFBFBD>園𡢿嚗?撠𤩺𧒄嚗?session.cookie_lifetime = 0 # Cookie瘚讛<E7989A><E8AE9B><EFBFBD><E585B8>剜𧒄餈<F0A79284><E9A488>
```
#### 3.2.2 PHP<48><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>嚗?
```dockerfile
# Dockerfile.redcap 銝剖<E98A9D><EFBFBD><E98B86>撅?
# <20><EFBFBD><E8A9A8><EFBFBD>嚗㇌EDCap敹<70><E695B9>嚗?RUN docker-php-ext-install \
mysqli # MySQL餈墧𦻖嚗<F0A6BB96><E59A97><EFBFBD><EFBFBD>嚗? pdo_mysql # PDO<44><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>嚗? gd # <20><EFBFBD><EFBFBD><E686AD><EFBFBD><E59A97><EFBFBD><E99C82><EFBFBD><EFBFBD>㦛銵剁<E98AB5>
zip # <20>唳旿撖澆枂<E6BE86>讠憬
mbstring # 憭𡁜<E686AD><F0A1819C><EFBFBD><EFBFBD>蝚虫葡嚗㇎TF-8嚗? curl # API靚<49>
soap # Web Service<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ldap # LDAP霈方<E99C88><EFBFBD><EFBFBD><EFBFBD>
# Apache璅<E79285>
RUN a2enmod rewrite ssl headers
```
#### 3.2.3 Apache<68>滨蔭嚗ǐedcap.conf嚗?
```apache
# config/apache/redcap.conf
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html/redcap
<Directory /var/www/html/redcap>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
# <20>脫迫<E884AB><EFBFBD><E6A180><EFBFBD>
Options -Indexes
# <20><>捂.htaccess
AllowOverride All
</Directory>
# <20><EFBFBD><E4BA99>滨蔭
ErrorLog ${APACHE_LOG_DIR}/redcap-error.log
CustomLog ${APACHE_LOG_DIR}/redcap-access.log combined
# 摰匧<E691B0>憭湛<E686AD><EFBFBD><E69298>𤑳㴓憓<E3B493><EFBFBD><EFBFBD>
# Header always set X-Frame-Options "SAMEORIGIN"
# Header always set X-Content-Type-Options "nosniff"
</VirtualHost>
```
---
### 3.3 REDCap database.php<68>滨蔭
#### 3.3.1 <20>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵?
```php
<?php
// config/database.php
/**
* REDCap<61>唳旿摨栞<E691A8><E6A09E>仿<EFBFBD>蝵殷<E89DB5>Docker<65><EFBFBD>嚗? * 甇斗<E79487>隞園<E99A9E><EFBFBD><E996AC><EFBFBD><EFBFBD>REDCap皞鞟<E79A9E><E99E9F><EFBFBD>edcap/<2F><EFBFBD>銝? */
global $log_all_errors;
$log_all_errors = TRUE; // 撘<><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD>航祕蝏<E7A595>𠯫敹?
// ========== MYSQL DATABASE CONNECTION ==========
// Docker摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD>仿<EFBFBD>蝵?$hostname = 'redcap-db'; # 摰孵膥<E5ADB5>滚𦛚<E6BB9A><EFBFBD>銝齿糓localhost嚗<74><E59A97>
$db = 'redcap'; # <20>唳旿摨枏<E691A8>
$username = 'redcap_user'; # <20><EFBFBD><E586BD>?$password = 'redcap_pass_456'; # 撖<><E69296>
// ========== SALT VARIABLE嚗<45><E59A97><EFBFBD><E996AC>嚗?=========
// <20><EFBFBD><E585B6>唳旿<E594B3><EFBFBD><EFBFBD><E99C82><EFBFBD><EFBFBD><EFBFBD>
// <20>𩤃<EFBFBD><><E98A9D>西挽蝵殷<E89DB5>瘞貉<E7989E>銝滚虾<E6BB9A>湔㺿嚗?$salt = 'iit_dev_salt_2026_redcap_v15'; // <20><EFBFBD>8銝芸<E98A9D>蝚?
// ========== SSL餈墧𦻖嚗<F0A6BB96><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD><E996AC>==========
$db_ssl_key = '';
$db_ssl_cert = '';
$db_ssl_ca = '';
$db_ssl_capath = NULL;
$db_ssl_cipher = NULL;
$db_ssl_verify_server_cert = false;
?>
```
#### 3.3.2 Salt<6C>潸秩<E6BDB8>?
```
<EFBFBD><EFBFBD>糓Salt嚗?- <20><EFBFBD>REDCap<61>唳旿撖澆枂<E6BE86><EFBFBD><E597A5><EFBFBD><EFBFBD><E99C82>
- 敶勗<E695B6><E58B97><EFBFBD><EFBFBD><EFBFBD>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>?- 銝<><E98A9D>西挽蝵桀<E89DB5>銝滚虾<E6BB9A>湔㺿嚗<E3BABF><E59A97>撖潸稲<E6BDB8><E7A8B2><EFBFBD>唳旿<E594B3><EFBFBD><EFBFBD><E996AB>嚗?
<EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD>遣霈殷<EFBFBD>
- 雿輻鍂<E8BCBB><EFBFBD><E7AE8F><EFBFBD>alt<6C><EFBFBD>靘蹂<E99D98>憭𡁏活<F0A1818F>滚遣<E6BB9A><EFBFBD>嚗?- <20><>鉄憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD><EFBFBD><E59A97>'iit_dev_salt_2026'嚗?- <20><EFBFBD>8銝芸<E98A9D>蝚佗<E89D9A>撱箄悅20+摮㛖泵
<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?- 雿輻鍂撘粹<E69298><E7B2B9>搴alt嚗?2+摮㛖泵嚗?- <20><>鉄憭批<E686AD><E689B9><EFBFBD>瘥溻<E798A5><E6BABB>㺭摮𨰜<E691AE><F0A8B09C>鸌畾𠰴<E795BE>蝚?- 憒亙<E68692><EFBFBD>遢嚗<E981A2>腺憭曹<E686AD>撖潸稲<E6BDB8>唳旿<E594B3><EFBFBD><EFBFBD><E996AB>嚗?```
---
## <20>𩣪 <20><EFBFBD><E49C98><EFBFBD>隞嗆<E99A9E><E59786><EFBFBD>蝵桃<E89DB5><E6A183>?
### 4.1 銝厩<E98A9D><E58EA9>滨蔭<E6BBA8><EFBFBD>撖寞<E69296>
| <20><EFBFBD> | 憭齿<E686AD>摨?| <20><EFBFBD> | <20><EFBFBD><E588BB>箸艶 |
|------|--------|------|---------|
| **<2A><EFBFBD>A嚗朞歲餈<E6ADB2><E9A488>蝵?* | 潃?<3F><><EFBFBD><E89D9E>?| <20>𣳇<EFBFBD>隞嗅<E99A9E><E59785>?| <20>?Day 2-8 API撘<49><E69298>?|
| **<2A><EFBFBD>B嚗鐝ailHog** | 潃鐥<E6BD83><><E89D9E>?| <20>砍𧑐<E7A08D>桐辣<E6A190>行⏛ | Day 9-10 <20>桐辣瘚贝<E7989A> |
| **<2A><EFBFBD>C嚗𡁶<E59A97>摰㓟MTP** | 潃鐥<E6BD83>潃?憭齿<E686AD> | <20><EFBFBD><E7AC94>桐辣<E6A190><EFBFBD>?| <20><EFBFBD><E693A7><EFBFBD><EFBFBD>瘚贝<E7989A> |
### 4.2 <20><EFBFBD>A嚗朞歲餈<E6ADB2><E9A488>蝵殷<E89DB5><E6AEB7><EFBFBD><E588BB><EFBFBD>Day 2-8嚗?
```yaml
隡睃飵嚗?<3F>?<3F>滨蔭<E6BBA8><E894AD><EFBFBD><E89D9E>?<3F>?<3F>臬𢆡<E887AC><F0A286A1>敹?<3F>?銝滚蔣<E6BB9A><E894A3>PI撘<49><E69298>?<3F>?REDCap<61>舀迤撣貉<E692A3>銵?
<EFBFBD>𣂼<EFBFBD>嚗?<3F>?<3F><EFBFBD><E4ADBE><EFBFBD><E785BE><EFBFBD><EFBFBD>仿<EFBFBD>霂?<3F>?<3F><EFBFBD><E4ADBE><EFBFBD><E785BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桅<E89DB5>隞?<3F>?<3F><EFBFBD><E4ADBE><EFBFBD><E785BE>頂蝏罸<E89D8F>𡁶䰻
摰墧鴌<EFBFBD><EFBFBD>嚗?1. REDCap摰㕑<E691B0><E39591>嗉歲餈𦺋MTP<54>滨蔭甇仿炊
2. <20><EFBFBD>銝剖<E98A9D> <20>?Email & Notification <20>?<3F>嗵征
3. <20>湔𦻖餈𥡝<E9A488>API撘<49><E69298>?
<EFBFBD><EFBFBD>鍂鈭𠬍<EFBFBD>
<EFBFBD>?REDCap API Adapter撘<72><E69298>?<3F>?External Module撘<65><E69298>𡢅<EFBFBD>銝齿<E98A9D><E9BDBF>𢠃<EFBFBD>隞塚<E99A9E>
<EFBFBD>?<3F>唳旿撖澆<E69296>撖澆枂瘚贝<E7989A>
```
### 4.3 <20><EFBFBD>B嚗鐝ailHog嚗<67>𧋦<EFBFBD><EFBFBD>隞嗆<E99A9E>霂𤏪<E99C82>
```yaml
# docker-compose.yml 瘛餃<E7989B>MailHog<6F>滚𦛚
services:
mailhog:
image: mailhog/mailhog
container_name: redcap-mailhog
ports:
- "1025:1025" # SMTP蝡臬藁
- "8025:8025" # Web UI蝡臬藁
networks:
- redcap-network
# REDCap SMTP<54>滨蔭
SMTP Host: mailhog
SMTP Port: 1025
SMTP Auth: <EFBFBD>𣳇<EFBFBD>霈方<EFBFBD>
# 霈輸䔮Web<65>屸𢒰<E5B1B8><EFBFBD><E4BAA6>桐辣
http://localhost:8025
```
**雿輻鍂<E8BCBB>箸艶**嚗𡁏<E59A97>霂閗<E99C82><E99697>仿<EFBFBD>霂瑯<E99C82><E791AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桃<E89DB5><E6A183>桐辣<E6A190><EFBFBD>
### 4.4 <20><EFBFBD>C嚗𡁶<E59A97>摰㓟MTP嚗𠃑mail/Outlook嚗?
```yaml
# REDCap<61><EFBFBD>銝剖<E98A9D><E58996>滨蔭
# Gmail蝷箔<E89DB7>
SMTP Host: smtp.gmail.com
SMTP Port: 587
SMTP Auth: TLS
Username: your-email@gmail.com
Password: app-specific-password # 銝齿糓Gmail撖<6C><E69296>嚗?
# <20>𣂼<EFBFBD>
- Gmail嚗𡁏<EFBFBD>憭?00撠<30><E692A0><EFBFBD>滩晶韐行<E99F90>嚗?- Outlook嚗𡁏<E59A97>憭?00撠?- <20><><EFBFBD><E996AC><EFBFBD>?銝滚<E98A9D>摰匧<E691B0><E58CA7><EFBFBD><EFBFBD><EFBFBD>刻挪<E588BB>?<3F>碶蝙<E7A2B6><EFBFBD><E585B8><EFBFBD><E585B6><EFBFBD><E585B8>?```
**<2A><EFBFBD>蝑𣇉裦**嚗?- **Day 2-8**嚗帋蝙<E5B88B>冽䲮獢㇁嚗<E38781>歲餈<E6ADB2><E9A488>
- **Day 9-10**嚗𡁜<E59A97><F0A1819C><EFBFBD>瘚贝<E7989A><E8B49D>桐辣嚗䔶葩<E494B6><EFBFBD><E59785><EFBFBD><EFBCB7><EFBFBD>B
- **<2A>煺漣<E785BA><EFBFBD>**嚗帋蝙<E5B88B><EFBFBD>銝锭MTP<54><EFBFBD><E7A2B6>滚𦛚嚗𠄎endGrid<69><64><EFBFBD><EFBFBD>DirectMail嚗?
---
## <20><> 鈭𢛵<E988AD><F0A29BB5>𧋦<EFBFBD>?vs 鈭𤑳垢<F0A491B3>函蔡
### 5.1 Docker<65>𨅯<EFBFBD><F0A885AF>舐宏璊齿<E7928A><EFBFBD><E689B9>?
#### <20>砍𧑐Docker <20>?<3F><EFBFBD>鈭䫿CS嚗𡁏糓<F0A1818F>血虾隞伐<E99A9E>
```
蝑娍<EFBFBD>嚗𡁜虾隞伐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>湔𦻖餈<EFBFBD>宏嚗?
<EFBFBD>臭誑餈蹱甅<EFBFBD>𡄯<EFBFBD>
1. 撖澆枂Docker<65>𨅯<EFBFBD>
docker save redcap-local:1.0 -o redcap.tar
2. 銝𠹺<E98A9D><F0A0B9BA>蚩CS
scp redcap.tar user@ecs-ip:/tmp/
3. <20>汞CS撖澆<E69296>
docker load -i /tmp/redcap.tar
4. 餈鞱<E9A488>摰孵膥
docker run -d -p 80:80 redcap-local:1.0
<EFBFBD>蛹隞<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?<3F>?<3F><EFBFBD>嚗鋽ocker憭帋<E686AD><EFBFBD><E69285><EFBFBD><EFBFBD>嚗峕<E59A97>憭?0-20%<25><EFBFBD>
<EFBFBD>?蝔喳<E89D94><E596B3><EFBFBD>摰孵膥撅<E886A5><E69285><EFBFBD><EFBFBD><E683A9><EFBFBD><EFBFBD><EFBFBD><E5B395>𦦵<EFBFBD>
<EFBFBD>?餈鞟輕嚗𡁜龫<F0A1819C>㛖頂蝏罸<E89D8F><EFBFBD><E996AC>憭批虾<E689B9><EFBFBD>?<3F>?憭<>遢嚗𡁜捆<F0A1819C>冽㺭<E586BD><EFBFBD>隞賣凒憭齿<E686AD>
<EFBFBD>?<3F>烐綉嚗𡁶凒<F0A181B6>仿<EFBFBD>蝵脫凒<E884AB><EFBFBD><E3AE96>烐綉<E78390><EFBFBD>霂?```
### 5.2 <20><EFBFBD><E588BB><EFBFBD><EFBFBD>蝡舫<E89DA1>蝵脩<E89DB5><E884A9>?
```
<EFBFBD>砍𧑐撘<EFBFBD><EFBFBD>𡢅<EFBFBD>Docker嚗争<EFBFBD> 鈭𤑳垢<F0A491B3>煺漣嚗<E6BCA3><E59A97><EFBFBD><EFBFBD><EFBFBD>蝵莎<E89DB5>
<EFBFBD>嗆挾1嚗𡁏𧋦<EFBFBD>蚤ocker撘<EFBFBD><EFBFBD>𡢅<EFBFBD>敶枏<EFBFBD>嚗?- <20><EFBFBD>嚗鋫PI Adapter撘<72><E69298><EFBFBD><E3BBAB>xternal Module撘<65><E69298>?- <20><EFBFBD>嚗阳indows + Docker Desktop
- <20>唳旿嚗𡁏<E59A97>霂閙㺭<E99699><EFBFBD><E6AEB7><EFBFBD><E888AB><EFBFBD><EFBFBD><E798A5>
<EFBFBD>嗆挾2嚗鍃CS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>函蔡嚗<EFBFBD>𧊋<EFBFBD><EFBFBD>
- <20><EFBFBD>嚗𡁶<E59A97>鈭抒㴓憓<E3B493><E68693><EFBFBD><EFBFBD>摰𧼮龫<F0A7BCAE>埈㺭<E59F88>?- <20><EFBFBD>嚗䦧buntu 22.04 + LAMP
- <20>唳旿嚗鑹DS MySQL嚗<4C><E59A97><EFBFBD>舐鍂嚗? OSS摮睃<E691AE>
<EFBFBD>宏頝臬<EFBFBD>嚗?1. <20>冽𧋦<E586BD>蚤ocker摰峕<E691B0>External Module撘<65><E69298>?2. 撉諹<E69289>API Adapter<65><EFBFBD>
3. <20>汞CS銝𦠜<E98A9D><F0A6A09C><EFBFBD><EFBFBD><EFBFBD>EDCap嚗𡿨AMP嚗?4. 憭滚<E686AD>External Module隞<65><E99A9E><EFBFBD>蚩CS
5. <20>滨蔭<E6BBA8>煺漣蝥扳㺭<E689B3><EFBFBD><E6A180>玺MTP
6. <20>滨蔭SSL霂<4C><EFBFBD><E9ABA1><EFBFBD><EFBFBD>?```
### 5.3 <20><EFBFBD>撖寞<E69296>銵?
| 撖寞<E69296>憿?| <20>砍𧑐Docker | <20><EFBFBD>鈭䫿CS嚗<53><E59A97><EFBFBD><EFBFBD><EFBFBD>蝵莎<E89DB5> |
|--------|-----------|---------------------|
| **<2A>函蔡<E587BD><EFBFBD>** | Docker Compose | LAMP<4D>见𢆡摰㕑<E691B0> |
| **霈輸䔮<E8BCB8><EFBFBD>** | localhost:8080 | https://redcap.domain.com |
| **<2A>唳旿摨?* | Docker摰孵膥 | RDS MySQL嚗<4C><EFBFBD><EFBFBD><E7909C>𡝗𧋦<F0A19D97>?|
| **摮睃<E691AE>** | Docker<65>?| OSS<53>𡝗𧋦<F0A19D97><EFBFBD><E59581>?|
| **<2A>桐辣** | 頝唾<E9A09D><E594BE>䤼ailHog | <20><EFBFBD>鈭飇irectMail/SendGrid |
| **SSL** | 銝漤<E98A9D>閬?| Let's Encrypt霂<74>髡 |
| **<2A><EFBFBD>** | 潃鐥<E6BD83>潃?| 潃鐥<E6BD83>潃鐥<E6BD83>潃?|
| **蝔喳<E89D94><E596B3>?* | 潃鐥<E6BD83>潃?| 潃鐥<E6BD83>潃鐥<E6BD83>潃?|
| **<2A>鞉𧋦** | $0 | $50-200/<2F>?|
| **<2A><><EFBFBD>箸艶** | 撘<><E69298><EFBFBD>霂?| <20>煺漣<E785BA><EFBFBD> |
---
## <20><> <20><EFBFBD><E58786><EFBFBD><EFBFBD>格釣<E6A0BC><EFBFBD>憿?
### 6.1 <20>𤑳<EFBFBD>1嚗𡁏<E59A97>隞嗆<E99A9E><E59786>鞾䔮憸?<3F>𩤃<EFBFBD>
#### <20><>𠶖
```bash
摰㕑<EFBFBD><EFBFBD><EFBFBD>蝷綽<EFBFBD>
"Unable to write to /var/www/html/edocs directory"
"Unable to write to /var/www/html/temp directory"
```
#### <20><EFBFBD>
```
Apache餈鞱<EFBFBD><EFBFBD><EFBFBD>嚗òww-data嚗匧笆<E58CA7><EFBFBD><E6A180><EFBFBD><E683A9><EFBFBD><EFBFBD>
Docker摰孵膥<EFBFBD><EFBFBD><EFBFBD>隞嗆<EFBFBD><EFBFBD>𣂷<EFBFBD>銝餅㦤銝滚<EFBFBD>甇?```
#### 閫<><E996AB><EFBFBD><EFBFBD>
```bash
# <20><EFBFBD>1嚗𡁜鍳<F0A1819C><EFBFBD><E585B8>见𢆡靽桀<E99DBD><EFBFBD><EFBFBD><EFBFBD>
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/edocs
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/temp
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/modules
# <20><EFBFBD>2嚗𡁜銁Dockerfile銝剝<E98A9D><E5899D><EFBFBD><EFBFBD>蝵?RUN mkdir -p /var/www/html/edocs /var/www/html/temp /var/www/html/modules && \
chown -R www-data:www-data /var/www/html
```
#### 憸<><EFBFBD>芣鴌
```bash
# 璉<><E79289><EFBFBD><E4BAA4>?docker exec -it redcap-web ls -la /var/www/html/
# 摨磰砲<E7A3B0><EFBFBD>嚗?drwxr-xr-x www-data www-data edocs
drwxr-xr-x www-data www-data temp
drwxr-xr-x www-data www-data modules
```
---
### 6.2 <20>𤑳<EFBFBD>2嚗𡁏㺭<F0A1818F><EFBFBD>餈墧𦻖憭梯揖 <20>𩤃<EFBFBD>
#### <20><>𠶖
```bash
摰㕑<EFBFBD>憿菟𢒰<EFBFBD>鞟內嚗?"Cannot connect to database"
"Access denied for user 'redcap_user'@'redcap-web.redcap-network'"
```
#### <20><EFBFBD>
```
<EFBFBD><EFBFBD>1: MySQL摰孵膥<E5ADB5><EFBFBD><E88AB8>典鍳<E585B8>?<3F><EFBFBD>2: database.php<68>滨蔭<E6BBA8>躰秤嚗áostname嚗?<3F><EFBFBD>3: 霈方<E99C88><E696B9>雴辣銝滚<E98A9D>摰對<E691B0>caching_sha2_password嚗?```
#### 閫<><E996AB><EFBFBD><EFBFBD>
**<2A><EFBFBD>1嚗鐝ySQL<51>芸停蝏?*
```bash
# <20><EFBFBD>MySQL<51><EFBFBD>嚗𣬚<E59A97>敺?ready for connections"
docker-compose logs redcap-db | grep "ready for connections"
# 颲枏枂蝷箔<E89DB7>嚗?# 2026-01-01 10:00:00 [Server] /usr/sbin/mysqld: ready for connections.
# 撱箄悅蝑匧<E89D91>30蝘鍦<E89D98><E98DA6>滩挪<E6BBA9>展nstall.php
```
**<2A><EFBFBD>2嚗冴ostname<6D>滨蔭<E6BBA8>躰秤**
```php
// <20>?<3F>躰秤<E8BAB0>滨蔭
$hostname = 'localhost'; // 摰孵膥<E5ADB5><E886A5>ocalhost銝齿糓MySQL
$hostname = '127.0.0.1'; // <20><EFBFBD>
$hostname = 'redcap-mysql'; // 摰孵膥<E5ADB5><EFBFBD><EFBFBD><E99BBF>雿輻鍂<E8BCBB>滚𦛚<E6BB9A>?
// <20>?甇<><EFBFBD>滨蔭
$hostname = 'redcap-db'; // Docker Compose<73>滚𦛚<E6BB9A>?```
**<2A><EFBFBD>3嚗朞恕霂<E68195><E99C82>隞?*
```bash
# 蝖桐<E89D96>docker-compose.yml銝剖<E98A9D><E58996><EFBFBD>
command: --default-authentication-plugin=mysql_native_password
# <20>硋銁MySQL摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD>其耨<E585B6>寧鍂<E5AFA7>?docker exec -it redcap-mysql mysql -uroot -p
ALTER USER 'redcap_user'@'%' IDENTIFIED WITH mysql_native_password BY 'redcap_pass_456';
FLUSH PRIVILEGES;
```
---
### 6.3 <20>𤑳<EFBFBD>3嚗䥪HP<48><EFBFBD>蝻箏仃 <20>𩤃<EFBFBD>
#### <20><>𠶖
```bash
install.php璉<70><E79289>仿△<E4BBBF><EFBFBD>蝷綽<E89DB7>
"The GD extension is not loaded"
"The ZIP extension is not loaded"
"The MySQLi extension is not loaded"
```
#### <20><EFBFBD>
```
php:8.1-apache<68><EFBFBD><E7AE87>𨅯<EFBFBD><F0A885AF><EFBFBD><E88AB8>急瓲敹<E793B2><E695B9>撅?REDCap<61><70><EFBFBD><E996AC>憭硋<E686AD>鋆?0+銝芣<E98A9D>撅?```
#### 閫<><E996AB><EFBFBD><EFBFBD>
**Dockerfile銝剝<E98A9D><EFBFBD><E98B86><EFBFBD><EFBFBD>嚗?*
```dockerfile
FROM php:8.1-apache
# 摰㕑<E691B0>蝟餌<E89D9F>靘肽<E99D98>
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
libzip-dev \
libldap2-dev \
&& rm -rf /var/lib/apt/lists/*
# 摰㕑<E691B0>PHP<48><EFBFBD>
RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install -j$(nproc) \
mysqli \
pdo_mysql \
gd \
zip \
mbstring \
curl \
soap \
ldap
# <20>舐鍂Apache璅<E79285>
RUN a2enmod rewrite ssl headers
```
**撉諹<E69289>摰㕑<E691B0>**
```bash
# 餈𥕦<E9A488>摰孵膥璉<E886A5><E79289>?docker exec -it redcap-web php -m | grep -E '(mysqli|gd|zip|mbstring)'
# 摨磰砲<E7A3B0><EFBFBD>嚗?gd
mbstring
mysqli
zip
```
---
### 6.4 <20>𤑳<EFBFBD>4嚗阳indows頝臬<E9A09D><E887AC><EFBFBD> <20>𩤃<EFBFBD>
#### <20><>𠶖
```bash
摰孵膥<EFBFBD>臬𢆡憭梯揖<EFBFBD>𡝗<EFBFBD>瘜閗挪<EFBFBD><EFBFBD>隞?Error: "no such file or directory"
```
#### <20><EFBFBD>
```
Windows頝臬<EFBFBD><EFBFBD><EFBFBD>銝穥inux銝滚<EFBFBD>摰?<3F>齿<EFBFBD><E9BDBF>?\)銝擧迤<E693A7>𨀣<EFBFBD>(/)<29><EFBFBD>
蝏嘥笆頝臬<EFBFBD><EFBFBD>求ocker Desktop銝剖虾<E58996><EFBFBD><E8B3A3><EFBFBD>
```
#### 閫<><E996AB><EFBFBD><EFBFBD>
**雿輻鍂<E8BCBB>詨笆頝臬<E9A09D><EFBFBD><EFBFBD><EFBFBD>**
```yaml
# <20>?甇<>嚗𡁶㮾撖寡楝敺?volumes:
- ../redcap15.8.0/redcap:/var/www/html/redcap
- ./config/apache/redcap.conf:/etc/apache2/sites-available/000-default.conf
# <20>?<3F>躰秤嚗阳indows蝏嘥笆頝臬<E9A09D>
volumes:
- D:\MyCursor\AIclinicalresearch\redcap15.8.0\redcap:/var/www/html/redcap
# <20><20><EFBFBD><E888AA>臭誑嚗阳SL頝臬<E9A09D><EFBFBD><E59A97><EFBFBD>靝蝙<E99D9D>汾SL2<4C>𡒊垢嚗?volumes:
- /mnt/d/MyCursor/AIclinicalresearch/redcap15.8.0/redcap:/var/www/html/redcap
```
**PowerShell銝剛蓮<E5899B>楝敺?*
```powershell
# <20><EFBFBD>敶枏<E695B6><E69E8F><EFBFBD><E6A180><EFBFBD>㮾撖寡楝敺?$currentDir = Get-Location
$redcapSource = Join-Path $currentDir.Parent.FullName "redcap15.8.0\redcap"
Write-Host "REDCap Source: $redcapSource"
```
---
### 6.5 <20>𤑳<EFBFBD>5嚗𡁶垢<F0A181B6><E59EA2><EFBFBD>蝒?<3F>𩤃<EFBFBD>
#### <20><>𠶖
```bash
docker-compose up -d 憭梯揖
Error: "Bind for 0.0.0.0:8080 failed: port is already allocated"
```
#### <20><EFBFBD>
```
<EFBFBD>祆㦤撌脫<EFBFBD><EFBFBD>滚𦛚<EFBFBD>删鍂<EFBFBD><EFBFBD>蝡臬藁
- 8080: <20><EFBFBD><E888AA><EFBFBD>隞頟eb<65>滚𦛚
- 3306: <20><EFBFBD>撌脣<E6928C><EFBFBD>𧋦<EFBFBD>衽ySQL
- 8081: <20><EFBFBD><E888AA><EFBFBD>隞𣇉恣<F0A38789><E681A3><EFBFBD>?```
#### 閫<><E996AB><EFBFBD><EFBFBD>
**璉<><E79289>亦垢<E4BAA6><E59EA2><EFBFBD><EFBFBD><EFBFBD>Windows嚗?*
```powershell
# 璉<><E79289>?080蝡臬藁
netstat -ano | findstr :8080
# 颲枏枂蝷箔<E89DB7>嚗?# TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1234
# <20><EFBFBD><E4BAA6>删鍂餈𤤿<E9A488>
tasklist | findstr 1234
# 蝏𤘪<E89D8F>餈𤤿<E9A488><EFBFBD><EFBFBD>𠬍<EFBFBD>嚗?taskkill /F /PID 1234
```
**靽格㺿蝡臬藁<E887AC><EFBFBD>**
```yaml
# 憒<><E68692>8080鋡怠<E98BA1><E680A0><EFBFBD><E58981>寧鍂8888
services:
redcap-web:
ports:
- "8888:80" # 銝餅㦤8888 <20>?摰孵膥80
# 憒<><E68692>3306鋡怠<E98BA1><E680A0><EFBFBD><E58981>寧鍂3307
redcap-db:
ports:
- "3307:3306"
```
**<2A><>雿喳<E99BBF>頝?*
```bash
# 憸<><E686B8><EFBFBD><E79289><EFBFBD><E4BAA4>厩垢<E58EA9>?netstat -ano | findstr :8080
netstat -ano | findstr :3306
netstat -ano | findstr :8081
# 憒<><E68692><EFBFBD>賜征<E8B39C><EFBFBD>雿輻鍂暺䁅恕蝡臬藁
# 憒<><E68692><EFBFBD><EFBFBD><EFBFBD><E89D92><EFBFBD>𣂼<EFBFBD>靽格㺿docker-compose.yml
```
---
### 6.6 <20>𤑳<EFBFBD>6嚗𡁏㺭<F0A1818F><EFBFBD><EFBFBD><E98A8B>霂臬躹 <20>𩤃<EFBFBD>
#### <20><>𠶖
```bash
摰孵膥<EFBFBD>𣳇膄<EFBFBD>𠬍<EFBFBD><EFBFBD>唳旿銝
docker-compose down <20><EFBFBD>瘜閙<E7989C>憭漤★<E6BCA4>?```
#### <20><EFBFBD>
```
霂舐鍂鈭?-volumes<65><73><EFBFBD>𣳇膄鈭<E88684><EFBFBD>桀㭘
瘝⊥<EFBFBD><EFBFBD><EFBFBD>圾Docker<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```
#### 甇<><EFBFBD><EFBC86>
**Docker<65>唳旿<E594B3>瑞掩<E7919E>?*
```yaml
# 蝐餃<E89D90>1嚗𡁜𦶢<F0A1819C>滚㭘嚗<E3AD98><EFBFBD><EFBFBD><EFBFBD><E69298>𤑳㴓憓<E3B493><E68693>
volumes:
- redcap-db-data:/var/lib/mysql
# <20><EFBFBD>嚗鋽ocker蝞∠<E89D9E>嚗諹楊摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD><EFBFBD><E59094>𣳇膄摰孵膥銝滚蔣<E6BB9A>?
# 蝐餃<E89D90>2嚗𡁶<E59A97>摰𡁏<E691B0>頧踝<E9A0A7>銝齿綫<E9BDBF><EFBFBD>Windows<77><EFBFBD>撌殷<E6928C>
volumes:
- ./mysql-data:/var/lib/mysql
# <20><EFBFBD>嚗帋蜓<E5B88B>箇𤌍敶𤏪<E695B6><F0A48FAA><EFBFBD><EFBFBD><E99BBF><EFBFBD>撌?
# 蝐餃<E89D90>3嚗魩mpfs嚗<73><EFBFBD><EFBFBD>銝齿<E98A9D><EFBFBD><E98A8B>嚗?tmpfs:
- /var/lib/mysql
# <20><EFBFBD>嚗𡁜<E59A97>摮睃<E691AE><E79D83><EFBFBD>摰孵膥<E5ADB5>𨀣迫<F0A880A3>喃腺憭?```
**摰匧<E691B0><E58CA7><EFBFBD>**
```bash
# <20>?<3F>𨀣迫摰孵膥嚗<E886A5><E59A97><EFBFBD>蹱㺭<E8B9B1><EFBFBD>
docker-compose stop
# <20>?<3F>𨀣迫撟嗅<E6929F><E59785>文捆<E69687><EFBFBD>靽萘<E99DBD><E89098>唳旿嚗?docker-compose down
# <20>𩤃<EFBFBD> <20>𣳇膄摰孵膥<E5ADB5>𣬚<EFBFBD>蝏頣<E89D8F><EFBFBD><E99BBF><EFBFBD>坔㭘嚗<E3AD98><E59A97><EFBFBD><EFBFBD>
docker-compose down --volumes=false
# <20>?<3F>𣳇膄<F0A3B387><E88684><EFBFBD><EFBFBD><E39A81><EFBFBD>𡠺<EFBFBD>唳旿<E594B3><EFBFBD><E79880>梢埯嚗<E59FAF><E59A97>
docker-compose down --volumes
docker-compose down -v # <20><EFBFBD>
```
**<2A>唳旿憭<E697BF>遢**
```bash
# 憭<>遢MySQL<51>唳旿<E594B3>?docker run --rm -v redcap-db-data:/data -v $(pwd):/backup \
ubuntu tar czf /backup/redcap-db-backup.tar.gz /data
# <20><EFBFBD><EFBCB7>唳旿<E594B3>?docker run --rm -v redcap-db-data:/data -v $(pwd):/backup \
ubuntu tar xzf /backup/redcap-db-backup.tar.gz -C /
```
---
## <20><><><E98A9D><EFBFBD><EFBFBD>蝵脫<E89DB5>蝔页<E89D94>霂衣<E99C82>甇仿炊嚗?
### 7.1 <20>嗆挾1嚗𡁜<E59A97><EFBFBD><E686AD>蝵格<E89DB5>隞塚<E99A9E>15<31><35><EFBFBD>嚗?
#### 甇仿炊1嚗𡁜<E59A97>撱粹★<E7B2B9>桃𤌍敶?```powershell
# 餈𥕦<E9A488>憿寧𤌍<E5AFA7>寧𤌍敶?cd D:\MyCursor\AIclinicalresearch
# <20>𥕦遣Docker<65>函蔡<E587BD><EFBFBD>
New-Item -ItemType Directory -Path "redcap-docker-dev" -Force
cd redcap-docker-dev
# <20>𥕦遣摮鞟𤌍敶?New-Item -ItemType Directory -Path "config\apache" -Force
New-Item -ItemType Directory -Path "config\php" -Force
New-Item -ItemType Directory -Path "scripts" -Force
```
#### 甇仿炊2嚗𡁶<E59A97><F0A181B6><EFBFBD>蝵格<E89DB5>隞?```powershell
# 甇斗郊撉文<E69289><E69687>梯䌊<E6A2AF><EFBFBD><E585B8>𡁏𧋦摰峕<E691B0>嚗𣬚<E59A97><F0A3AC9A><EFBFBD>
# - docker-compose.yml
# - Dockerfile.redcap
# - .env
# - config/apache/redcap.conf
# - config/php/php.ini
# - config/database.php
# - scripts/*.ps1
```
#### 甇仿炊3嚗𡁻<E59A97><EFBFBD>EDCap皞鞟<E79A9E>
```powershell
# 蝖株恕皞鞟<E79A9E>摮睃銁
Test-Path ..\redcap15.8.0\redcap\install.php
# 颲枏枂嚗関rue嚗<65>”蝷箸<E89DB7><E7AEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```
---
### 7.2 <20>嗆挾2嚗𡁜鍳<F0A1819C>典捆<E585B8><EFBFBD>10<31><30><EFBFBD>嚗?
#### 甇仿炊1嚗𡁏<E59A97>撱粹<E692B1><E7B2B9>?```powershell
# <20><><EFBFBD><EFBFBD>銋兴EDCap<61>𨅯<EFBFBD>
docker-compose build
# 颲枏枂蝷箔<E89DB7>嚗?# Building redcap-web...
# Step 1/10 : FROM php:8.1-apache
# ...
# Successfully built abc123def456
# Successfully tagged redcap-docker-dev_redcap-web:latest
```
#### 甇仿炊2嚗𡁜鍳<F0A1819C><EFBFBD><E586BD>匧捆<E58CA7>?```powershell
# <20>𤾸蝱<F0A4BEB8>臬𢆡
docker-compose up -d
# 颲枏枂蝷箔<E89DB7>嚗?# Creating network "redcap-docker-dev_redcap-network" ... done
# Creating volume "redcap-docker-dev_redcap-db-data" ... done
# Creating redcap-mysql ... done
# Creating redcap-web ... done
# Creating redcap-phpmyadmin ... done
```
#### 甇仿炊3嚗𡁶<E59A97><EFBFBD>ySQL撠梁貌
```powershell
# <20><EFBFBD>MySQL<51><EFBFBD>
docker-compose logs redcap-db | Select-String "ready for connections"
# 蝑匧<E89D91><E58CA7><EFBFBD>嚗?# [Server] /usr/sbin/mysqld: ready for connections.
# 撱箄悅蝑匧<E89D91>30蝘?Start-Sleep -Seconds 30
```
#### 甇仿炊4嚗帋耨憭齿<E686AD>隞嗆<E99A9E><E59786>?```powershell
# <20>芸𢆡靽桀<E99DBD><E6A180><EFBFBD><EFBFBD><EFBFBD>𡁏𧋦嚗<F0A78BA6><EFBFBD><E6AD87><EFBFBD>究etup-redcap.ps1銝哨<E98A9D>
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/edocs
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/temp
docker exec -it redcap-web chown -R www-data:www-data /var/www/html/modules
```
#### 甇仿炊5嚗𡁻<E59A97><EFBFBD><EFBFBD>函𠶖<E587BD>?```powershell
# 璉<><E79289><EFBFBD><E4BAA4>匧捆<E58CA7><EFBFBD>銵𣬚𠶖<F0A3AC9A>?docker-compose ps
# 摨磰砲<E7A3B0><EFBFBD>嚗?# Name State Ports
# redcap-mysql Up 0.0.0.0:3306->3306/tcp
# redcap-web Up 0.0.0.0:8080->80/tcp
# redcap-phpmyadmin Up 0.0.0.0:8081->80/tcp
```
---
### 7.3 <20>嗆挾3嚗鑹EDCap摰㕑<E691B0>嚗?0<><30><EFBFBD>嚗?
#### 甇仿炊1嚗朞挪<E69C9E><EFBFBD><EFBFBD><E98B86>撖?```
<EFBFBD><EFBFBD>瘚讛<EFBFBD><EFBFBD>刻挪<EFBFBD><EFBFBD>
http://localhost:8080/install.php
```
#### 甇仿炊2嚗𡁶頂蝏蠘<E89D8F><EFBFBD><E79899><EFBFBD>?```
REDCap隡朞䌊<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>?PHP<48><50>𧋦 8.1.x
<EFBFBD>?MySQL餈墧𦻖
<EFBFBD>?PHP<48><EFBFBD>嚗éysqli, gd, zip, etc.嚗?<3F>?<3F><><EFBFBD><E8BEA3><EFBFBD>嚗Ềdocs, temp<6D><EFBFBD>嚗?
<EFBFBD><EFBFBD><EFBFBD>厩滯<EFBFBD><EFBFBD>嚗峕覔<EFBFBD><EFBFBD>蝷箔耨憭?```
#### 甇仿炊3嚗𡁏㺭<F0A1818F><EFBFBD><E6A180>滨蔭
```
MySQL Hostname: redcap-db
MySQL Database: redcap
MySQL Username: redcap_user
MySQL Password: redcap_pass_456
Table Prefix: (<28>嗵征嚗䔶蝙<E494B6><EFBFBD>霈?
Salt: iit_dev_salt_2026_redcap_v15
```
#### 甇仿炊4嚗𡁶恣<F0A181B6><E681A3><EFBFBD>韐行<E99F90>
```
Username: admin
Password: Admin@123456 # 撘<><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD>?Email: dev@example.com
First Name: Admin
Last Name: User
```
#### 甇仿炊5嚗锭MTP<54>滨蔭
```
<EFBFBD>㗇𥋘嚗锭kip SMTP Configuration嚗<6E>歲餈<E6ADB2><E9A488>
<EFBFBD><EFBFBD>嚗鋽ay 2-8銝漤<E98A9D><EFBFBD><E996AC>隞嗅<E99A9E><E59785>?```
#### 甇仿炊6嚗𡁜<E59A97><F0A1819C>𣂼<EFBFBD>鋆?```
<EFBFBD>孵稬 "Complete Installation"
蝑匧<EFBFBD><EFBFBD>唳旿摨栞”<EFBFBD>𥕦遣嚗<EFBFBD>漲2-3<><33><EFBFBD>嚗?<3F><EFBFBD> "Installation Complete!" 瘨<><E798A8>
```
#### 甇仿炊7嚗𡁻<E59A97>甈∠蒈敶?```
霈輸䔮嚗冴ttp://localhost:8080/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>admin
<EFBFBD><EFBFBD>嚗鋫dmin@123456
<EFBFBD>?<3F><EFBFBD><E9A483>𣂼<EFBFBD>嚗𣬚<E59A97><F0A3AC9A>訌EDCap銝駁△
```
---
### 7.4 <20>嗆挾4嚗𡁜<E59A97>撱箸<E692B1>霂閖★<E99696><EFBFBD>30<33><30><EFBFBD>嚗?
#### 甇仿炊1嚗𡁏鰵撱粹★<E7B2B9>?```
1. <20>孵稬 "New Project"
2. 憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>嚗䥑IT Test Project
3. 憿寧𤌍<E5AFA7><EFBFBD>嚗鑹esearch
4. 璅⊥踎嚗鍃mpty Project嚗<74><E59A97>憭游<E686AD>撱綽<E692B1>
5. <20>孵稬 "Create Project"
```
#### 甇仿炊2嚗朞挽霈⊥㺭<E28AA5><EFBFBD><E6A180>?
**<2A>𥕦遣銵典<E98AB5>1嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD>Demographics嚗?*
```
摮埈挾<EFBFBD>𡑒”嚗?1. record_id (Record ID)
- 蝐餃<E89D90>嚗関ext Box
- 撉諹<E69289>嚗䥑nteger
- <20><><EFBFBD>蝚佗<E89D9A>Yes
2. patient_name (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
- 蝐餃<E89D90>嚗関ext Box
- <20><><EFBFBD>蝚佗<E89D9A>Yes
3. age (撟湧<E6929F>)
- 蝐餃<E89D90>嚗関ext Box
- 撉諹<E69289>嚗䥑nteger
- <20><>凒嚗?-120
4. gender (<28><EFBFBD>)
- 蝐餃<E89D90>嚗鑹adio Buttons
- <20>厰★嚗?, <20>?| 2, 憟?
5. enrollment_date (<28><EFBFBD><E4BAA6><EFBFBD>)
- 蝐餃<E89D90>嚗関ext Box
- 撉諹<E69289>嚗鋽ate (Y-M-D)
```
**<2A>𥕦遣銵典<E98AB5>2嚗𡁻<E59A97>霈輯扇敶𤏪<E695B6>Follow-up嚗?*
```
摮埈挾<EFBFBD>𡑒”嚗?1. followup_date (<28>讛挪<E8AE9B><EFBFBD>)
- 蝐餃<E89D90>嚗関ext Box
- 撉諹<E69289>嚗鋽ate (Y-M-D)
2. followup_type (<28>讛挪蝐餃<E89D90>)
- 蝐餃<E89D90>嚗鋽ropdown
- <20>厰★嚗?, <20><EFBFBD> | 2, <20><EFBFBD> | 3, 蝥蹂<E89DA5>
3. adverse_event (銝滩<E98A9D>鈭衤辣)
- 蝐餃<E89D90>嚗枠es-No
- 暺䁅恕嚗鐭o
4. notes (憭<>釣)
- 蝐餃<E89D90>嚗鐭otes Box (Paragraph Text)
```
#### 甇仿炊3嚗𡁜<E59A97>撱箸<E692B1>霂閙㺭<E99699>?```
瘛餃<EFBFBD>5<EFBFBD><EFBFBD>霂訫<EFBFBD>霂閗<EFBFBD><EFBFBD>扇敶𤏪<EFBFBD>
Record 1:
- patient_name: 撘牐<E69298>
- age: 45
- gender: <20>?- enrollment_date: 2025-12-01
Record 2:
- patient_name: <20>𤾸<EFBFBD>
- age: 52
- gender: 憟?- enrollment_date: 2025-12-05
... (<28><>裦3<E8A3A6>?
```
#### 甇仿炊4嚗𡁜鍳<F0A1819C>杗PI霈輸䔮
```
1. 餈𥕦<E9A488>憿寧𤌍
2. 撌虫儒<E899AB>𨅯<EFBFBD> <20>?Applications <20>?API
3. <20>孵稬 "Enable API Access"
4. <20><EFBFBD>?"Export"<22>?Import" <20><><EFBFBD>
5. <20>孵稬 "Request API Token"
6. 蝟餌<E89D9F><E9A48C><EFBFBD><EFBFBD>Token嚗<6E><EFBFBD>冽鸌<E586BD><E9B88C><EFBFBD><EFBFBD>牐蛹<E78990>舐恣<E88890><E681A3><EFBFBD>嚗?7. 憭滚<E686AD>Token靽嘥<E99DBD>嚗? 蝷箔<E89DB7>嚗鋫1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
```
#### 甇仿炊5嚗𡁏<E59A97>霂𧭈PI靚<49>
```bash
# PowerShell瘚贝<E7989A>撖澆枂<E6BE86>唳旿
$apiUrl = "http://localhost:8080/api/"
$token = "YOUR_API_TOKEN_HERE"
$body = @{
token = $token
content = 'record'
format = 'json'
type = 'flat'
}
Invoke-RestMethod -Uri $apiUrl -Method Post -Body $body
# 摨磰砲餈𥪜<E9A488>JSON<4F><EFBFBD><EFBFBD><E59A97><EFBFBD>?<3F><EFBFBD>霂閙㺭<E99699>?```
---
### 7.5 <20>嗆挾5嚗𡁻<E59A97>蝵桀<E89DB5>蝡舐㴓憓<E3B493><E68693><EFBFBD>𧶏<EFBFBD>15<31><35><EFBFBD>嚗?
#### 甇仿炊1嚗𡁏凒<F0A1818F><EFBFBD>蝡?env
```bash
# AIclinicalresearch/backend/.env
# ========== REDCap<61>滨蔭嚗<E894AD>鰵憓痹<E68693>==========
REDCAP_API_URL=http://localhost:8080/api/
REDCAP_API_TOKEN=A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6
REDCAP_PROJECT_ID=1
# 瘜冽<E7989C>嚗饝ocalhost<73>求ocker摰孵膥<E5ADB5><E886A5><EFBFBD><EFBFBD>㺿銝榴ost.docker.internal
# 憒<><E68692><EFBFBD>𡒊垢銋笔銁Docker<65><72><EFBFBD>摨𥪯蝙<F0A5AAAF>典捆<E585B8>沉P<E6B289>𡝗<EFBFBD><F0A19D97><EFBFBD>
```
#### 甇仿炊2嚗𡁜<E59A97>撱態PI瘚贝<E7989A><E8B49D>𡁏𧋦
```typescript
// backend/src/modules/iit-manager/test-redcap-api.ts
import axios from 'axios';
const REDCAP_API_URL = process.env.REDCAP_API_URL || 'http://localhost:8080/api/';
const REDCAP_API_TOKEN = process.env.REDCAP_API_TOKEN || '';
async function testREDCapAPI() {
console.log('<27><> Testing REDCap API Connection...');
try {
const response = await axios.post(REDCAP_API_URL, new URLSearchParams({
token: REDCAP_API_TOKEN,
content: 'record',
format: 'json',
type: 'flat'
}));
console.log('<27>?API Connection Successful!');
console.log(`<EFBFBD><EFBFBD> Retrieved ${response.data.length} records`);
console.log('Sample Record:', response.data[0]);
} catch (error: any) {
console.error('<27>?API Connection Failed:', error.message);
}
}
testREDCapAPI();
```
#### 甇仿炊3嚗朞<E59A97>銵峕<E98AB5>霂?```powershell
cd D:\MyCursor\AIclinicalresearch\backend
npx ts-node src/modules/iit-manager/test-redcap-api.ts
# 憸<><E686B8>颲枏枂嚗?# <20><> Testing REDCap API Connection...
# <20>?API Connection Successful!
# <20><> Retrieved 5 records
# Sample Record: { record_id: '1', patient_name: '撘牐<E69298>', ... }
```
---
### 7.6 <20>函蔡摰峕<E691B0>撉諹<E69289><EFBFBD><E79A9C>
```
撉諹<EFBFBD>憿? <20><EFBFBD>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>?Docker摰孵膥<E5ADB5><EFBFBD>餈鞱<E9A488> [ ]
<EFBFBD>?MySQL<51>唳旿摨枏虾餈墧𦻖 [ ]
<EFBFBD>?REDCap摰㕑<E691B0><E39591>𣂼<EFBFBD> [ ]
<EFBFBD>?蝞∠<E89D9E><E288A0>䁅揭<E48185>瑕虾<E79195><EFBFBD> [ ]
<EFBFBD>?瘚贝<E7989A>憿寧𤌍撌脣<E6928C>撱? [ ]
<EFBFBD>?API Token撌脩<E6928C><E884A9>? [ ]
<EFBFBD>?API靚<49>鍂瘚贝<E7989A><E8B49D><EFBFBD> [ ]
<EFBFBD>?<3F>𡒊垢<F0A1928A><EFBFBD><E887AC><EFBFBD>撌脤<E6928C>蝵? [ ]
<EFBFBD>?phpMyAdmin<69>航挪<E888AA><EFBFBD><E6AEB7><EFBFBD><EFBFBD> [ ]
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗諹”蝷粹<EFBFBD>蝵脫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```
---
## <20><20><EFBFBD><E68092><EFBFBD>蝏渡恣<E6B8A1><E681A3><EFBFBD><EFBFBD>?
### 8.1 <20>臬𢆡<E887AC>𡁏𧋦嚗ìtart-redcap.ps1嚗?
```powershell
#!/usr/bin/env pwsh
# start-redcap.ps1 - <20>臬𢆡REDCap撘<70><E69298>𤑳㴓憓?
Write-Host "<22><> Starting REDCap Development Environment..." -ForegroundColor Cyan
# 璉<><E79289>主ocker<65>臬炏餈鞱<E9A488>
$dockerRunning = docker info 2>&1 | Select-String "Server Version"
if (-not $dockerRunning) {
Write-Host "<22>?Docker is not running. Please start Docker Desktop." -ForegroundColor Red
exit 1
}
# <20>臬𢆡摰孵膥
docker-compose up -d
# 蝑匧<E89D91>MySQL撠梁貌
Write-Host "<22>?Waiting for MySQL to be ready..." -ForegroundColor Yellow
Start-Sleep -Seconds 10
docker-compose logs redcap-db | Select-String "ready for connections"
# <20>曄內<E69B84>滚𦛚<E6BB9A><EFBFBD>?Write-Host ""
Write-Host "<22>?REDCap Environment Started!" -ForegroundColor Green
Write-Host ""
Write-Host "<22><> Service URLs:" -ForegroundColor Cyan
Write-Host " REDCap: http://localhost:8080" -ForegroundColor White
Write-Host " phpMyAdmin: http://localhost:8081" -ForegroundColor White
Write-Host ""
Write-Host "<22><> Container Status:" -ForegroundColor Cyan
docker-compose ps
```
### 8.2 <20>𨀣迫<F0A880A3>𡁏𧋦嚗ìtop-redcap.ps1嚗?
```powershell
#!/usr/bin/env pwsh
# stop-redcap.ps1 - <20>𨀣迫REDCap撘<70><E69298>𤑳㴓憓?
Write-Host "<22><EFBFBD> Stopping REDCap Development Environment..." -ForegroundColor Yellow
# <20>𨀣迫摰孵膥嚗<E886A5><E59A97><EFBFBD>蹱㺭<E8B9B1><EFBFBD>
docker-compose stop
Write-Host "<22>?REDCap Environment Stopped!" -ForegroundColor Green
Write-Host ""
Write-Host "<22>働 Data volumes are preserved." -ForegroundColor Cyan
Write-Host " Run 'start-redcap.ps1' to restart." -ForegroundColor Cyan
```
### 8.3 <20><EFBFBD><E4BAA6><EFBFBD><E4BA99>𡁏𧋦嚗ēogs-redcap.ps1嚗?
```powershell
#!/usr/bin/env pwsh
# logs-redcap.ps1 - <20><EFBFBD>REDCap<61><EFBFBD>
param(
[string]$Service = "",
[switch]$Follow
)
Write-Host "<22><> REDCap Container Logs" -ForegroundColor Cyan
Write-Host ""
if ($Follow) {
# 摰墧𧒄頝蠘葵<E8A098><EFBFBD>
if ($Service) {
docker-compose logs -f $Service
} else {
docker-compose logs -f
}
} else {
# <20>曄內<E69B84><E585A7>餈烐𠯫敹? if ($Service) {
docker-compose logs --tail=50 $Service
} else {
docker-compose logs --tail=50
}
}
```
### 8.4 皜<><E79A9C><EFBFBD>𡁏𧋦嚗Ếlean-redcap.ps1嚗?
```powershell
#!/usr/bin/env pwsh
# clean-redcap.ps1 - 皜<><E79A9C>REDCap<61><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿頣<E99BBF>嚗?
Write-Host "<22><>儭? REDCap Environment Cleanup" -ForegroundColor Red
Write-Host ""
Write-Host "<22>𩤃<EFBFBD> WARNING: This will DELETE ALL DATA!" -ForegroundColor Red
Write-Host ""
$confirm = Read-Host "Type 'YES' to confirm deletion"
if ($confirm -ne "YES") {
Write-Host "<22>?Cleanup cancelled." -ForegroundColor Yellow
exit 0
}
Write-Host ""
Write-Host "<22><>儭? Removing containers..." -ForegroundColor Yellow
docker-compose down
Write-Host "<22><>儭? Removing volumes (DATA LOSS!)..." -ForegroundColor Red
docker-compose down --volumes
Write-Host "<22><>儭? Removing images..." -ForegroundColor Yellow
docker rmi redcap-docker-dev_redcap-web
Write-Host ""
Write-Host "<22>?Cleanup Complete!" -ForegroundColor Green
Write-Host " Run 'setup-redcap.ps1' to redeploy." -ForegroundColor Cyan
```
---
## <20>㴓 銋腈<E98A8B><E88588><EFBFBD>蝑𡝗<E89D91><F0A19D97>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脣<EFBFBD>嚗諹窈蝖株恕隞乩<EFBFBD><EFBFBD><EFBFBD>嚗?
### 9.1 敹<><E695B9><EFBFBD><EFBFBD>
| <20><EFBFBD>憿?| <20>厰★ | <20><EFBFBD> | <20><EFBFBD><E587BD>㗇𥋘 |
|--------|------|------|---------|
| **<2A>函蔡雿滨蔭** | `redcap-docker-dev/` | <20>?<3F><EFBFBD> | [ ] |
| **REDCap蝡臬藁** | 8080 / <20><EFBFBD> | 8080 | [ ] |
| **MySQL蝡臬藁** | 3306 / <20><EFBFBD> | 3306 | [ ] |
| **phpMyAdmin** | <20><>閬?/ 銝漤<E98A9D>閬?| <20><>閬?| [ ] |
| **SMTP<54>滨蔭** | 頝唾<E9A09D> / <20>滨蔭 | 頝唾<E9A09D> | [ ] |
| **<2A>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>?* | <20><EFBFBD><E8B3A2>?/ 蝏穃<E89D8F><E7A983><EFBFBD>蝸 | <20><EFBFBD><E8B3A2>?| [ ] |
### 9.2 <20><EFBFBD><E887AC><EFBFBD>
```bash
# 蝖株恕隞乩<E99A9E><EFBFBD><E69296><EFBFBD><E59A97><EFBFBD>𤑳㴓憓<E3B493><E68693>
MYSQL_ROOT_PASSWORD=redcap_root_123 # <20><EFBFBD> [ ]
MYSQL_DATABASE=redcap # <20><EFBFBD> [ ]
MYSQL_USER=redcap_user # <20><EFBFBD> [ ]
MYSQL_PASSWORD=redcap_pass_456 # <20><EFBFBD> [ ]
# Salt<6C><EFBFBD><E6BD98><EFBFBD><EFBFBD><E59A97><EFBFBD>西挽蝵桐<E89DB5><E6A190>舀凒<E88880><EFBFBD>
REDCAP_SALT=iit_dev_salt_2026_redcap_v15 # <20><EFBFBD> [ ]
```
### 9.3 蝡臬藁<E887AC><EFBFBD><EFBFBD><E79289>?
```powershell
# 霂瑕<E99C82>餈鞱<E9A488>隞乩<E99A9E><E4B9A9>賭誘璉<E8AA98><E79289>亦垢<E4BAA6>?netstat -ano | findstr :8080 # REDCap
netstat -ano | findstr :3306 # MySQL
netstat -ano | findstr :8081 # phpMyAdmin
# 憒<><E68692><EFBFBD><EFBFBD><EFBFBD><E89D92>霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡臬藁嚗?# REDCap蝡臬藁<E887AC>嫣蛹嚗噔______
# MySQL蝡臬藁<E887AC>嫣蛹嚗噔______
# phpMyAdmin蝡臬藁<E887AC>嫣蛹嚗噔______
```
---
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD>蝏剜郊撉?
### 10.1 Day 2撘<32><E69298><EFBFBD>憭?
<EFBFBD>函蔡摰峕<EFBFBD><EFBFBD>𠬍<EFBFBD>蝡见朖<EFBFBD>臭誑撘<EFBFBD>憪页<EFBFBD>
```
<EFBFBD>?REDCap API Adapter撘<72><E69298>? - exportRecords() 摰䂿緵
- importRecords() 摰䂿緵
- exportMetadata() 摰䂿緵
<EFBFBD>?<3F><EFBFBD>API瘚贝<E7989A>
- 雿輻鍂摰鮋<E691B0>API Token
- 撉諹<E69289>JSON<4F><EFBFBD><E6BB9A><EFBFBD>
- 瘚贝<E7989A><E8B49D>躰秤憭<E7A7A4><E686AD>
<EFBFBD>?SyncManager撘<72><E69298>? - 瘛瑕<E7989B><E79195>峕郊璅<E79285>嚗Áebhook + Polling嚗? - <20>唳旿憓鮋<E68693><E9AE8B><EFBFBD>
- pg-boss隞餃𦛚靚<F0A69B9A>
```
### 10.2 External Module撘<65><E69298>𡢅<EFBFBD>Day 8嚗?
```
敶㯄<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䫿xternal Module<6C><EFBFBD>
1. <20>?redcap15.8.0/redcap/modules/ <20>𥕦遣璅<E79285><E288AA><EFBFBD>
2. 蝻硋<E89DBB> config.json <20>?Module.php
3. 摰孵膥隡朞䌊<E69C9E><EFBFBD>頧踝<E9A0A7><E8B89D>牐蛹雿輻鍂<E8BCBB><EFBFBD><EFBFBD><E692A0>
4. REDCap<61><EFBFBD>銝剖<E98A9D><E58996>舐鍂璅<E79285>
```
### 10.3 餈<><EFBFBD><EFBFBD>鈭抒㴓憓<E3B493><E68693><EFBFBD>芣䔉嚗?
```
<EFBFBD>砍𧑐撘<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠬍<EFBFBD>
1. <20>券燵<E588B8><EFBFBD>ECS<43><53><EFBFBD>摰㕑<E691B0>REDCap嚗𡿨AMP嚗?2. <20>滨蔭RDS MySQL嚗<4C><E59A97><EFBFBD>舐鍂嚗?3. <20>滨蔭OSS摮睃<E691AE>嚗Ềdocs<63><EFBFBD>嚗?4. <20>滨蔭SSL霂<4C>髡嚗𡿨et's Encrypt嚗?5. <20>滨蔭SMTP嚗<50><EFBFBD><EFBFBD>DirectMail嚗?6. 憭滚<E686AD>External Module<6C><EFBFBD>鈭抒㴓憓?7. 撖澆<E69296>瘚贝<E7989A>憿寧𤌍嚗<F0A48C8D><E59A97>隞𤾸仍<F0A4BEB8>𥕦遣嚗?```
---
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>獢?
### 11.1 憿寧𤌍<E5AFA7><F0A48C8D>
- [REDCap鈭峕活撘<E6B4BB><E69298>烐楛摨行<E691A8><E8A18C>㻩(./REDCap%20鈭峕活撘<E6B4BB><E69298>烐楛摨行<E691A8><E8A18C>?md) - REDCap<61><EFBFBD><E59786>袏M撘<4D><E69298>?- [REDCap<61>函蔡<E587BD><E894A1><EFBFBD>銝𡒊㴓憓<E3B493><E68693><EFBFBD>(./02-REDCap<61>函蔡<E587BD><E894A1><EFBFBD>銝𡒊㴓憓<E3B493><E68693>瘙?md) - <20>煺漣<E785BA><EFBFBD><E887AC>函蔡
- [IIT Manager Agent<6E><74><EFBFBD>舀䲮獢?V1.1](../IIT%20Manager%20Agent/02-<2D><><EFBFBD>航挽霈?IIT%20Manager%20Agent%20摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD><E887AC>烐䲮獢?20(V1.1).md) - REDCap<61><70><EFBFBD><EFBFBD><EFBFBD>
- [MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>騟(../IIT%20Manager%20Agent/04-撘<><E69298>𤏸恣<F0A48FB8>?MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>?md) - Day 2隞餃𦛚
### 11.2 摰䀹䲮<E480B9><E4B2AE>
- REDCap摰条<E691B0>嚗冴ttps://projectredcap.org/
- REDCap API<50><49>﹝嚗冴ttps://redcap.vanderbilt.edu/api/help/
- External Module<6C><65>﹝嚗冴ttps://github.com/vanderbilt-redcap/external-module-framework-docs
### 11.3 Docker<65><72>
- Docker Compose嚗冴ttps://docs.docker.com/compose/
- Docker PHP<48>𨅯<EFBFBD>嚗冴ttps://hub.docker.com/_/php
- Docker MySQL<51>𨅯<EFBFBD>嚗冴ttps://hub.docker.com/_/mysql
---
## <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𨀣<EFBFBD><F0A880A3>?
### 12.1 摰孵膥<E5ADB5><EFBFBD><E4ADBE>臬𢆡
```powershell
# 璉<><E79289>主ocker<65><EFBFBD>?docker info
# <20><EFBFBD>摰孵膥<E5ADB5><EFBFBD>
docker-compose logs
# 璉<><E79289>亦垢<E4BAA6><E59EA2><EFBFBD><EFBFBD>?netstat -ano | findstr :8080
netstat -ano | findstr :3306
# <20>滚遣摰孵膥
docker-compose down
docker-compose up -d --force-recreate
```
### 12.2 <20><EFBFBD>霈輸䔮REDCap
```powershell
# 璉<><E79289>亙捆<E4BA99><EFBFBD>銵𣬚𠶖<F0A3AC9A>?docker-compose ps
# 璉<><E79289>丕pache<68><EFBFBD>
docker-compose logs redcap-web
# 餈𥕦<E9A488>摰孵膥霂𦠜鱏
docker exec -it redcap-web bash
curl localhost
```
### 12.3 <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?
```powershell
# 璉<><E79289>仗ySQL<51><EFBFBD>
docker-compose logs redcap-db
# 瘚贝<E7989A>MySQL餈墧𦻖
docker exec -it redcap-mysql mysql -uredcap_user -predcap_pass_456 -e "SHOW DATABASES;"
# 璉<><E79289>卡atabase.php<68>滨蔭
docker exec -it redcap-web cat /var/www/html/redcap/database.php
```
### 12.4 API靚<49>鍂憭梯揖
```powershell
# 撉諹<E69289>API Token
# REDCap <20>?Applications <20>?API <20>?<3F><EFBFBD>Token
# 瘚贝<E7989A>API餈墧𦻖
curl -X POST http://localhost:8080/api/ `
-d "token=YOUR_TOKEN" `
-d "content=version"
# 摨磰砲餈𥪜<E9A488>REDCap<61><70>𧋦<EFBFBD>?```
---
## <20>?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵脫<E89DB5><E884AB><EFBFBD><EFBFBD>敹?
敶𤘪<EFBFBD><EFBFBD><EFBFBD>隞乩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧒄嚗諹”蝷粹<EFBFBD>蝵脫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```
<EFBFBD>?<3F><EFBFBD>摰孵膥<E5ADB5><EFBFBD><E59786><EFBFBD><EFBFBD><E695B9>嚗? - redcap-mysql: Up
- redcap-web: Up
潃?颲<>𨭌摰孵膥<E5ADB5><EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E99A9E><EFBFBD>𤑳㴓憓<E3B493><E68693>
- redcap-phpmyadmin: Up嚗<70><EFBFBD><EFBFBD><E39A81>煺漣<E785BA><EFBFBD><EFBFBD>鍂嚗?
<EFBFBD>?<3F>滚𦛚<E6BB9A>航挪<E888AA>? - http://localhost:8080 <20>?REDCap<61><EFBFBD>憿蛛<E686BF><E89B9B><EFBFBD>嚗? - http://localhost:8081 <20>?phpMyAdmin<69>屸𢒰嚗<F0A292B0><EFBFBD><EFBFBD><EFBFBD><E99D9A><EFBFBD><EFBFBD>
<EFBFBD>?<3F><EFBFBD>撉諹<E69289>
- 蝞∠<E89D9E><E288A0>条蒈敶閙<E695B6><E99699>? - 瘚贝<E7989A>憿寧𤌍撌脣<E6928C>撱? - API Token撌脩<E6928C><E884A9>? - API靚<49>鍂餈𥪜<E9A488><F0A5AA9C>唳旿
<EFBFBD>?<3F>𡒊垢<F0A1928A><E59EA2><EFBFBD>
- .env<6E>滨蔭摰峕<E691B0>
- API瘚贝<E7989A><E8B49D>𡁏𧋦<F0A1818F><EFBFBD>
- Node.js<6A>航挪<E888AA>娜EDCap
霂湔<EFBFBD>嚗?- phpMyAdmin<69>臬虾<E887AC><EFBFBD><EFBFBD><E69298>𤏸<EFBFBD>霂訫極<E8A8AB>?- <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>摰匧<E691B0><E58CA7><EFBFBD><EFBFBD>摨𠉛<E691A8><F0A0899B>?- 銝滚蔣<E6BB9A>㣔EDCap<61><EFBFBD><E8A9A8><EFBFBD>
```
---
## <20><>儭?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鈭抒㴓憓<E3B493><E68693>蝵脫<E89DB5><E884AB>?
### 14.1 <20>砍𧑐撘<F0A79190><E69298>?<3F>?<3F>煺漣<E785BA><EFBFBD><EFBFBD>宏頝臬<E9A09D>
```yaml
<EFBFBD>嗆挾1: <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓<E3B493><E68693>敶枏<E695B6>嚗?<3F><EFBFBD> <20><EFBFBD>嚗鋫PI撘<49><E69298><EFBFBD><E3BBAB>M靚<4D><E99D9A>
<EFBFBD><EFBFBD> <20><EFBFBD>嚗阳indows/Mac + Docker Desktop
<EFBFBD><EFBFBD> <20>唳旿摨橒<E691A8>Docker MySQL摰孵膥
<EFBFBD><EFBFBD><>𨭌撌亙<E6928C>嚗䮝hpMyAdmin嚗<6E><E59A97>霂𤏪<E99C82>
<EFBFBD><EFBFBD> <20>鞉𧋦嚗?0
<EFBFBD>嗆挾2: <20><EFBFBD>鈭烐<E988AD>霂閧㴓憓?<3F><EFBFBD> <20><EFBFBD>嚗𡁻<E59A97><F0A181BB><EFBFBD>霂𨰻<E99C82><F0A8B0BB><EFBFBD><EFBFBD>瘚贝<E7989A>
<EFBFBD><EFBFBD> <20>滚𦛚<E6BB9A><EFBFBD><E58981><EFBFBD>鈭䫿CS嚗?<3F>?GB嚗?<3F><EFBFBD> <20>唳旿摨橒<E691A8><E6A992><EFBFBD>鈭駵DS MySQL<51><EFBFBD><E7AE87>?<3F><EFBFBD> 摮睃<E691AE>嚗帋<E59A97><E5B88B><EFBFBD>40GB ESSD嚗?<3F><EFBFBD> <20><EFBFBD>嚗魩est-redcap.yourdomain.com
<EFBFBD><EFBFBD> <20>鞉𧋦嚗块?00-700/<2F>?
<EFBFBD>嗆挾3: <20><EFBFBD>鈭𤑳<E988AD>鈭抒㴓憓?<3F><EFBFBD> <20><EFBFBD>嚗𡁏迤撘讐<E69298>鈭扯<E988AD>銵?<3F><EFBFBD> <20>滚𦛚<E6BB9A><EFBFBD><E58981><EFBFBD>鈭䫿CS嚗?<3F>?GB嚗?<3F><EFBFBD> <20>唳旿摨橒<E691A8><E6A992><EFBFBD>鈭駵DS MySQL擃睃虾<E79D83><EFBFBD>
<EFBFBD><EFBFBD> 摮睃<E691AE>嚗帋<E59A97><E5B88B><EFBFBD>100GB ESSD嚗?+ OSS憭<53>
<EFBFBD><EFBFBD> 韐蠘蝸<E8A098><E89DB8>﹛嚗𡁻燵<F0A181BB><EFBFBD>SLB + SSL霂<4C>
<EFBFBD><EFBFBD> <20>烐綉嚗鋴loudMonitor + <20><EFBFBD><E4BA99>滚𦛚
<EFBFBD><EFBFBD> <20><EFBFBD>嚗鬏edcap.yourdomain.com
<EFBFBD><EFBFBD> <20>鞉𧋦嚗块?500-2000/<2F>?
<EFBFBD>嗆挾4: <20>駁堺蝘<E5A0BA><E89D98><EFBFBD><EFBFBD>蝵?<3F><EFBFBD> <20><EFBFBD>嚗𡁜龫<F0A1819C><EFBFBD>蝵𤏸<E89DB5>銵?<3F><EFBFBD> <20>滚𦛚<E6BB9A><EFBFBD><E58981>駁堺<E9A781>𣂷<EFBFBD><F0A382B7>滚𦛚<E6BB9A>?<3F><EFBFBD> <20>唳旿摨橒<E691A8>Docker MySQL <20>?<3F>駁堺MySQL<51>滚𦛚<E6BB9A>?<3F><EFBFBD> <20>函蔡<E587BD><EFBFBD>嚗鋽ocker蝳餌瑪<E9A48C>𨅯<EFBFBD><F0A885AF>?<3F><EFBFBD> 鈭支<E988AD><E694AF><EFBFBD><EFBFBD><E98A9D><EFBFBD>蝵脰<E89DB5><E884B0>?+ <20>寡悌<E5AFA1><EFBFBD>
<EFBFBD><EFBFBD> <20>鞉𧋦嚗帋<E59A97>甈⊥<E79488><EFBFBD>蝵脰晶<E884B0>?```
### 14.2 <20>煺漣<E785BA><EFBFBD>Docker<65>滨蔭靚<E894AD>
#### 靚<>㟲1嚗𡁶宏<F0A181B6>小hpMyAdmin
```yaml
# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦
services:
redcap-db:
# ... MySQL<51>滨蔭靽脲<E99DBD>銝滚<E98A9D>
redcap-web:
# ... REDCap<61>滨蔭靽脲<E99DBD>銝滚<E98A9D>
# <20>?蝘駁膄phpMyAdmin嚗<6E><E59A97><EFBFBD><EFBFBD><E588BB><EFBFBD>嚗? # phpmyadmin:
# ...
# <20>煺漣<E785BA><EFBFBD><E887AC>唳旿摨梶恣<E6A2B6><E681A3>䲮撘𧶏<E69298>
# 1. 雿輻鍂<E8BCBB><EFBFBD>鈭駵DS<44><EFBFBD><E689B9>?# 2. SSH餈墧𦻖ECS<43>𦒘蝙<F0A69298>皂ysql<71>賭誘銵?# 3. <20><EFBFBD><E783BE><EFBFBD>MS<4D>唳旿蝞∠<E89D9E><E288A0>滚𦛚
```
#### 靚<>㟲2嚗帋蝙<E5B88B>沖DS MySQL
```yaml
# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦
services:
# <20>?蝘駁膄redcap-db摰孵膥嚗<E886A5><EFBFBD>沖DS嚗? # redcap-db:
# ...
redcap-web:
image: redcap-web:v1.0
environment:
# 餈墧𦻖<E5A2A7><EFBFBD>鈭駵DS
REDCAP_DB_HOST: rm-xxxxxx.mysql.rds.aliyuncs.com
REDCAP_DB_PORT: 3306
REDCAP_DB_NAME: redcap_prod
REDCAP_DB_USER: redcap_user
REDCAP_DB_PASS: ${MYSQL_PASSWORD} # 隞𡒊㴓憓<E3B493><E68693><EFBFBD>讛粉<E8AE9B>? # ... <20><EFBFBD><E597A1>滨蔭
```
#### 靚<>㟲3嚗𡁻<E59A97>蝵娟SL霂<4C>
```yaml
# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦
services:
redcap-web:
volumes:
# <20><>蝸SSL霂<4C>
- ./ssl/cert.pem:/etc/ssl/certs/redcap.crt:ro
- ./ssl/key.pem:/etc/ssl/private/redcap.key:ro
ports:
- "80:80"
- "443:443" # HTTPS蝡臬藁
```
#### 靚<>㟲4嚗朞<E59A97>皞鞾<E79A9E><E99EBE>?
```yaml
# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦
services:
redcap-web:
deploy:
resources:
limits:
cpus: '2'
memory: 4G
reservations:
cpus: '1'
memory: 2G
restart: always # <20>芸𢆡<E88AB8>滚鍳
```
#### 靚<>㟲5嚗𡁏𠯫敹㛖恣<E39B96>?
```yaml
# docker-compose.yml <20>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>𧋦
services:
redcap-web:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
```
### 14.3 <20>煺漣<E785BA><EFBFBD>摰匧<E691B0><E58CA7>惩𤐄
```yaml
<EFBFBD><EFBFBD>憿對<EFBFBD>
<EFBFBD><EFBFBD> 靽格㺿<E6A0BC><E3BABF><EFBFBD><EFBFBD>霈文<E99C88><E69687><EFBFBD><EFBFBD>MySQL<51><4C>EDCap admin嚗?<3F><EFBFBD> <20>舐鍂HTTPS嚗<53><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> <20>滨蔭<E6BBA8><EFBFBD>憓躰<E68693><E8BAB0><EFBFBD><EFBFBD><E99A9E><EFBFBD>?0/443蝡臬藁嚗?<3F><EFBFBD><>鍂phpMyAdmin嚗<6E><EFBFBD>文捆<E69687><EFBFBD>
<EFBFBD><EFBFBD> <20>滨蔭摰𡁏<E691B0><F0A1818F>芸𢆡憭<F0A286A1>遢嚗<E981A2><EFBFBD><EFBFBD> + <20><>辣嚗?<3F><EFBFBD> <20>滨蔭<E6BBA8>烐綉<E78390>𡃏郎嚗㇃PU<50><55><EFBFBD>摮塩<E691AE><E5A1A9><EFBFBD><EFBFBD><EFBFBD><E5A1A9><EFBFBD><EFBFBD>∠𠶖<E288A0><F0A0B696><EFBFBD>
<EFBFBD><EFBFBD> <20>𣂼<EFBFBD>SSH霈輸䔮嚗<E494AE><E59A97><EFBFBD>亥恕霂?+ IP<49><EFBFBD><E8B3A2>𤏪<EFBFBD>
<EFBFBD><EFBFBD> 摰𡁏<E691B0><F0A1818F>湔鰵摰匧<E691B0>銵乩<E98AB5>
<EFBFBD><EFBFBD>憿對<EFBFBD>
<EFBFBD><EFBFBD> 雿輻鍂<E8BCBB><EFBFBD>鈭騌LB<4C><EFBFBD>頧賢<E9A0A7><E98AB5>SSL<53>貉蝸
<EFBFBD><EFBFBD> <20>滨蔭WAF嚗Áeb摨𠉛鍂<F0A0899B><EFBFBD>憓辷<E68693>
<EFBFBD><EFBFBD> <20>舐鍂RDS<44>芸𢆡憭<F0A286A1>遢嚗<E981A2><E59A97><EFBFBD><EFBFBD>隞踝<E99A9E>靽萘<E99DBD>7憭抬<E686AD>
<EFBFBD><EFBFBD> <20>滨蔭OSS摮睃<E691AE><EFBFBD>遢嚗<E981A2><E59A97><EFBFBD>啣捆<E595A3><EFBFBD>
<EFBFBD><EFBFBD> 雿輻鍂CloudMonitor摰墧𧒄<E5A2A7>烐綉
```
### 14.4 <20>煺漣<E785BA><EFBFBD><E887AC>鞉𧋦隡啁<E99AA1>
```yaml
<EFBFBD><EFBFBD>鈭𤑳<EFBFBD>鈭抒㴓憓<EFBFBD><EFBFBD>蝵殷<EFBFBD>
霈∠<EFBFBD><EFBFBD><EFBFBD>嚗?<3F><EFBFBD> ECS 4<>?GB嚗块?00/<2F>?<3F><EFBFBD> 鈭𤑳<E988AD> 100GB ESSD嚗块?0/<2F>?<3F><EFBFBD> 撠讛恣嚗块?50/<2F>?
<EFBFBD>唳旿摨橒<EFBFBD>
<EFBFBD><EFBFBD> RDS MySQL擃睃虾<E79D83><EFBFBD> 2<>?GB嚗块?00/<2F>?<3F><EFBFBD> 摮睃<E691AE> 100GB嚗𡁜<E59A97><F0A1819C>?<3F><EFBFBD> 撠讛恣嚗块?00/<2F>?
蝵𤑳<EFBFBD>銝𤾸<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> SLB韐蠘蝸<E8A098><E89DB8>﹛嚗块?0/<2F>?<3F><EFBFBD> SSL霂<4C>髡嚗块?00/撟湛<E6929F>Let's Encrypt<70>滩晶嚗?<3F><EFBFBD> <20><EFBFBD><EFBFBD><E7989A>嚗块?.8/GB嚗<42>摯蝞䪖?0/<2F><><EFBFBD>
<EFBFBD><EFBFBD> 撠讛恣嚗块?10/<2F>?
摮睃<EFBFBD>銝𤾸<EFBFBD>隞踝<EFBFBD>
<EFBFBD><EFBFBD> OSS摮睃<E691AE> 100GB嚗块?0/<2F>?<3F><EFBFBD> OSS瘚<53><E7989A>嚗块?0/<2F>?<3F><EFBFBD> 撠讛恣嚗块?0/<2F>?
<EFBFBD>烐綉銝擧𠯫敹梹<EFBFBD>
<EFBFBD><EFBFBD> CloudMonitor嚗𡁜<E59A97>韐?<3F><EFBFBD> <20><EFBFBD><E4BA99>滚𦛚 10GB嚗块?/<2F>?<3F><EFBFBD> 撠讛恣嚗块?/<2F>?
<EFBFBD>餉恣嚗块?185/<2F><><EFBFBD>蝥汕?4,220/撟湛<E6929F>
隡睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撟湛<EFBFBD>嚗?<3F><EFBFBD> ECS 4<>?GB嚗?撟湛<E6929F>嚗块?600/撟湛<E6929F>瞼300/<2F><><EFBFBD>
<EFBFBD><EFBFBD> RDS MySQL擃睃虾<E79D83><EFBFBD>嚗块?00/<2F>?<3F><EFBFBD> <20><EFBFBD>嚗块?35/<2F>?<3F><EFBFBD> <20>餉恣嚗块?035/<2F><><EFBFBD>蝥汕?2,420/撟湛<E6929F>
```
### 14.5 <20>駁堺蝘<E5A0BA><E89D98><EFBFBD><EFBFBD>蝵脖漱隞䀹<E99A9E><E480B9>?
```yaml
鈭支<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤏪<EFBFBD>
1. Docker<65>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD>
<20><EFBFBD> redcap-web:v1.0.tar嚗<72><EFBFBD><EFBFBD><E7AE87>𨅯<EFBFBD><F0A885AF><EFBFBD>辣嚗? <20><EFBFBD> mysql:8.0.tar嚗<72><E59A97><EFBFBD>駁堺<E9A781>䭾㺭<E4ADBE><EFBFBD>嚗? <20><EFBFBD> docker-compose.yml嚗<6C><E59A97>蝵格<E89DB5>隞塚<E99A9E>
2. <20>函蔡<E587BD>𡁏𧋦嚗? <20><EFBFBD> install-docker.sh嚗㇄ocker摰㕑<E691B0><E39591>𡁏𧋦嚗? <20><EFBFBD> setup-redcap.sh嚗<68><E59A97><EFBFBD><EFBFBD>蝵脰<E89DB5><E884B0>穿<EFBFBD>
<20><EFBFBD> start-redcap.sh嚗<68><EFBFBD><EFBFBD><E588BB>穿<EFBFBD>
<20><EFBFBD> stop-redcap.sh嚗<68><E59A97><E79487><EFBCBA>穿<EFBFBD>
<20><EFBFBD> backup-redcap.sh嚗<68><E59A97>隞質<E99A9E><E8B3AA>穿<EFBFBD>
3. <20><>﹝嚗? <20><EFBFBD> <20>函蔡<E587BD><E894A1><EFBFBD>.pdf嚗<66><EFBFBD>T<EFBCA0><54><EFBFBD>
<20><EFBFBD> 餈鞟輕<E99E9F><EFBFBD>.pdf嚗<66>𠯫撣豢<E692A3>雿頣<E99BBF>
<20><EFBFBD> <20><><EFBFBD><EFBFBD>埝䰻<E59F9D><EFBFBD>.pdf嚗<66>䔮憸䁅<E686B8><E48185><EFBFBD>
<20><EFBFBD> 摰匧<E691B0><E58CA7>惩𤐄<E683A9><F0A49084><EFBFBD>.pdf嚗<66><E59A97><EFBFBD><E996AB><EFBFBD><E79899>
4. <20>滨蔭璅⊥踎嚗? <20><EFBFBD> database.php.template嚗<65><EFBFBD><EFBFBD><E6A180>滨蔭嚗? <20><EFBFBD> php.ini.template嚗㇊HP<48>滨蔭嚗? <20><EFBFBD> apache.conf.template嚗㇁pache<68>滨蔭嚗? <20><EFBFBD> .env.template嚗<65>㴓憓<E3B493><E68693><EFBFBD>𧶏<EFBFBD>
5. <20>寡悌<E5AFA1><EFBFBD>嚗? <20><EFBFBD> 蝟餌<E89D9F><E9A48C><EFBFBD>霂湔<E99C82>.pptx
<20><EFBFBD> <20>亙虜餈鞟輕<E99E9F>寡悌.pptx
<20><EFBFBD> <20><EFBFBD>瞍𠉛內閫<E585A7><E996AB>.mp4
<EFBFBD>函蔡瘚<EFBFBD><EFBFBD>嚗?Step 1: <20>駁堺IT摰㕑<E691B0>Docker嚗?0<><30><EFBFBD>嚗?Step 2: 撖澆<E69296>Docker<65>𨅯<EFBFBD>嚗?0<><30><EFBFBD>嚗?Step 3: <20>滨蔭<E6BBA8><EFBFBD><E887AC><EFBFBD>嚗?0<><30><EFBFBD>嚗?Step 4: <20>臬𢆡摰孵膥嚗?<3F><><EFBFBD>嚗?Step 5: <20><EFBFBD><E598A5>餸EDCap嚗?0<><30><EFBFBD>嚗?Step 6: 撉諹<E69289><E8ABB9><EFBFBD>嚗?0<><30><EFBFBD>嚗?<3F>餉恣嚗𡁶漲2撠𤩺𧒄
```
### 14.6 <20>煺漣<E785BA><EFBFBD><E887AC>烐綉<E78390><EFBFBD>
```yaml
<EFBFBD>烐綉<EFBFBD><EFBFBD><EFBFBD>嚗?
蝟餌<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> CPU雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>80% <20><>賒5<E8B392><35><EFBFBD>嚗?<3F><EFBFBD> <20><><EFBFBD>雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>85%嚗?<3F><EFBFBD><><E89DA4>雿輻鍂<E8BCBB><E98D82><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>80%嚗?<3F><EFBFBD> 蝵𤑳<E89DB5><EFBFBD><E7989A><EFBFBD><E59A97>撣豢<E692A3><E8B1A2><EFBFBD>霅佗<E99C85>
摨𠉛鍂撅<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> REDCap<61>舐鍂<E88890><EFBFBD>HTTP<54>亙熒璉<E78692><E79289><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD>嚗?<3F><EFBFBD> <20><EFBFBD><E6BB9A>園𡢿嚗<F0A1A2BF><E59A97>霅阡<E99C85><E998A1><EFBFBD>>3蝘𡜐<E89D98>
<EFBFBD><EFBFBD> <20>躰秤<E8BAB0><E7A7A4><EFBFBD><EFBFBD>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>1%嚗?<3F><EFBFBD> 撟嗅<E6929F><E59785><EFBFBD><E586BD>?
<EFBFBD>唳旿摨枏<EFBFBD>嚗?<3F><EFBFBD> RDS餈墧𦻖<E5A2A7><EFBFBD><E5A086>𡃏郎<F0A1838F><E9838E><EFBFBD><EFBFBD>>80%嚗?<3F><EFBFBD> <20>䰻霂㺭嚗?1蝘垍<E89D98><E59E8D>亥砭嚗?<3F><EFBFBD><><E89DA4>IOPS雿輻鍂<E8BCBB>?<3F><EFBFBD> CPU雿輻鍂<E8BCBB>?
摰孵膥撅<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD> 摰孵膥餈鞱<E9A488><E99EB1><EFBFBD><E59786><EFBFBD><EFBFBD>芸𢆡<E88AB8>滚鍳<E6BB9A>烐綉嚗?<3F><EFBFBD> 摰孵膥韏<E886A5><E99F8F>雿輻鍂嚗<E98D82><E59A97>摮䀹<E691AE>瞍𤩺<E79E8D>瘚页<E7989A>
<EFBFBD><EFBFBD> 摰孵膥<E5ADB5><EFBFBD><E4BA99>躰秤<E8BAB0>?
<EFBFBD>𡃏郎<EFBFBD><EFBFBD>嚗?<3F><EFBFBD> <20>凋縑嚗<E7B891><EFBFBD><EFBFBD>霅佗<E99C85>
<EFBFBD><EFBFBD> <20>桐辣嚗<E8BEA3><E59A97><EFBFBD><EFBFBD>霅佗<E99C85>
<EFBFBD><EFBFBD> <20><EFBFBD>/隡<><E99AA1>敺桐縑嚗<E7B891>𣪧<EFBFBD><EFBFBD>𡁶䰻嚗?<3F><EFBFBD> CloudMonitor<6F><EFBFBD><E689B9>?```
---
## <20><> 蝏栞祗
### <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓<E3B493><E68693>蝵脣<E89DB5><E884A3>?<3F>?
**<2A><EFBFBD><EFBFBD><E59A97>撌脫<E6928C><E884AB>﹕EDCap Docker<65>函蔡<E587BD><EFBFBD><E5AF9E>?*
餈坔<EFBFBD>Docker<EFBFBD>滨蔭<EFBFBD><EFBFBD>隞乩<EFBFBD><EFBFBD><EFBFBD>嚗?- <20>?**撘<><E69298>?<3F>煺漣<E785BA><EFBFBD><EFBFBD><E98A9D>?*嚗𡁏<E59A97><F0A1818F>斤㴓憓<E3B493><E68693>蝘?- <20>?**<2A>舐凒<E88890>亦鍂鈭𡒊<E988AD>鈭?*嚗𡁶<E59A97><EFBFBD><E9A488><EFBFBD><EFBFBD><E8AE9B>游朖<E6B8B8>?- <20>?**<2A><EFBFBD>蝳餌瑪鈭支<E988AD>**嚗𡁜龫<F0A1819C><EFBFBD><EFBCB9><EFBFBD><E58CA7>函蔡
- <20>?**2鈭箏𣪧<E7AE8F>笔虾蝏湔擪**嚗𡁶<E59A97><F0A181B6>𨰻<EFBFBD><F0A8B0BB><EFBFBD>𤩺<EFBFBD><F0A4A9BA><EFBFBD><EFBFBD>?
### 銝衤<E98A9D>甇亥<E79487><E4BAA5>?
**蝡见朖撘<E69C96>憪?*嚗?- Day 2嚗𡁜<E59A97>憪苄EDCap API Adapter撘<72><E69298>?- <20><><EFBFBD><EFBFBD><EFBFBD>[MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>騟(../IIT%20Manager%20Agent/04-撘<><E69298>𤏸恣<F0A48FB8>?MVP撘<50><E69298>睲遙<E79DB2><EFBFBD><E28AA5>?md)
**<2A>芣䔉閫<E49489><E996AB>**嚗?- Week 2-3嚗𡁻燵<F0A181BB><EFBFBD>ECS瘚贝<E7989A><E8B49D><EFBFBD><E887AC>函蔡
- Month 1-2嚗𡁜龫<F0A1819C><EFBFBD><EFBCBA><EFBFBD>蝵?- Month 3+嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD>鈭支<E988AD><EFBFBD><E7989A>
### <20><><EFBFBD><EFBFBD><EFBFBD>
- <20><EFBFBD><E4BAA6><EFBFBD><EFBFBD><E78DA2>"<22><><EFBFBD><EFBFBD>埝䰻"蝡㰘<E89DA1>
- <20><EFBFBD>Docker摰孵膥<E5ADB5><EFBFBD>嚗䫤docker-compose logs`
- <20><><EFBFBD><EFBFBD>EDCap摰䀹䲮<E480B9><E4B2AE>﹝嚗冴ttps://projectredcap.org/
- <20><><EFBFBD><EFBFBD>CS<43>唾悅<E594BE><EFBFBD>嚗靀REDCap<61>煺漣<E785BA><EFBFBD><E887AC>函蔡嚗鍃CS vs SAE瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>](./REDCap%20<32>煺漣<E785BA><EFBFBD><E887AC>函蔡嚗鍃CS%20vs%20SAE%20瘛勗漲<E58B97>唾悅<E594BE><EFBFBD>.md)
---
> **<2A><>﹝蝏湔擪**嚗𡁏𧋦<F0A1818F><F0A78BA6><EFBFBD>苢IT Manager Agent憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>湔鰵
> **<2A><>𧋦<EFBFBD><F0A78BA6>蟮**嚗?
> - v1.0 (2026-01-01): <20><EFBFBD><E598A5><EFBFBD>𧋦
> - v2.0 (2026-01-01): <20>寞旿ECS<43>唾悅<E594BE><EFBFBD>靽株恥嚗<E681A5>撩靚<E692A9><E99D9A><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D><EFBFBD>?
> **<2A><><EFBFBD>擧凒<E693A7>?*嚗?026-01-01
> **銝𧢲活摰⊥䰻**嚗𡁶<E59A97>鈭抒㴓憓<E3B493><E68693>甈⊿<E79488>蝵脣<E89DB5>