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%)
46 KiB
REDCap Docker<65>函蔡<E587BD>寞<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D>湔<EFBFBD>扳沲<E689B3><E6B2B2><EFBFBD>
*<EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD>𧋦嚗? v2.0
*<EFBFBD>𥕦遣<EFBFBD>交<EFBFBD>嚗? 2026-01-01
<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD> 2026-01-01嚗<31>覔<EFBFBD>圃CS<43>唾悅<E594BE>亙<EFBFBD>靽株恥嚗? *<EFBFBD><EFBFBD>﹝<EFBFBD>桃<EFBFBD>嚗? <20><>紡IIT Manager Agent憿寧𤌍<E5AFA7><F0A48C8D>EDCap Docker<65>臬<EFBFBD><E887AC>剖遣嚗<E981A3><E59A97><EFBFBD>?<3F>煺漣<E785BA>嗆<EFBFBD>銝<EFBFBD><E98A9D>湛<EFBFBD>
*<EFBFBD><EFBFBD>粉<EFBFBD>園𡢿嚗? 25<32><35><EFBFBD>
<EFBFBD>滩<EFBFBD><EFBFBD>改<EFBFBD> 潃鐥<E6BD83>潃鐥<E6BD83>潃?Day 2撘<32><E69298>穃<EFBFBD>敹<EFBFBD>粉
*憸<EFBFBD>恣<EFBFBD>函蔡<EFBFBD>園𡢿嚗? 1.5撠𤩺𧒄
*<EFBFBD>嗆<EFBFBD><EFBFBD>喟<EFBFBD>靘脲旿嚗? REDCap<EFBFBD>煺漣<EFBFBD>臬<EFBFBD><EFBFBD>函蔡嚗鍃CS vs SAE瘛勗漲<E58B97>唾悅<E594BE>亙<EFBFBD>
<EFBFBD><EFBFBD> <20><>﹝霂湔<E99C82>
<EFBFBD>詨<EFBFBD><EFBFBD><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>
- <EFBFBD>?**撘<><E69298>𤑳㴓憓?= 瘚贝<E7989A><E8B49D>臬<EFBFBD> = <20>煺漣<E785BA>臬<EFBFBD>**嚗<><E59A97><EFBFBD>臬<EFBFBD>瞍<EFBFBD>宏嚗?- <20>?Docker<EFBFBD>滨蔭<EFBFBD>舐凒<EFBFBD>亦鍂鈭𡡞燵<EFBFBD>䔶<EFBFBD>ECS<EFBFBD>煺漣<EFBFBD>函蔡
- <EFBFBD>?Docker<EFBFBD>滨蔭<EFBFBD>舐凒<EFBFBD>亦鍂鈭𤾸龫<EFBFBD>W<EFBFBD>蝵𤑳<EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>函蔡
- <EFBFBD>?*2鈭箏𣪧<EFBFBD>笔虾蝏湔擪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>閙沲<EFBFBD>?
<EFBFBD>嗆<EFBFBD>摰帋<EFBFBD>
<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
<EFBFBD><EFBFBD>鍂<EFBFBD>箸艶
**<2A>砍𧑐撘<F0A79190><E69298>𤑳㴓憓?*嚗?- <20>?REDCap API Adapter撘<72><E69298>睲<EFBFBD>瘚贝<E7989A>
- <EFBFBD>?External Module撘<65><E69298>睲<EFBFBD>靚<EFBFBD><E99D9A>
- <EFBFBD>?IIT霂閖<E99C82>憿寧𤌍<E5AFA7>笔<EFBFBD>撉諹<E69289>
- <EFBFBD>?API Token瘚贝<E7989A><E8B49D>峕㺭<E5B395>格聢撘誯<E69298>霂? **<2A>煺漣<E785BA>臬<EFBFBD>**嚗<>㮾<EFBFBD>㷉ocker<65>滨蔭 + 憸嘥<E686B8><E598A5>滨蔭嚗㚁<E59A97>
- <EFBFBD>?<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>
<EFBFBD>㴓 銝<><E98A9D><EFBFBD>瓲敹<E793B2>沲<EFBFBD><E6B2B2>挽霈?
1.1 摰孵膥<E5ADB5>嗆<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D>湛<EFBFBD>
<EFBFBD>煺漣蝥扳瓲敹<EFBFBD>捆<EFBFBD>剁<EFBFBD>敹<EFBFBD><EFBFBD>嚗?
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摰孵膥
<0A>? <20>婙<EFBFBD> <20>煺漣<E785BA>臬<EFBFBD>嚗𡁻燵<F0A181BB>䔶<EFBFBD>RDS MySQL嚗<4C>綫<EFBFBD>琜<EFBFBD><E7909C>靝ocker摰孵膥
<0A>?<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/嚗?
蝵𤑳<E89DB5>嚗鬏edcap-network嚗Ê̄ridge璅∪<E79285>嚗?摮睃<E691AE>嚗鋽ocker<65>賢<EFBFBD><E8B3A2>瘀<EFBFBD><E79880><EFBFBD><EFBFBD><EFBFBD>𡝗㺭<F0A19D97>殷<EFBFBD>
撘<EFBFBD><EFBFBD>𤏸<EFBFBD><EFBFBD>拙捆<EFBFBD>剁<EFBFBD>隞<EFBFBD><EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD><EFBFBD><EFBFBD>煺漣蝳<EFBFBD>鍂嚗?
<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
<0A>婙<EFBFBD> <20>煺漣<E785BA>臬<EFBFBD>嚗尠<E59A97> 銝漤<E98A9D>蝵莎<E89DB5>摰匧<E691B0>憌𡡞埯嚗?
霂湔<E99C82>嚗?<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>
<0A>?<3F>舀<EFBFBD>蝻嘥<E89DBB><E598A5>W<EFBFBD>RDS MySQL嚗<4C><E59A97>鈭抒㴓憓<E3B493><E68693>
<0A>?<3F><><EFBFBD>劐<EFBFBD>韏㚚<E99F8F>蝳鳴<E89DB3>銝齿情<E9BDBF>㮖蜓<E3AE96>箇㴓憓?<3F>?銝<><E98A9D>桀鍳<E6A180>?<3F>𨀣迫嚗?鈭箏𣪧<E7AE8F>笔虾蝏湔擪
<0A>?<3F>臬<EFBFBD><E887AC>舫<EFBFBD>憭齿<E686AD>撱綽<E692B1>摰孵膥<E5ADB5>𡝗<EFBFBD><F0A19D97><EFBFBD>漱隞矋<E99A9E>
<0A>?<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>W<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/ <0A>鎿<EFBFBD> redcap15.8.0/ # <20>?撌脫<E6928C>REDCap皞鞟<E79A9E> <0A>? <20>婙<EFBFBD> redcap/ # REDCap<61>詨<EFBFBD><E8A9A8><EFBFBD>辣 <0A>?<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> <0A>? <20>鎿<EFBFBD> Dockerfile.redcap # REDCap摰孵膥<E5ADB5>𨅯<EFBFBD>摰帋<E691B0> <0A>? <20>鎿<EFBFBD> .env # <20>臬<EFBFBD><E887AC>㗛<EFBFBD>嚗<EFBFBD>㺭<EFBFBD>桀<EFBFBD>撖<EFBFBD><E69296>蝑㚁<E89D91> <0A>? <20>?<3F>? <20>鎿<EFBFBD> config/ # <20>滨蔭<E6BBA8><E894AD>辣<EFBFBD>桀<EFBFBD> <0A>? <20>? <20>鎿<EFBFBD> apache/ <0A>? <20>? <20>? <20>婙<EFBFBD> redcap.conf # Apache<68>𡁏<EFBFBD>銝餅㦤<E9A485>滨蔭 <0A>? <20>? <20>鎿<EFBFBD> php/ <0A>? <20>? <20>? <20>婙<EFBFBD> php.ini # PHP<48>滨蔭 <0A>? <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>𡁏𧋦 <0A>? <20>? <20>鎿<EFBFBD> stop-redcap.ps1 # <20>對<EFBFBD> <20>𨀣迫<F0A880A3>𡁏𧋦 <0A>? <20>? <20>鎿<EFBFBD> logs-redcap.ps1 # <20><> <20>亦<EFBFBD><E4BAA6>亙<EFBFBD> <0A>? <20>? <20>婙<EFBFBD> clean-redcap.ps1 # <20><>儭?皜<><E79A9C><EFBFBD>臬<EFBFBD> <0A>? <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>辣嚗?
# <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>
# 銝箔<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.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嚗?
# 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
// 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>嚗?
撘<><E69298>𤑳㴓憓<E3B493>遣霈殷<E99C88>
- 雿輻鍂<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+摮㛖泵
<0A>煺漣<E785BA>臬<EFBFBD>閬<EFBFBD><E996AC>嚗?- 雿輻鍂撘粹<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>銵?
<0A>𣂼<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>𡁶䰻
摰墧鴌<E5A2A7>寞<EFBFBD>嚗?1. REDCap摰㕑<E691B0><E39591>嗉歲餈𦺋MTP<54>滨蔭甇仿炊
2. <20>批<EFBFBD>銝剖<E98A9D> <20>?Email & Notification <20>?<3F>嗵征
3. <20>湔𦻖餈𥡝<E9A488>API撘<49><E69298>?
<0A><>鍂鈭𠬍<E988AD>
<0A>?REDCap API Adapter撘<72><E69298>?<3F>?External Module撘<65><E69298>𡢅<EFBFBD>銝齿<E98A9D><E9BDBF>𢠃<EFBFBD>隞塚<E99A9E>
<0A>?<3F>唳旿撖澆<E69296>撖澆枂瘚贝<E7989A>
4.3 <20>寞<EFBFBD>B嚗鐝ailHog嚗<67>𧋦<EFBFBD>圈<EFBFBD>隞嗆<E99A9E>霂𤏪<E99C82>
# 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
雿輻鍂<EFBFBD>箸艶嚗𡁏<EFBFBD>霂閗<EFBFBD><EFBFBD>仿<EFBFBD>霂瑯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桃<EFBFBD><EFBFBD>桐辣<EFBFBD>蠘<EFBFBD>
4.4 <20>寞<EFBFBD>C嚗𡁶<E59A97>摰㓟MTP嚗𠃑mail/Outlook嚗?
# 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>W<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>宏嚗? <0A>臭誑餈蹱甅<E8B9B1>𡄯<EFBFBD>
- 撖澆枂Docker<EFBFBD>𨅯<EFBFBD> docker save redcap-local:1.0 -o redcap.tar
- 銝𠹺<EFBFBD><EFBFBD>蚩CS scp redcap.tar user@ecs-ip:/tmp/
- <EFBFBD>汞CS撖澆<EFBFBD> docker load -i /tmp/redcap.tar
- 餈鞱<EFBFBD>摰孵膥 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> <0A>?蝔喳<E89D94><E596B3>改<EFBFBD>摰孵膥撅<E886A5><E69285><EFBFBD>惩<EFBFBD><E683A9><EFBFBD>漲<EFBFBD>峕<EFBFBD><E5B395>𦦵<EFBFBD> <0A>?餈鞟輕嚗𡁜龫<F0A1819C>㛖頂蝏罸<E89D8F>閬<EFBFBD><E996AC>憭批虾<E689B9>扳<EFBFBD>?<3F>?憭<>遢嚗𡁜捆<F0A1819C>冽㺭<E586BD>桀<EFBFBD>隞賣凒憭齿<E686AD> <0A>?<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>
<0A>嗆挾1嚗𡁏𧋦<F0A1818F>蚤ocker撘<72><E69298>𡢅<EFBFBD>敶枏<E695B6>嚗?- <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>
<0A>嗆挾2嚗鍃CS<43><53><EFBFBD><EFBFBD>函蔡嚗<E894A1>𧊋<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>
餈<>宏頝臬<E9A09D>嚗?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
摰㕑<E691B0><E39591>嗆<EFBFBD>蝷綽<E89DB7>
"Unable to write to /var/www/html/edocs directory"
"Unable to write to /var/www/html/temp directory"
<EFBFBD>笔<EFBFBD>
Apache餈鞱<EFBFBD><EFBFBD>冽<EFBFBD>嚗òww-data嚗匧笆<E58CA7>桀<EFBFBD><E6A180>惩<EFBFBD><E683A9><EFBFBD><EFBFBD>
Docker摰孵膥<E5ADB5><E886A5><EFBFBD>隞嗆<E99A9E><E59786>𣂷<EFBFBD>銝餅㦤銝滚<E98A9D>甇?```
#### 閫<><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>俈<EFBFBD>芣鴌
# 璉<><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>
<EFBFBD><EFBFBD>𠶖
摰㕑<EFBFBD>憿菟𢒰<EFBFBD>鞟內嚗?"Cannot connect to database"
"Access denied for user 'redcap_user'@'redcap-web.redcap-network'"
<EFBFBD>笔<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
<EFBFBD>桅<EFBFBD>2嚗冴ostname<EFBFBD>滨蔭<EFBFBD>躰秤
// <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>?```
**<EFBFBD>桅<EFBFBD>3嚗朞恕霂<EFBFBD><EFBFBD>隞?*
```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>
<EFBFBD><EFBFBD>𠶖
install.php璉<70><E79289>仿△<E4BBBF>X<EFBFBD>蝷綽<E89DB7>
"The GD extension is not loaded"
"The ZIP extension is not loaded"
"The MySQLi extension is not loaded"
<EFBFBD>笔<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
撉諹<EFBFBD>摰㕑<EFBFBD>
# 餈𥕦<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>
<EFBFBD><EFBFBD>𠶖
摰孵膥<EFBFBD>臬𢆡憭梯揖<EFBFBD>𡝗<EFBFBD>瘜閗挪<EFBFBD>格<EFBFBD>隞?Error: "no such file or directory"
<EFBFBD>笔<EFBFBD>
Windows頝臬<EFBFBD><EFBFBD>澆<EFBFBD>銝穥inux銝滚<EFBFBD>摰?<3F>齿<EFBFBD><E9BDBF>?\)銝擧迤<E693A7>𨀣<EFBFBD>(/)<29>脩<EFBFBD>
蝏嘥笆頝臬<E9A09D><E887AC>求ocker Desktop銝剖虾<E58996>賣<EFBFBD><E8B3A3>桅<EFBFBD>
閫<EFBFBD><EFBFBD><EFBFBD>寞<EFBFBD>
雿輻鍂<EFBFBD>詨笆頝臬<EFBFBD>嚗<EFBFBD>綫<EFBFBD>琜<EFBFBD>
# <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銝剛蓮<EFBFBD>Z楝敺?
# <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>
<EFBFBD><EFBFBD>𠶖
docker-compose up -d 憭梯揖
Error: "Bind for 0.0.0.0:8080 failed: port is already allocated"
<EFBFBD>笔<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
靽格㺿蝡臬藁<EFBFBD>惩<EFBFBD>
# 憒<><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"
*<EFBFBD><EFBFBD>雿喳<EFBFBD>頝?
# 憸<><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>
<EFBFBD><EFBFBD>𠶖
摰孵膥<EFBFBD>𣳇膄<EFBFBD>𠬍<EFBFBD><EFBFBD>唳旿銝W仃
docker-compose down <20>擧<EFBFBD>瘜閙<E7989C>憭漤★<E6BCA4>?```
#### <20>笔<EFBFBD>
霂舐鍂鈭?-volumes<65><73>㺭<EFBFBD>𣳇膄鈭<E88684>㺭<EFBFBD>桀㭘 瘝⊥<E7989D><E28AA5><EFBFBD>圾Docker<65>賢<EFBFBD><E8B3A2>瑞<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>
<EFBFBD>唳旿憭<EFBFBD>遢
# 憭<>遢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>W<EFBFBD><EFBCB7>唳旿<E594B3>?docker run --rm -v redcap-db-data:/data -v $(pwd):/backup \
ubuntu tar xzf /backup/redcap-db-backup.tar.gz -C /
<EFBFBD><EFBFBD> 銝<><E98A9D><EFBFBD><EFBFBD>蝵脫<E89DB5>蝔页<E89D94>霂衣<E99C82>甇仿炊嚗?
7.1 <20>嗆挾1嚗𡁜<E59A97>憭<EFBFBD><E686AD>蝵格<E89DB5>隞塚<E99A9E>15<31><35><EFBFBD>嚗?
甇仿炊1嚗𡁜<EFBFBD>撱粹★<EFBFBD>桃𤌍敶?```powershell
餈𥕦<EFBFBD>憿寧𤌍<EFBFBD>寧𤌍敶?cd D:\MyCursor\AIclinicalresearch
<EFBFBD>𥕦遣Docker<EFBFBD>函蔡<EFBFBD>桀<EFBFBD>
New-Item -ItemType Directory -Path "redcap-docker-dev" -Force cd redcap-docker-dev
<EFBFBD>𥕦遣摮鞟𤌍敶?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嚗𡁻<EFBFBD>霂<EFBFBD>EDCap皞鞟<EFBFBD>
# 蝖株恕皞鞟<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嚗𡁏<EFBFBD>撱粹<EFBFBD><EFBFBD>?```powershell
<EFBFBD><EFBFBD>遣<EFBFBD>芸<EFBFBD>銋兴EDCap<EFBFBD>𨅯<EFBFBD>
docker-compose build
颲枏枂蝷箔<EFBFBD>嚗?# 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嚗𡁶<EFBFBD>敺<EFBFBD>ySQL撠梁貌
# <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嚗帋耨憭齿<EFBFBD>隞嗆<EFBFBD><EFBFBD>?```powershell
<EFBFBD>芸𢆡靽桀<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡁏𧋦嚗<EFBFBD>歇<EFBFBD><EFBFBD>鉄<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嚗朞挪<EFBFBD>桀<EFBFBD>鋆<EFBFBD><EFBFBD>撖?```
<EFBFBD>枏<EFBFBD>瘚讛<EFBFBD><EFBFBD>刻挪<EFBFBD>殷<EFBFBD> http://localhost:8080/install.php
#### 甇仿炊2嚗𡁶頂蝏蠘<E89D8F>瘙<EFBFBD><E79899><EFBFBD>?```
REDCap隡朞䌊<E69C9E>冽<EFBFBD><E586BD>伐<EFBFBD>
<0A>?PHP<48><50>𧋦 8.1.x
<0A>?MySQL餈墧𦻖
<0A>?PHP<48>拙<EFBFBD>嚗éysqli, gd, zip, etc.嚗?<3F>?<3F><>辣<EFBFBD><E8BEA3><EFBFBD>嚗Ềdocs, temp<6D>臬<EFBFBD>嚗?
憒<><E68692><EFBFBD>厩滯<E58EA9>争<EFBFBD>嚗峕覔<E5B395>格<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> <0A>笔<EFBFBD>嚗鋽ay 2-8銝漤<E98A9D>閬<EFBFBD><E996AC>隞嗅<E99A9E><E59785>?```
甇仿炊6嚗𡁜<EFBFBD><EFBFBD>𣂼<EFBFBD>鋆?```
<EFBFBD>孵稬 "Complete Installation" 蝑匧<E89D91><E58CA7>唳旿摨栞”<E6A09E>𥕦遣嚗<E981A3>漲2-3<><33><EFBFBD>嚗?<3F>见<EFBFBD> "Installation Complete!" 瘨<><E798A8>
#### 甇仿炊7嚗𡁻<E59A97>甈∠蒈敶?```
霈輸䔮嚗冴ttp://localhost:8080/
<0A>冽<EFBFBD><E586BD>㵪<EFBFBD>admin
撖<><E69296>嚗鋫dmin@123456
<0A>?<3F>餃<EFBFBD><E9A483>𣂼<EFBFBD>嚗𣬚<E59A97><F0A3AC9A>訌EDCap銝駁△
7.4 <20>嗆挾4嚗𡁜<E59A97>撱箸<E692B1>霂閖★<E99696>殷<EFBFBD>30<33><30><EFBFBD>嚗?
甇仿炊1嚗𡁏鰵撱粹★<EFBFBD>?```
- <EFBFBD>孵稬 "New Project"
- 憿寧𤌍<EFBFBD><EFBFBD><EFBFBD>嚗䥑IT Test Project
- 憿寧𤌍<EFBFBD>桃<EFBFBD>嚗鑹esearch
- 璅⊥踎嚗鍃mpty Project嚗<74><E59A97>憭游<E686AD>撱綽<E692B1>
- <EFBFBD>孵稬 "Create Project"
#### 甇仿炊2嚗朞挽霈⊥㺭<E28AA5>桀<EFBFBD><E6A180>?
**<2A>𥕦遣銵典<E98AB5>1嚗𡁏<E59A97><F0A1818F><EFBFBD>縑<EFBFBD>荔<EFBFBD>Demographics嚗?*
摮埈挾<EFBFBD>𡑒”嚗?1. record_id (Record ID)
- 蝐餃<EFBFBD>嚗関ext Box
- 撉諹<EFBFBD>嚗䥑nteger
- <EFBFBD><EFBFBD><EFBFBD>蝚佗<EFBFBD>Yes
-
patient_name (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
- 蝐餃<EFBFBD>嚗関ext Box
- <EFBFBD><EFBFBD><EFBFBD>蝚佗<EFBFBD>Yes
-
age (撟湧<E6929F>)
- 蝐餃<EFBFBD>嚗関ext Box
- 撉諹<EFBFBD>嚗䥑nteger
- <EFBFBD><EFBFBD>凒嚗?-120
-
gender (<28>批<EFBFBD>)
- 蝐餃<EFBFBD>嚗鑹adio Buttons
- <EFBFBD>厰★嚗?, <20>?| 2, 憟?
-
enrollment_date (<28>亦<EFBFBD><E4BAA6>交<EFBFBD>)
- 蝐餃<EFBFBD>嚗関ext Box
- 撉諹<EFBFBD>嚗鋽ate (Y-M-D)
**<2A>𥕦遣銵典<E98AB5>2嚗𡁻<E59A97>霈輯扇敶𤏪<E695B6>Follow-up嚗?*
摮埈挾<EFBFBD>𡑒”嚗?1. followup_date (<28>讛挪<E8AE9B>交<EFBFBD>)
- 蝐餃<EFBFBD>嚗関ext Box
- 撉諹<EFBFBD>嚗鋽ate (Y-M-D)
-
followup_type (<28>讛挪蝐餃<E89D90>)
- 蝐餃<EFBFBD>嚗鋽ropdown
- <EFBFBD>厰★嚗?, <20>刻<EFBFBD> | 2, <20>菔<EFBFBD> | 3, 蝥蹂<E89DA5>
-
adverse_event (銝滩<E98A9D>鈭衤辣)
- 蝐餃<EFBFBD>嚗枠es-No
- 暺䁅恕嚗鐭o
-
notes (憭<>釣)
- 蝐餃<EFBFBD>嚗鐭otes Box (Paragraph Text)
#### 甇仿炊3嚗𡁜<E59A97>撱箸<E692B1>霂閙㺭<E99699>?```
瘛餃<E7989B>5<EFBFBD>⊥<EFBFBD>霂訫<E99C82>霂閗<E99C82><E99697>扇敶𤏪<E695B6>
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嚗𡁜鍳<EFBFBD>杗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嚗𡁏<EFBFBD>霂𧭈PI靚<EFBFBD>鍂
# 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嚗𡁜<EFBFBD>撱態PI瘚贝<EFBFBD><EFBFBD>𡁏𧋦
// 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(`<60><> 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嚗朞<EFBFBD>銵峕<EFBFBD>霂?```powershell
cd D:\MyCursor\AIclinicalresearch\backend npx ts-node src/modules/iit-manager/test-redcap-api.ts
憸<EFBFBD><EFBFBD>颲枏枂嚗?# <20><> Testing REDCap API Connection...
<EFBFBD>?API Connection Successful!
<EFBFBD><EFBFBD> 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> <0A>?Docker摰孵膥<E5ADB5>券<EFBFBD>餈鞱<E9A488> [ ] <0A>?MySQL<51>唳旿摨枏虾餈墧𦻖 [ ] <0A>?REDCap摰㕑<E691B0><E39591>𣂼<EFBFBD> [ ] <0A>?蝞∠<E89D9E><E288A0>䁅揭<E48185>瑕虾<E79195>餃<EFBFBD> [ ] <0A>?瘚贝<E7989A>憿寧𤌍撌脣<E6928C>撱? [ ] <0A>?API Token撌脩<E6928C><E884A9>? [ ] <0A>?API靚<49>鍂瘚贝<E7989A><E8B49D>朞<EFBFBD> [ ] <0A>?<3F>𡒊垢<F0A1928A>臬<EFBFBD><E887AC>㗛<EFBFBD>撌脤<E6928C>蝵? [ ] <0A>?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嚗?
#!/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嚗?
#!/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嚗?
#!/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
<EFBFBD>㴓 銋腈<E98A8B><E88588><EFBFBD>蝑𡝗<E89D91><F0A19D97>?
<EFBFBD>典<EFBFBD><EFBFBD>賡<EFBFBD>蝵脣<EFBFBD>嚗諹窈蝖株恕隞乩<EFBFBD><EFBFBD>喟<EFBFBD>嚗?
9.1 敹<><E695B9><EFBFBD>喟<EFBFBD>
| <EFBFBD>喟<EFBFBD>憿? | <EFBFBD>厰★ | <EFBFBD>刻<EFBFBD> | <EFBFBD>函<EFBFBD><EFBFBD>㗇𥋘 |
|---|---|---|---|
| <EFBFBD>函蔡雿滨蔭 | redcap-docker-dev/ |
<EFBFBD>?<3F>刻<EFBFBD> | [ ] |
| REDCap蝡臬藁 | 8080 / <20>嗡<EFBFBD> | 8080 | [ ] |
| MySQL蝡臬藁 | 3306 / <20>嗡<EFBFBD> | 3306 | [ ] |
| phpMyAdmin | <EFBFBD><EFBFBD>閬?/ 銝漤<E98A9D>閬? | <EFBFBD><EFBFBD>閬? | [ ] |
| SMTP<EFBFBD>滨蔭 | 頝唾<EFBFBD> / <20>滨蔭 | 頝唾<EFBFBD> | [ ] |
| *<EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? | <EFBFBD>賢<EFBFBD><EFBFBD>?/ 蝏穃<E89D8F><E7A983><EFBFBD>蝸 | <EFBFBD>賢<EFBFBD><EFBFBD>? | [ ] |
9.2 <20>臬<EFBFBD><E887AC>㗛<EFBFBD>
# 蝖株恕隞乩<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>?
# 霂瑕<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>嫣蛹嚗噔______
<EFBFBD><EFBFBD> <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() 摰䂿緵
<0A>?<3F>笔<EFBFBD>API瘚贝<E7989A>
- 雿輻鍂摰鮋<E691B0>API Token
- 撉諹<E69289>JSON<4F>滚<EFBFBD><E6BB9A>澆<EFBFBD>
- 瘚贝<E7989A><E8B49D>躰秤憭<E7A7A4><E686AD>
<0A>?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
# 璉<><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>亙仃韐?
# 璉<><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>鍂憭梯揖
# 撉諹<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>鍂嚗? <0A>?<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>
- 蝞∠<EFBFBD><EFBFBD>条蒈敶閙<EFBFBD><EFBFBD>? - 瘚贝<E7989A>憿寧𤌍撌脣<E6928C>撱? - API Token撌脩<E6928C><E884A9>? - API靚<49>鍂餈𥪜<E9A488><F0A5AA9C>唳旿
<EFBFBD>?<3F>𡒊垢<F0A1928A><E59EA2><EFBFBD>
- .env<6E>滨蔭摰峕<E691B0>
- API瘚贝<EFBFBD><EFBFBD>𡁏𧋦<EFBFBD>朞<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
<0A>嗆挾1: <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓<E3B493><E68693>敶枏<E695B6>嚗?<3F>鎿<EFBFBD> <20>桃<EFBFBD>嚗鋫PI撘<49><E69298>㻫<EFBFBD><E3BBAB>M靚<4D><E99D9A>
<0A>鎿<EFBFBD> <20>臬<EFBFBD>嚗阳indows/Mac + Docker Desktop
<0A>鎿<EFBFBD> <20>唳旿摨橒<E691A8>Docker MySQL摰孵膥
<0A>鎿<EFBFBD> 颲<>𨭌撌亙<E6928C>嚗䮝hpMyAdmin嚗<6E><E59A97>霂𤏪<E99C82>
<0A>婙<EFBFBD> <20>鞉𧋦嚗?0
<0A>嗆挾2: <20>輸<EFBFBD>鈭烐<E988AD>霂閧㴓憓?<3F>鎿<EFBFBD> <20>桃<EFBFBD>嚗𡁻<E59A97><F0A181BB>鞉<EFBFBD>霂𨰻<E99C82><F0A8B0BB><EFBFBD>扯<EFBFBD>瘚贝<E7989A>
<0A>鎿<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
<0A>婙<EFBFBD> <20>鞉𧋦嚗块?00-700/<2F>?
<0A>嗆挾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>
<0A>鎿<EFBFBD> 摮睃<E691AE>嚗帋<E59A97><E5B88B>矋<EFBFBD>100GB ESSD嚗?+ OSS憭<53>遢
<0A>鎿<EFBFBD> 韐蠘蝸<E8A098><E89DB8>﹛嚗𡁻燵<F0A181BB>䔶<EFBFBD>SLB + SSL霂<4C>髡
<0A>鎿<EFBFBD> <20>烐綉嚗鋴loudMonitor + <20>亙<EFBFBD><E4BA99>滚𦛚
<0A>鎿<EFBFBD> <20>笔<EFBFBD>嚗鬏edcap.yourdomain.com
<0A>婙<EFBFBD> <20>鞉𧋦嚗块?500-2000/<2F>?
<0A>嗆挾4: <20>駁堺蝘<E5A0BA><E89D98><EFBFBD>㚚<EFBFBD>蝵?<3F>鎿<EFBFBD> <20>桃<EFBFBD>嚗𡁜龫<F0A1819C>W<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>
<0A>婙<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>滚𦛚
靚<EFBFBD>㟲2嚗帋蝙<EFBFBD>沖DS MySQL
# 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>滨蔭
靚<EFBFBD>㟲3嚗𡁻<EFBFBD>蝵娟SL霂<EFBFBD>髡
# 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蝡臬藁
靚<EFBFBD>㟲4嚗朞<EFBFBD>皞鞾<EFBFBD><EFBFBD>?
# 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>滚鍳
靚<EFBFBD>㟲5嚗𡁏𠯫敹㛖恣<EFBFBD>?
# 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>惩𤐄
敹<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>
<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>?
鈭支<EFBFBD><EFBFBD>拇<EFBFBD><EFBFBD>𤏪<EFBFBD>
1. Docker<65>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD>
<EFBFBD>鎿<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>
<EFBFBD>鎿<EFBFBD> start-redcap.sh嚗<68>鍳<EFBFBD>刻<EFBFBD><E588BB>穿<EFBFBD>
<EFBFBD>鎿<EFBFBD> stop-redcap.sh嚗<68><E59A97>甇Z<E79487><EFBCBA>穿<EFBFBD>
<EFBFBD>婙<EFBFBD> backup-redcap.sh嚗<68><E59A97>隞質<E99A9E><E8B3AA>穿<EFBFBD>
3. <20><>﹝嚗? <20>鎿<EFBFBD> <20>函蔡<E587BD><E894A1><EFBFBD>.pdf嚗<66>龫<EFBFBD>@T<EFBCA0><54><EFBFBD>
<EFBFBD>鎿<EFBFBD> 餈鞟輕<E99E9F>见<EFBFBD>.pdf嚗<66>𠯫撣豢<E692A3>雿頣<E99BBF>
<EFBFBD>鎿<EFBFBD> <20><><EFBFBD><EFBFBD>埝䰻<E59F9D>见<EFBFBD>.pdf嚗<66>䔮憸䁅<E686B8><E48185>哨<EFBFBD>
<EFBFBD>婙<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
<EFBFBD>鎿<EFBFBD> <20>亙虜餈鞟輕<E99E9F>寡悌.pptx
<EFBFBD>婙<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: 撉諹<EFBFBD><EFBFBD>蠘<EFBFBD>嚗?0<><30><EFBFBD>嚗?<3F>餉恣嚗𡁶漲2撠𤩺𧒄
14.6 <20>煺漣<E785BA>臬<EFBFBD><E887AC>烐綉<E78390>寞<EFBFBD>
<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>X䰻霂X㺭嚗?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<EFBFBD>函蔡<EFBFBD>寞<EFBFBD><EFBFBD>?*
餈坔<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>Y<EFBFBD><EFBCB9>匧<EFBFBD><E58CA7>函蔡
- <EFBFBD>?**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>Z<EFBFBD><EFBCBA>寥<EFBFBD>蝵?- Month 3+嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD>鈭支<E988AD>瘚<EFBFBD><E7989A>
### <20><>閬<EFBFBD>葬<EFBFBD>抬<EFBFBD>
- <EFBFBD>亦<EFBFBD><EFBFBD>祆<EFBFBD>獢<EFBFBD><EFBFBD>"<22><><EFBFBD><EFBFBD>埝䰻"蝡㰘<E89DA1>
- <EFBFBD>亦<EFBFBD>Docker摰孵膥<EFBFBD>亙<EFBFBD>嚗䫤docker-compose logs`
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>EDCap摰䀹䲮<EFBFBD><EFBFBD>﹝嚗冴ttps://projectredcap.org/
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>CS<EFBFBD>唾悅<EFBFBD>亙<EFBFBD>嚗靀REDCap<EFBFBD>煺漣<EFBFBD>臬<EFBFBD><EFBFBD>函蔡嚗鍃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): <EFBFBD>嘥<EFBFBD><EFBFBD><EFBFBD>𧋦
> - v2.0 (2026-01-01): <EFBFBD>寞旿ECS<EFBFBD>唾悅<EFBFBD>亙<EFBFBD>靽株恥嚗<EFBFBD>撩靚<EFBFBD><EFBFBD><EFBFBD>?<3F>煺漣銝<E6BCA3><E98A9D>湔<EFBFBD>?
> **<2A><><EFBFBD>擧凒<E693A7>?*嚗?026-01-01
> **銝𧢲活摰⊥䰻**嚗𡁶<E59A97>鈭抒㴓憓<E3B493><E68693>甈⊿<E79488>蝵脣<E89DB5>