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%)
1518 lines
46 KiB
Markdown
1518 lines
46 KiB
Markdown
# 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>W<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>W<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>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/
|
||
<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>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>宏嚗?
|
||
<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>X<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>Z楝敺?*
|
||
```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>唳旿銝W仃
|
||
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>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 /
|
||
```
|
||
|
||
---
|
||
|
||
## <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>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>
|
||
<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>甇Z<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>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<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>Y<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>Z<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>
|
||
|