Files
AIclinicalresearch/docs/03-业务模块/Redcap/04-参考资料/02-REDCap部署指南与环境要求_旧版.md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
2026-01-14 19:15:01 +08:00

1155 lines
26 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# REDCap<61>函蔡<E587BD><E894A1><EFBFBD>銝𡒊㴓憓<E3B493><E68693><EFBFBD>祕閫?
> **<2A><><EFBFBD><EFB99D>𧋦嚗?* v1.0
> **<2A>𥕦遣<F0A595A6><EFBFBD>嚗?* 2025-12-30
> **<2A><><EFBFBD><EFBFBD>嚗?* 霂衣<E99C82>霂湔<E99C82>REDCap<61><70><EFBFBD>蝵脰<E89DB5><EFBFBD><E79899><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BCB2>蔓蝖砌辣<E7A08C>∩辣
> **<2A><><EFBFBD>園𡢿嚗?* 25<32><35><EFBFBD>
> **<2A><EFBFBD><E6BBA9><EFBFBD>** 潃鐥<E6BD83>潃鐥<E6BD83>潃?**撖寞𦻖<E5AF9E><EFBFBD>霂?*
---
## <20><> <20><EFBFBD><E689AF><EFBFBD>
**<EFBFBD><EFBFBD>蝏栞捏**嚗?
- <20>?**<2A><EFBFBD><EFBFBD><EFBFBD>充EDCap<61><EFBFBD>憿餃<E686BF><E9A483>函蔡REDCap<61>滚𦛚<E6BB9A>?*
- <20>**<EFBFBD>函蔡憭齿<EFBFBD>摨佗<EFBFBD>銝剔<EFBFBD>**嚗?.5/5<><35><EFBFBD>
- <20><EFBFBD> **<EFBFBD>函蔡<EFBFBD>園𡢿**嚗?
- 瘚贝<E7989A><E8B49D><EFBFBD>嚗㇄ocker嚗㚁<E59A97>1-2撠𤩺𧒄
- <20>煺漣<E785BA><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>嚗?-2憭?
- <20>煺漣<E785BA><EFBFBD><EFBFBD>鉄摰匧<E691B0><E58CA7>惩𤐄嚗㚁<E59A97>3-5憭?
- <20>**<EFBFBD>鞉𧋦**嚗?
- 瘚贝<E7989A><E8B49D><EFBFBD>嚗?0嚗<30>𧋦<EFBFBD><EFBFBD><E595A3>𡢅<EFBFBD>
- <20>煺漣<E785BA><EFBFBD>嚗?500-3000/<2F><><EFBFBD>鈭烐<E988AD><E78390>膥嚗?
**<EFBFBD>喲睸<EFBFBD>滨蔭<EFBFBD>∩辣**嚗?
1. <20><> **<EFBFBD><EFBFBD>REDCap霈詨虾**嚗<><E59A97><EFBFBD><EFBFBD><E4BAA5><EFBFBD><EFBFBD>蝑曄蔡EULA嚗?
2. <20>𠒣 **銝贝蝸REDCap皞𣂷誨<F0A382B7>?*嚗ǐedcap15.8.0.zip嚗?
3. <20>棅儭?**<2A><><EFBFBD><EFBFBD>滚𦛚<E6BB9A>函㴓憓?*嚗𡿨AMP/LEMP<4D><50><EFBFBD>
4. <20>𩣪 **<EFBFBD>滨蔭SMTP<EFBFBD>桐辣<EFBFBD>滚𦛚**嚗<><E59A97><EFBFBD><EFBFBD>嚗?
---
## <20><20>函蔡<E587BD><EFBFBD>霂鳴<E99C82><E9B3B4><EFBFBD><EFBFBD><E996AC><EFBFBD><E98A8B>
### 1. REDCap霈詨虾銝擧<E98A9D><EFBFBD><E99A9E><EFBFBD><EFBFBD><EFBFBD><E59A97>?<3F><><EFBFBD>喲睸嚗?
#### <20><EFBFBD><EFBFBD><E7989A>
```
Step 1: <20>唾窈<E594BE><EFBFBD>REDCap<61>𠉛<EFBFBD>
<20>?
霈輸䔮嚗冴ttps://projectredcap.org/join/
<20>?
憛怠<EFBFBD><EFBFBD><EFBFBD>靽⊥<EFBFBD><EFBFBD><EFBFBD>?憭批郎/<2F>𠉛弦<F0A0899B><EFBFBD>嚗?
<20>?
蝑匧<EFBFBD>摰⊥鸌嚗?-4<><EFBFBD>
Step 2: 蝑曄蔡<E69B84><E894A1><EFBFBD><EFBFBD>瑁捂<E79181><EFBFBD>霈殷<E99C88>EULA嚗?
<20>?
瘜訫<EFBFBD>摰⊥䰻嚗<EFBFBD><EFBFBD><EFBFBD>銝𡁶鍂<EFBFBD><EFBFBD>
<20>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鈭箇倌摮?
Step 3: 銝贝蝸REDCap頧臭辣<E887AD>?
<20>?
<EFBFBD><EFBFBD><EFBFBD>𠉛<EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>
<20>?
銝贝蝸嚗鬏edcap_vX.X.X.zip嚗<70>漲50-80MB嚗?
```
#### 霈詨虾<E8A9A8>𣂼<EFBFBD><EFBFBD><E59A97>儭?<3F><EFBFBD>嚗?
```
<EFBFBD>?<3F><>捂嚗?
- <20>𧼮<EFBFBD>銝𡁶<E98A9D>蝛嗥鍂<E597A5>?
- <20><EFBFBD><E7AEB8><EFBFBD><EFBFBD>雿輻鍂
- 撘<><E69298>䫿xternal Modules嚗<73><E59A97>皞𣂼<E79A9E>鈭恬<E988AD>
<EFBFBD>?蝳<>迫嚗?
- <20><><EFBFBD><EFBFBD><EFBFBD><E39A9A>?
- <20><EFBFBD><E88AB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- 靽格㺿<E6A0BC><EFBFBD><EFBFBD><E99A9E><EFBFBD>𡡞𡡒皞?
<EFBFBD>𩤃<EFBFBD> <20>啗𠧧<E59597>啣蒂嚗?
- <20>𣂷<EFBFBD>REDCap<61>条恣<E69DA1>滚𦛚嚗<F0A69B9A><E59A97><EFBFBD>刻砭<E588BB><E7A0AD><EFBFBD>之摮佗<E691AE>
- <20><EFBFBD>REDCap撘<70><E69298><EFBFBD>銝帋漣<E5B88B><E6BCA3><EFBFBD>雿牐賑<E78990><E8B391><EFBFBD><EFBFBD><EFBFBD>
<20>?撱箄悅嚗𡁜倮霂<E99C82>敺钅▽<E99285><EFBFBD><E6AEB7><EFBFBD><E888AA><EFBFBD><EFBFBD><E996AC>憭硋<E686AD>霈?
```
#### <20><EFBFBD><E587BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```
憯寡<EFBFBD>敺芰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝𡁏芋撘𧶏<EFBFBD>
- REDCap<61>?摰<E691B0>撌脫<E6928C>"<22><>頂蝏?
- 雿牐賑<E78990>𣂷<EFBFBD><F0A382B7><EFBFBD>糓"AI憓𧼮<E68693><EFBFBD><E6BDAD>?嚗㇄C/SSA璅<E79285>嚗?
- <20><EFBFBD>External Module餈墧𦻖
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隡堆<EFBFBD>
<EFBFBD>?<3F><EFBFBD><E888AA><EFBFBD><EFBFBD><EFBFBD><E59A97>靘𥟇<E99D98>隞塚<E99A9E>銝漤<E98A9D><E6BCA4>娜EDCap<61>祈澈嚗?
<EFBFBD>𩤃<EFBFBD> <20><>蝖株恕嚗𡁏糓<F0A1818F>血葬摰<E691B0><EFBCB8>函蔡REDCap嚗?
- 憒<><E68692><EFBFBD>芣糓撖寞𦻖摰<E691B0><EFBCB8><EFBFBD>REDCap <20>?<3F>?<3F><><EFBFBD>
- 憒<><E68692>雿牐賑<E78990>函蔡REDCap撟嗆𤣰韐?<3F>?<3F>𩤃<EFBFBD> <20>啗𠧧<E59597>啣蒂
撱箄悅嚗?
1. 銝舘<E98A9D>敺瑕嵗憭批郎蝖株恕<E6A0AA><E68195><EFBFBD><EFBFBD><EFBFBD>磰捂<E7A3B0>?
2. <20>𤥁<EFBFBD><F0A4A581><EFBFBD><EFBFBD>芸笆<E88AB8>亙恥<E4BA99>瑞緵<E7919E><EFBFBD>REDCap嚗<70><E59A97><EFBFBD>𣂷<EFBFBD><F0A382B7>函蔡嚗?
```
---
## <20>棅儭?頧舐隞嗉<E99A9E><EFBFBD>祕閫?
### <20>滚𦛚<E6BB9A><EFBFBD>蝵株<E89DB5>瘙?
#### 撘<><E69298>?瘚贝<E7989A><E8B49D><EFBFBD>
```yaml
<EFBFBD><EFBFBD>? <20>砍𧑐撘<F0A79190><E69298><EFBFBD><E3BBAB><EFBFBD><EFBFBD><EFBFBD>霂𨰻<E99C82><F0A8B0BB>xternal Module撘<65><E69298>?
<EFBFBD><EFBFBD>雿𡡞<EFBFBD>蝵?
CPU: 2<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD>: 4GB
蝖祉<EFBFBD>: 20GB SSD
蝟餌<EFBFBD>: Windows 10/11 <20>?macOS <20>?Linux
<EFBFBD><EFBFBD><EFBFBD>滨蔭:
CPU: 4<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD>: 8GB
蝖祉<EFBFBD>: 50GB SSD
蝟餌<EFBFBD>: Ubuntu 22.04 LTS
<EFBFBD>鞉𧋦: $0嚗<30><EFBFBD>其葵鈭箇㩞<E7AE87><EFBFBD>Mac嚗?
```
#### <20>煺漣<E785BA><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD>
```yaml
<EFBFBD><EFBFBD>? 1-5銝芷★<E88AB7><EFBFBD><1000<30>∟扇敶?
<EFBFBD><EFBFBD>雿𡡞<EFBFBD>蝵?
CPU: 2<EFBFBD>?@ 2.5GHz+
<EFBFBD><EFBFBD><EFBFBD>: 8GB
蝖祉<EFBFBD>: 100GB SSD
撣血捐: 10Mbps
蝟餌<EFBFBD>: Ubuntu 22.04 LTS / CentOS 8
<EFBFBD>唳旿摨?
MySQL: 5.7+ <20>?MariaDB 10.3+
摮睃<EFBFBD>: 20GB嚗<EFBFBD>𡠺蝡讠<EFBFBD><EFBFBD><EFBFBD>
Web<EFBFBD>滚𦛚<EFBFBD>?
Apache 2.4+ <20>?Nginx 1.18+
PHP: 7.4 / 8.0 / 8.1 / 8.2
鈭烐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD><EFBFBD>鈭? ecs.c6.large嚗?<3F>?GB嚗?<3F>?瞼500/<2F>?
AWS: t3.large嚗?<3F>?GB嚗?<3F>?$70/<2F>?
<EFBFBD>曇悖鈭? SA2.MEDIUM4嚗?<3F>?GB嚗?<3F>?瞼450/<2F>?
撟游漲<EFBFBD>鞉𧋦: $6K-8K
```
#### <20>煺漣<E785BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```yaml
<EFBFBD><EFBFBD>? 10-50銝芷★<E88AB7><EFBFBD>10K-100K<30>∟扇敶?
<EFBFBD><EFBFBD><EFBFBD>滨蔭:
CPU: 4<EFBFBD>?@ 3.0GHz+
<EFBFBD><EFBFBD><EFBFBD>: 16GB
蝖祉<EFBFBD>: 500GB SSD嚗<44><E59A97>SAN摮睃<E691AE>嚗?
撣血捐: 50Mbps
蝟餌<EFBFBD>: Ubuntu 22.04 LTS
<EFBFBD>唳旿摨?
MySQL: 8.0+ <20>?MariaDB 10.5+
摮睃<EFBFBD>: 200GB嚗<EFBFBD>𡠺蝡𧢲<EFBFBD><EFBFBD>膥嚗?
餈墧𦻖<EFBFBD>? <20><>憭?00
Web<EFBFBD>滚𦛚<EFBFBD>?
Apache 2.4+ <20>?Nginx 1.20+
PHP: 8.1+嚗<><E59A97><EFBFBD><E689AF><EFBFBD>隡矋<E99AA1>
PHP-FPM餈𤤿<E9A488><F0A4A4BF>? 50-100
韐蠘蝸<EFBFBD><EFBFBD>:
<EFBFBD><EFBFBD><EFBFBD>憭阳eb<EFBFBD><EFBFBD><EFBFBD> + LB
鈭烐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD><EFBFBD>鈭? ecs.c6.xlarge嚗?<3F>?6GB嚗?<3F>?瞼1200/<2F>?
AWS: t3.xlarge嚗?<3F>?6GB嚗?<3F>?$150/<2F>?
撟游漲<EFBFBD>鞉𧋦: $15K-20K
```
#### <20>煺漣<E785BA><EFBFBD><EFBFBD><EFBFBD>?隡<><E99AA1>蝥改<E89DA5>
```yaml
<EFBFBD><EFBFBD>? 100+憿寧𤌍嚗?00銝?霈啣<E99C88><EFBFBD><E59A97><EFBFBD><EFBFBD><E7AEB8>函蔡
<EFBFBD><EFBFBD>:
Web撅? 2-4<>訖eb<65>滚𦛚<E6BB9A><EFBFBD>韐蠘蝸<E8A098><E89DB8>﹛嚗?
- 瘥誩蝱: 8<EFBFBD>?6GB
<EFBFBD>唳旿摨枏<EFBFBD>: 銝颱<EFBFBD><EFBFBD><EFBFBD>
- 銝餃<EFBFBD>: 16<EFBFBD>?2GB
- 隞𤾸<EFBFBD>: 16<EFBFBD>?2GB嚗<42>粉韐蠘蝸<E8A098><E89DB8><EFBFBD>嚗?
摮睃<EFBFBD>撅?
- <EFBFBD><EFBFBD><EFBFBD>滚𦛚<EFBFBD>? NFS/撖寡情摮睃<E691AE>
- 摰寥<EFBFBD>: 2TB-5TB
蝻枏<EFBFBD>撅?
- Redis: 8<EFBFBD>?6GB
擃睃虾<EFBFBD>?
- <EFBFBD>唳旿摨㮖蜓隞𤾸<EFBFBD><EFBFBD>?
- Web<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頧祉宏
- 瘥𤩺𠯫憭<EFBFBD>遢+撘<>𧑐摰寧<E691B0>
<EFBFBD>烐綉:
- Prometheus + Grafana
- <EFBFBD><EFBFBD><EFBFBD>𡁜<EFBFBD>嚗𠄌LK嚗?
- APM<EFBFBD>烐綉
鈭烐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD>? 瞼15K-30K/<2F>?
撟游漲<EFBFBD>鞉𧋦: $50K-100K
```
### 頧臭辣靘肽<E99D98><EFBFBD><E79A9C>
#### 敹<><E695B9><EFBFBD>
```bash
# <20><EFBFBD>蝟餌<E89D9F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
Ubuntu 22.04 LTS # <20><EFBFBD>
CentOS 8 / Rocky Linux 8 # 隡<><E99AA1>蝥?
Debian 11
# Web<65>滚𦛚<E6BB9A><EFBFBD>隞駁<E99A9E><EFBFBD><EFBFBD>嚗?
Apache 2.4+ # REDCap摰䀹䲮<E480B9><EFBFBD>
- mod_rewrite enabled
- mod_ssl enabled
- mod_headers enabled
Nginx 1.18+ # <20><EFBFBD><E689AF>游末嚗屸<E59A97>蝵桀<E89DB5><E6A180>?
# PHP嚗<50><EFBFBD>?.1嚗?
PHP 7.4 / 8.0 / 8.1 / 8.2
- PHP-FPM
- php-cli
- php-mysql / php-mysqli
- php-gd
- php-curl
- php-zip
- php-mbstring
- php-xml
- php-json
- php-ldap嚗<70><E59A97><EFBFBD><EFBFBD>LDAP霈方<E99C88>嚗?
- php-soap嚗<70><E59A97><EFBFBD><EFBFBD>Web Service<63><65><EFBFBD>嚗?
# <20>唳旿摨橒<E691A8>隞駁<E99A9E><EFBFBD><EFBFBD>嚗?
MySQL 5.7+ / 8.0+ # 銝餅<E98A9D><E9A485>㗇𥋘
MariaDB 10.3+ / 10.5+ # 撘<>皞鞉𤜯隞?
# PHP<48>滨蔭閬<E894AD><E996AC>
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 300
memory_limit = 256M
```
#### <20><EFBFBD><EFBFBD>隞塚<E99A9E>憓𧼮撩<F0A7BCAE><EFBFBD>嚗?
```bash
# SMTP<54>滚𦛚<E6BB9A><EFBFBD><E58981>桐辣<E6A190>𡁶䰻嚗?
<EFBFBD><EFBFBD>嚗𡁶鍂鈭𤾸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD>霂瑯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桃<EFBFBD>
<EFBFBD>厰★嚗?
- SendGrid嚗<64><EFBFBD><EFBFBD>鈭烐<E988AD><E78390><EFBFBD>
- Amazon SES
- <20>芸遣Postfix
- 隡<><E99AA1>SMTP嚗㇉ffice 365<36><35>mail嚗?
# SSL霂<4C>髡嚗𠃍TTPS嚗?
<EFBFBD><EFBFBD>嚗𡁶<EFBFBD>鈭抒㴓憓<EFBFBD><EFBFBD><EFBFBD>瘙?
<EFBFBD>厰★嚗?
- Let's Encrypt嚗<74><E59A97>韐對<E99F90>
- <20><><EFBFBD><EFBFBD>髡嚗𠃑eoTrust<73><74>igiCert嚗?
- 隡<><E99AA1><EFBFBD><EFBFBD><EFBFBD>CA
# LDAP/Active Directory嚗<79><E59A97><EFBFBD>寧蒈敶𤏪<E695B6>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- OpenLDAP
- Microsoft AD
- Azure AD
# <20><EFBFBD>憓?WAF
<EFBFBD><EFBFBD>嚗?
- UFW / firewalld嚗<64><EFBFBD>粹俈<E7B2B9><EFBFBD>嚗?
- ModSecurity嚗Áeb摨𠉛鍂<F0A0899B><EFBFBD>憓辷<E68693>
- Cloudflare嚗㇃DN + DDoS<6F>脫擪嚗?
# <20>烐綉撌亙<E6928C>
<EFBFBD><EFBFBD>嚗?
- New Relic APM
- Datadog
- Prometheus + Grafana
```
---
## <20><20>函蔡<E587BD><EFBFBD>撖寞<E69296>
### <20><EFBFBD>1嚗鋽ocker摰孵膥<E5ADB5>函蔡嚗<E894A1><E59A97> <20><EFBFBD><E588BB><EFBFBD><EFBFBD><E69298>?瘚贝<E7989A>嚗?
#### 隡睃飵
```
<EFBFBD>?敹恍<E695B9>笔鍳<E7AC94><EFBFBD>1撠𤩺𧒄<F0A4A9BA><F0A79284><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>?<3F><EFBFBD><E887AC>𠉛氖嚗<E6B096><E59A97>瘙⊥<E79899>銝餅㦤嚗?
<EFBFBD>?<3F><EFBFBD><EFBFBD>宏嚗<E5AE8F><EFBFBD>典虾蝘餅<E89D98>嚗?
<EFBFBD>?<3F><>𧋦蝞∠<E89D9E><EFBFBD><E59A97><EFBFBD>𤩺<EFBFBD>蝑橘<E89D91>
<EFBFBD>?<3F><EFBFBD><E3AE96><EFBFBD><EFBFBD><E798A5>撱綽<E692B1>瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD>嚗?
```
#### 摰峕㟲Docker Compose<73>滨蔭
```yaml
# docker-compose.yml
version: '3.8'
services:
# MySQL<51>唳旿摨?
redcap-db:
image: mysql:8.0
container_name: redcap-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: redcap_root_123
MYSQL_DATABASE: redcap
MYSQL_USER: redcap_user
MYSQL_PASSWORD: redcap_pass_456
volumes:
- redcap-db-data:/var/lib/mysql
- ./mysql-init:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
networks:
- redcap-network
command: --default-authentication-plugin=mysql_native_password
# PHPMyAdmin嚗<6E><EFBFBD><EFBFBD>蝞∠<E89D9E>嚗?
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: redcap-phpmyadmin
restart: unless-stopped
environment:
PMA_HOST: redcap-db
PMA_USER: root
PMA_PASSWORD: redcap_root_123
ports:
- "8081:80"
networks:
- redcap-network
depends_on:
- redcap-db
# Apache + PHP + REDCap
redcap-web:
image: php:8.1-apache
container_name: redcap-apache
restart: unless-stopped
ports:
- "8080:80"
volumes:
# REDCap皞𣂷誨<F0A382B7><E8AAA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>见𢆡閫<F0A286A1><E996AB><EFBFBD>唳迨<E594B3><EFBFBD>嚗?
- ./redcap15.8.0:/var/www/html
# Apache<68>滨蔭
- ./apache/redcap.conf:/etc/apache2/sites-available/000-default.conf
# PHP<48>滨蔭
- ./php/php.ini:/usr/local/etc/php/php.ini
# 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>辣摮睃<E691AE>
- redcap-edocs:/var/www/html/edocs
- redcap-temp:/var/www/html/temp
environment:
REDCAP_DB_HOST: redcap-db
REDCAP_DB_NAME: redcap
REDCAP_DB_USER: redcap_user
REDCAP_DB_PASS: redcap_pass_456
networks:
- redcap-network
depends_on:
- redcap-db
# 摰㕑<E691B0>PHP<48><EFBFBD>
command: >
bash -c "
docker-php-ext-install mysqli pdo pdo_mysql gd zip &&
a2enmod rewrite ssl headers &&
apache2-foreground
"
networks:
redcap-network:
driver: bridge
volumes:
redcap-db-data:
redcap-edocs:
redcap-temp:
```
#### <20>函蔡甇仿炊嚗㇄ocker<65><EFBFBD>嚗?
```bash
# Step 1: <20>𥕦遣憿寧𤌍<E5AFA7><EFBFBD>
mkdir redcap-docker && cd redcap-docker
# Step 2: 閫<><E996AB>REDCap皞鞟<E79A9E>
unzip redcap_v15.8.0.zip
# 敺堒<E695BA>: redcap15.8.0/ <20><EFBFBD>
# Step 3: <20>𥕦遣docker-compose.yml
# 嚗<><E59A97>韐港<E99F90><E6B8AF><EFBFBD><EFBCB9>滨蔭嚗?
# Step 4: <20>𥕦遣Apache<68>滨蔭
mkdir apache
cat > apache/redcap.conf << 'EOF'
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html/redcap
<Directory /var/www/html/redcap>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF
# Step 5: <20>𥕦遣PHP<48>滨蔭
mkdir php
cat > php/php.ini << 'EOF'
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 300
memory_limit = 256M
date.timezone = Asia/Shanghai
EOF
# Step 6: <20>臬𢆡摰孵膥
docker-compose up -d
# Step 7: 璉<><E79289>亙捆<E4BA99>函𠶖<E587BD>?
docker-compose ps
# 摨磰砲<E7A3B0><EFBFBD>3銝芸捆<E88AB8><EFBFBD>銵䔶葉
# Step 8: 霈輸䔮REDCap摰㕑<E691B0><E39591>穃紡
# <20><EFBFBD>瘚讛<E7989A><E8AE9B><EFBFBD>http://localhost:8080/install.php
# Step 9: <20><EFBFBD><E58EA9>穃紡摰峕<E691B0>摰㕑<E691B0>
# - <20>唳旿摨㯄<E691A8>蝵殷<E89DB5>
# Host: redcap-db
# Database: redcap
# Username: redcap_user
# Password: redcap_pass_456
# Step 10: 摰㕑<E691B0>摰峕<E691B0><E5B395>𠬍<EFBFBD>霈輸䔮REDCap
# http://localhost:8080/
```
#### Docker<65><EFBFBD><E5AF9E><EFBFBD><EFBFBD><EFBFBD>?
```
<EFBFBD>𩤃<EFBFBD> <20>?: <20><><EFBFBD><E8BEA3><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>𠶖: 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>辣憭梯揖嚗峕<E59A97>瘜訫<E7989C><E8A8AB>占docs<63><EFBFBD>
<EFBFBD><EFBFBD>:
docker exec -it redcap-apache bash
chown -R www-data:www-data /var/www/html/edocs
chown -R www-data:www-data /var/www/html/temp
<EFBFBD>𩤃<EFBFBD> <20>?: <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?
<EFBFBD><EFBFBD>𠶖: REDCap<61><EFBFBD>餈墧𦻖MySQL
<EFBFBD><EFBFBD>: 摰孵膥蝵𤑳<E89DB5><F0A491B3>芸停蝏?
<EFBFBD><EFBFBD>:
# 蝑匧<E89D91>MySQL摰<4C><E691B0><EFBFBD>臬𢆡嚗?0蝘𡜐<E89D98>
docker-compose logs redcap-db
# <20><EFBFBD> "ready for connections" <20>𤾸<EFBFBD>霈輸䔮install.php
<EFBFBD>𩤃<EFBFBD> <20>?: PHP<48><EFBFBD>蝻箏仃
<EFBFBD><EFBFBD>𠶖: <20>鞟內蝻箏<E89DBB>GD摨瓐<E691A8><E79390>IP摨?
<EFBFBD><EFBFBD>:
# 餈𥕦<E9A488>摰孵膥摰㕑<E691B0>
docker exec -it redcap-apache bash
docker-php-ext-install gd zip mysqli
service apache2 reload
<EFBFBD>𩤃<EFBFBD> <20>?: <20><EFBFBD><E689AF><EFBFBD>
<EFBFBD><EFBFBD>𠶖: 憿菟𢒰<E88F9F>㰘蝸<E3B098><EFBFBD>Docker on Windows/Mac嚗?
<EFBFBD><EFBFBD>: <20><>辣I/O<><EFBFBD>撌?
<EFBFBD><EFBFBD>:
# 雿輻鍂<E8BCBB><EFBFBD><E8B3A2><EFBFBD><EFBFBD>蝏穃<E89D8F><E7A983><EFBFBD>
volumes:
- redcap-code:/var/www/html # <20><EFBFBD><E8B3A2><EFBFBD>敹恬<E695B9>
# 銝滩<E98A9D>: - ./redcap:/var/www/html # 蝏穃<E89D8F><E7A983><EFBFBD>蝸嚗<E89DB8><E59A97>嚗?
```
---
### <20><EFBFBD>2嚗𡁏<E59A97><F0A1818F><EFBFBD>蝵莎<E89DB5><E88E8E>煺漣<E785BA><EFBFBD><E887AC><EFBFBD>嚗?
#### Ubuntu 22.04 LTS<54>函蔡<E587BD>𡁏𧋦
```bash
#!/bin/bash
# REDCap<61>煺漣<E785BA><EFBFBD><E887AC>芸𢆡<E88AB8><EFBFBD>蝵脰<E89DB5><E884B0>?
# <20><>鍂鈭𠬍<E988AD>Ubuntu 22.04 LTS
set -e # <20><><EFBFBD><EFBFBD>躰秤蝡见朖<E8A781><E69C96><EFBFBD>?
echo "========================================"
echo "REDCap 15.8.0 <20>芸𢆡<E88AB8><EFBFBD>蝵脰<E89DB5><E884B0>?
echo "========================================"
# ========== 1. 蝟餌<E89D9F><E9A48C>湔鰵 ==========
echo "[Step 1] <20>湔鰵蝟餌<E89D9F>..."
apt update && apt upgrade -y
# ========== 2. 摰㕑<E691B0>Apache ==========
echo "[Step 2] 摰㕑<E691B0>Apache 2.4..."
apt install -y apache2
a2enmod rewrite ssl headers
systemctl enable apache2
systemctl start apache2
# ========== 3. 摰㕑<E691B0>PHP 8.1 ==========
echo "[Step 3] 摰㕑<E691B0>PHP 8.1..."
apt install -y software-properties-common
add-apt-repository -y ppa:ondrej/php
apt update
apt install -y \
php8.1 \
php8.1-cli \
php8.1-fpm \
php8.1-mysql \
php8.1-gd \
php8.1-curl \
php8.1-zip \
php8.1-mbstring \
php8.1-xml \
php8.1-ldap \
php8.1-soap \
libapache2-mod-php8.1
# <20>滨蔭PHP
cat > /etc/php/8.1/apache2/conf.d/99-redcap.ini << 'EOF'
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 300
memory_limit = 256M
date.timezone = Asia/Shanghai
EOF
systemctl restart apache2
# ========== 4. 摰㕑<E691B0>MySQL 8.0 ==========
echo "[Step 4] 摰㕑<E691B0>MySQL 8.0..."
apt install -y mysql-server mysql-client
# <20>臬𢆡MySQL
systemctl enable mysql
systemctl start mysql
# 摰匧<E691B0><E58CA7>惩𤐄MySQL
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongRootPassword123!';"
mysql -e "DELETE FROM mysql.user WHERE User='';"
mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
mysql -e "DROP DATABASE IF EXISTS test;"
mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';"
mysql -e "FLUSH PRIVILEGES;"
# <20>𥕦遣REDCap<61>唳旿摨枏<E691A8><E69E8F><EFBFBD>
REDCAP_DB_PASS=$(openssl rand -base64 32)
mysql -uroot -p'YourStrongRootPassword123!' << EOF
CREATE DATABASE redcap CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'redcap_user'@'localhost' IDENTIFIED BY '${REDCAP_DB_PASS}';
GRANT ALL PRIVILEGES ON redcap.* TO 'redcap_user'@'localhost';
FLUSH PRIVILEGES;
EOF
echo "<EFBFBD>唳旿摨枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂瑚<EFBFBD>摮矋<EFBFBD>嚗?{REDCAP_DB_PASS}"
# ========== 5. <20>函蔡REDCap隞<70><E99A9E> ==========
echo "[Step 5] <20>函蔡REDCap隞<70><E99A9E>..."
# 銝𠹺<E98A9D>redcap15.8.0.zip<69>?/tmp/
# <20>见𢆡<E8A781><EFBFBD><EFBFBD>SCP銝𠹺<E98A9D>
# scp redcap_v15.8.0.zip user@server:/tmp/
cd /var/www/html
unzip /tmp/redcap_v15.8.0.zip
mv redcap redcap_v15.8.0
# <20>𥕦遣蝚血噡<E8A180>暹𦻖嚗<F0A6BB96>䲮靘輻<E99D98><E8BCBB><EFBFBD><E7A08D><EFBFBD>
ln -s redcap_v15.8.0 redcap
# 霈曄蔭<E69B84><E894AD><EFBFBD>
chown -R www-data:www-data /var/www/html/redcap
chmod -R 755 /var/www/html/redcap
chmod -R 777 /var/www/html/redcap/edocs
chmod -R 777 /var/www/html/redcap/temp
# ========== 6. <20>滨蔭Apache<68>𡁏<EFBFBD>銝餅㦤 ==========
echo "[Step 6] <20>滨蔭Apache..."
cat > /etc/apache2/sites-available/redcap.conf << 'EOF'
<VirtualHost *:80>
ServerName redcap.yourdomain.com
ServerAdmin admin@yourdomain.com
DocumentRoot /var/www/html/redcap
<Directory /var/www/html/redcap>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 摰匧<E691B0>憭?
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
ErrorLog ${APACHE_LOG_DIR}/redcap_error.log
CustomLog ${APACHE_LOG_DIR}/redcap_access.log combined
</VirtualHost>
EOF
# <20>舐鍂蝡嗵<E89DA1>
a2ensite redcap.conf
a2dissite 000-default.conf
systemctl reload apache2
# ========== 7. <20>滨蔭<E6BBA8><EFBFBD>憓?==========
echo "[Step 7] <20>滨蔭<E6BBA8><EFBFBD>憓?.."
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw --force enable
# ========== 8. 摰㕑<E691B0>Let's Encrypt SSL霂<4C>髡 ==========
echo "[Step 8] 摰㕑<E691B0>SSL霂<4C>髡..."
apt install -y certbot python3-certbot-apache
# <20>芸𢆡<E88AB8><EFBFBD><EFBFBD>髡嚗<E9ABA1><E59A97><EFBFBD><E996AC><EFBFBD>滚歇閫<E6AD87><E996AB><EFBFBD>唳迨<E594B3>滚𦛚<E6BB9A><EFBFBD>
# certbot --apache -d redcap.yourdomain.com --non-interactive --agree-tos --email admin@yourdomain.com
# ========== 9. <20>滨蔭Cron隞餃𦛚 ==========
echo "[Step 9] <20>滨蔭Cron隞餃𦛚..."
cat > /etc/cron.d/redcap << 'EOF'
# REDCap Cron隞餃𦛚
*/1 * * * * www-data php /var/www/html/redcap/cron.php > /dev/null 2>&1
EOF
# ========== 10. 摰峕<E691B0> ==========
echo "========================================"
echo "<EFBFBD>?REDCap<61>函蔡摰峕<E691B0>嚗?
echo "========================================"
echo ""
echo "<22><> 銝衤<E98A9D>甇伐<E79487>"
echo "1. 霈輸䔮嚗冴ttp://your-server-ip/install.php"
echo "2. <20><EFBFBD><E58EA9>穃紡摰峕<E691B0>摰㕑<E691B0>"
echo "3. <20>唳旿摨㯄<E691A8>蝵殷<E89DB5>"
echo " Host: localhost"
echo " Database: redcap"
echo " Username: redcap_user"
echo " Password: ${REDCAP_DB_PASS}"
echo ""
echo "<EFBFBD>𩤃<EFBFBD> 霂瑕𦛚敹<F0A69B9A><E695B9>摮䀹㺭<E480B9><EFBFBD><EFBFBD><E69296>嚗?
```
#### <20>见𢆡<E8A781>函蔡<E587BD><E894A1><EFBFBD><EFBFBD>?
```
<EFBFBD>𩤃<EFBFBD> <20>?: SELinux<75>餅迫嚗㇃entOS/RHEL嚗?
<EFBFBD><EFBFBD>𠶖: Permission denied<65>躰秤
<EFBFBD><EFBFBD>:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
<EFBFBD>𩤃<EFBFBD> <20>?: <20><>辣銝𠹺<E98A9D>憭梯揖
<EFBFBD><EFBFBD>𠶖: edocs<63><EFBFBD><E6A180><EFBFBD><E683A9><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>:
chown -R www-data:www-data /var/www/html/redcap/edocs
chmod -R 777 /var/www/html/redcap/edocs
<EFBFBD>𩤃<EFBFBD> <20>?: Cron隞餃𦛚銝齿<E98A9D>銵?
<EFBFBD><EFBFBD>𠶖: 霈<E99C88>隞餃𦛚<E9A483><F0A69B9A><EFBFBD>隞嗡<E99A9E><E597A1><EFBFBD>?
<EFBFBD><EFBFBD>:
# 璉<><E79289>卉ron<6F><EFBFBD>
tail -f /var/log/syslog | grep CRON
# <20>见𢆡瘚贝<E7989A>cron
sudo -u www-data php /var/www/html/redcap/cron.php
<EFBFBD>𩤃<EFBFBD> <20>?: <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?
<EFBFBD><EFBFBD>𠶖: Can't connect to MySQL
<EFBFBD><EFBFBD>:
# 璉<><E79289>仗ySQL<51>臬炏餈鞱<E9A488>
systemctl status mysql
# 瘚贝<E7989A>餈墧𦻖
mysql -uredcap_user -p redcap
<EFBFBD>𩤃<EFBFBD> <20>?: <20>桐辣<E6A190><EFBFBD><E785BE>仃韐?
<EFBFBD><EFBFBD>𠶖: 靚<><EFBFBD><E4B0BB>霂瑟<E99C82>瘜訫<E7989C><E8A8AB>?
<EFBFBD><EFBFBD>: <20><EFBFBD>蝵娟MTP
<EFBFBD><EFBFBD>:
# <20>沖EDCap<61><EFBFBD>銝剖<E98A9D><E58996>滨蔭SMTP
# <20>碶蝙<E7A2B6>沒endGrid/Amazon SES
```
---
## <20><> <20>函蔡憭齿<E686AD>摨西<E691A8>隡?
### 憭齿<E686AD>摨行<E691A8><E8A18C><EFBFBD><EFBFBD>1-5<><35><EFBFBD>
| <20><EFBFBD> | 憭齿<E686AD>摨?| <20>園𡢿 | 撣貉<E692A3><E8B289><EFBFBD> | <20><EFBFBD> |
|------|--------|------|----------|------|
| **<EFBFBD><EFBFBD>REDCap霈詨虾** | <20>椬 2/5 | 1-4<>?| 摰⊥鸌<E28AA5>?| 瘜訫𦛚瘚<F0A69B9A><E7989A> |
| **<EFBFBD>滚𦛚<EFBFBD><EFBFBD>憭?* | <20>叚 1/5 | 1撠𤩺𧒄 | 鈭穃<E988AD><E7A983><EFBFBD><EFBFBD>㗇𥋘 | <20>?|
| **LAMP<4D><EFBFBD><E887AC>剖遣** | <20>椬 2/5 | 2-4撠𤩺𧒄 | PHP<48><50>𧋦<EFBFBD>澆捆 | 靘肽<E99D98>摰㕑<E691B0> |
| **REDCap摰㕑<E691B0>** | <20>椬 2/5 | 1-2撠𤩺𧒄 | <20>唳旿摨㯄<E691A8>蝵?| <20><><EFBFBD><E8BEA3><EFBFBD> |
| **SMTP<54>滨蔭** | <20>椬 3/5 | 1-3撠𤩺𧒄 | <20>桐辣鋡急<E98BA1> | <20><EFBFBD><E6BB9A><EFBFBD>隞?|
| **SSL霂<4C>** | <20>叚 1/5 | 30<33><30><EFBFBD> | <20><EFBFBD><EFBFBD><E996AB> | <20>?|
| **摰匧<E691B0><E58CA7>惩𤐄** | <20>𣞁 4/5 | 1-2憭?| 閫<><E996AB><EFBFBD>滨蔭 | <20><EFBFBD>憓?WAF |
| **<EFBFBD><EFBFBD>隡睃<EFBFBD>** | <20>𣞁 4/5 | 1-2憭?| <20>䰻霂?| MySQL靚<4C><E99D9A> |
| **憭<>遢蝑𣇉裦** | <20>椬 2/5 | 2撠𤩺𧒄 | 摮睃<E691AE>蝛粹𡢿 | <20>芸𢆡<E88AB8>?|
| **<EFBFBD>烐綉<EFBFBD>𡃏郎** | <20>椬 3/5 | 4撠𤩺𧒄 | <20><><EFBFBD><EFBFBD>㗇𥋘 | 撌亙<E6928C><E4BA99><EFBFBD><EFBFBD> |
### <20><EFBFBD><EFBFBD>
```
<EFBFBD>函蔡憭齿<EFBFBD>摨佗<EFBFBD>3.5/5嚗<35>葉蝑匧<E89D91>擃矋<E69383>
<EFBFBD><EFBFBD>嚗?
<EFBFBD>?隡睃飵嚗?
- REDCap摰㕑<E691B0><E39591>穃紡<E7A983>见末嚗<E69CAB>㦛敶<E695B6><EFBCB7>屸𢒰嚗?
- 摰䀹䲮<E480B9><E4B2AE>﹝霂衣<E99C82>
- 蝷曉躹<E69B89><EFBFBD>瘣餉<E798A3>
<EFBFBD>𩤃<EFBFBD> <20><EFBFBD>嚗?
- LAMP<4D><EFBFBD>靘肽<E99D98>憭𡄯<E686AD>10+銝枉HP<48><EFBFBD>嚗?
- <20><><EFBFBD><E8BEA3><EFBFBD><EFBFBD>枏枂<E69E8F>?
- SMTP<54>滨蔭蝜<E894AD><E89D9C>
- 摰匧<E691B0><E58CA7>惩𤐄<E683A9><F0A49084><EFBFBD><E996AC>銝𡁶䰻霂?
撖寞<EFBFBD>嚗?
- 瘥犔ordPress蝞<73><E89D9E>𤏪<EFBFBD>靘肽<E99D98><E882BD><EFBFBD>嚗?
- 瘥渊oodle憭齿<E686AD><EFBFBD><E59A97>蝵格凒憭𡄯<E686AD>
- 瘥磰䌊<E7A3B0>𠉛頂蝏毺<E89D8F><E6AFBA>𤏪<EFBFBD><F0A48FAA><EFBFBD>頧臭辣嚗?
```
---
## <20><> 敹恍<E695B9><EFBFBD>憪页<E686AA>3蝘漤<E89D98>蝵脰楝敺?
### 頝臬<E9A09D>1嚗鋽ocker敹恍<E695B9><EFBFBD>撉䕘<E69289>1撠𤩺𧒄嚗?
```bash
# <20><>鍂鈭𠬍<E988AD><EFBFBD><E69298><EFBFBD>霂𨰻<E99C82><F0A8B0BB>xternal Module撘<65><E69298>?
# 1. <20><EFBFBD><E99285>滨蔭隞枏<E99A9E><EFBFBD><E59A97>霈曆<E99C88>撌脣<E6928C>撱綽<E692B1>
git clone https://github.com/your-org/redcap-docker.git
cd redcap-docker
# 2. <20>曄蔭REDCap皞鞟<E79A9E>
# 撠<>edcap_v15.8.0.zip閫<70><E996AB><EFBFBD><EFBFBD><E595A3>滨𤌍敶?
# 3. 銝<><E98A9D>桀鍳<E6A180>?
docker-compose up -d
# 4. 霈輸䔮
http://localhost:8080/install.php
# 5. 摰峕<E691B0>摰㕑<E691B0><E39591>穃紡
# <20>唳旿摨㯄<E691A8>蝵殷<E89DB5>
# Host: redcap-db
# Database: redcap
# Username: redcap_user
# Password: redcap_pass_456
<EFBFBD>?隡睃飵嚗𡁜翰<F0A1819C><EFBFBD><E9BA84><EFBFBD><EFBFBD><E6BB9A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘥?
<EFBFBD>?<3F><>飵嚗帋<E59A97><E5B88B><EFBFBD><EFBFBD><EFBFBD>煺漣<E785BA><EFBFBD>
```
### 頝臬<E9A09D>2嚗帋<E59A97><E5B88B>滚𦛚<E6BB9A><EFBFBD><E586BD><EFBFBD><EFBFBD>蝵莎<E89DB5>1憭抬<E686AD>
```bash
# <20><>鍂鈭𠬍<E988AD>撠誩<E692A0><E8AAA9><EFBFBD><EFBD81><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E58CA7>函蔡摰<E691B0>
# 1. 韐凋僭鈭烐<E988AD><E78390>
<EFBFBD><EFBFBD>鈭䫿CS嚗?<3F>?GB嚗𪄇buntu 22.04
# 2. <20><EFBFBD><E689AF>芸𢆡<E88AB8>𤥁<EFBFBD><F0A4A581>?
wget https://your-domain.com/redcap-install.sh
chmod +x redcap-install.sh
sudo ./redcap-install.sh
# 3. 霈輸䔮
http://your-server-ip/install.php
# 4. 摰峕<E691B0>摰㕑<E691B0>
# 5. <20>滨蔭<E6BBA8><EFBFBD><E7AC94>玺SL
certbot --apache -d redcap.yourdomain.com
<EFBFBD>?隡睃飵嚗𡁶迅摰𠾼<E691B0><F0A0BEBC><EFBFBD><EFBFBD><EFBFBD><E585B7><EFBFBD><EFBFBD>
<EFBFBD>?<3F><>飵嚗𡁻<E59A97><EFBFBD><E996AC>蝏渡䰻霂?
```
### 頝臬<E9A09D>3嚗𡁏<E59A97>蝞⊥<E89D9E><E28AA5><EFBFBD>0憭抬<E686AD>
```bash
# <20><>鍂鈭𠬍<E988AD>敹恍<E695B9><EFBFBD><E785BA><EFBFBD><E58D9D><EFBFBD>餈鞟輕<E99E9F><EFBFBD>
# REDCap摰䀹䲮霈方<E99C88><E696B9>条恣<E69DA1>滚𦛚<E6BB9A><F0A69B9A><EFBFBD>
1. Vanderbilt CTSA
https://redcap.vanderbilt.edu/consortium/pricing.php
隞瑟聢嚗?5K-15K/撟?
2. Academic Health Center REDCap Hosting
https://ahcredcap.org/
隞瑟聢嚗?3K-10K/撟?
3. 蝚砌<E89D9A><E7A08C><EFBFBD>蝞∴<E89D9E><E288B4><EFBFBD>撉諹<E69289><E8ABB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Veeva Vault EDC
Medidata Rave
<EFBFBD>?隡睃飵嚗𡁻妟餈鞟輕<E99E9F><E8BC95><EFBFBD><EFBFBD>舐鍂<E88890><E98D82><EFBFBD>銝𡁏𣈲<F0A1818F>?
<EFBFBD>?<3F><>飵嚗朞晶<E69C9E><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59785>?
```
---
## <20><> <20>煺漣<E785BA><EFBFBD>摰匧<E691B0><E58CA7>惩𤐄皜<F0A49084><E79A9C>
### 敹<><E695B9>憿對<E686BF>P0嚗?
```bash
# 1. 靽格㺿暺䁅恕撖<E68195><E69296>
# 摰㕑<E691B0>摰峕<E691B0><E5B395>𡒊<EFBFBD><F0A1928A>喃耨<E59683><EFBFBD>
# - REDCap admin<69><EFBFBD><EFBFBD><E69296>
# - MySQL root撖<74><E69296>
# - <20><EFBFBD>蝟餌<E89D9F>root撖<74><E69296>
# 2. <20>舐鍂HTTPS嚗<53><EFBFBD><EFBFBD>
certbot --apache -d redcap.yourdomain.com
# <20>沖EDCap<61><EFBFBD>銝剖<E98A9D>嚗锭ystem Configuration
# Force HTTPS: Yes
# 3. <20>滨蔭<E6BBA8><EFBFBD>憓?
ufw enable
ufw allow 22/tcp # SSH嚗<48><E59A97><EFBFBD>貂P<E8B282>港蔔嚗?
ufw allow 80/tcp
ufw allow 443/tcp
ufw deny 3306/tcp # 蝳<>迫憭㚚<E686AD>霈輸䔮MySQL
# 4. <20>喲𡡒銝滚<E98A9D><EFBFBD><E996AC><EFBFBD>滚𦛚
systemctl disable bluetooth
systemctl disable cups
# 5. 摰𡁏<E691B0><F0A1818F>湔鰵
apt update && apt upgrade -y
# 霈曄蔭<E69B84>芸𢆡摰匧<E691B0><E58CA7>湔鰵
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
```
### <20><EFBFBD>憿對<E686BF>P1嚗?
```bash
# 6. <20>滨蔭Web摨𠉛鍂<F0A0899B><EFBFBD>憓辷<E68693>WAF嚗?
# ModSecurity + OWASP<53><EFBFBD><EFBFBD><E996AB><EFBFBD>?
apt install libapache2-mod-security2
cd /etc/modsecurity
wget https://github.com/coreruleset/coreruleset/archive/v3.3.4.tar.gz
tar -xzvf v3.3.4.tar.gz
# 7. <20>舐鍂摰∟恣<E2889F><EFBFBD>
# <20>沖EDCap<61><EFBFBD>銝剖<E98A9D><E58996>舐鍂嚗?
# - Login auditing
# - Page view logging
# - Data export logging
# 8. <20>滨蔭憭<E894AD>遢嚗<E981A2><E59A97><EFBFBD>亥䌊<E4BAA5><EFBFBD>
cat > /etc/cron.daily/redcap-backup << 'EOF'
#!/bin/bash
# <20>唳旿摨枏<E691A8>隞?
mysqldump -uredcap_user -p'PASSWORD' redcap | gzip > /backup/redcap_$(date +\%Y\%m\%d).sql.gz
# <20><>辣憭<E8BEA3>
tar -czf /backup/redcap_files_$(date +\%Y\%m\%d).tar.gz /var/www/html/redcap/edocs
# <20>𣳇膄30憭拙<E686AD><E68B99><EFBFBD><EFBFBD>隞?
find /backup -type f -mtime +30 -delete
EOF
chmod +x /etc/cron.daily/redcap-backup
# 9. <20>滨蔭fail2ban嚗<6E><EFBFBD><EFBFBD><E6B8B8>渲圾嚗?
apt install fail2ban
cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
[apache-auth]
enabled = true
EOF
systemctl restart fail2ban
# 10. <20>滨蔭<E6BBA8>烐綉<E78390>𡃏郎
# <20><EFBFBD>撌亙<E6928C>嚗?
# - Uptime<6D>烐綉嚗䦧ptimeRobot嚗<74><E59A97>韐對<E99F90>
# - <20><EFBFBD><E4BA99>烐綉嚗匁ogtail嚗<6C><EFBFBD><EFBFBD>SLS嚗?
# - APM<50>烐綉嚗鐭ew Relic嚗<63><E59A97>韐對<E99F90>
```
---
## <20><20>鞉𧋦隡啁<E99AA1><EFBFBD><E59A97><EFBFBD>笔𦶢<E7AC94><EFBFBD>嚗?
### <20>箸艶1嚗𡁜<E59A97><F0A1819C><EFBFBD>霂閧㴓憓?
```
<EFBFBD><EFBFBD><EFBFBD>鞉𧋦嚗?
- <20>滚𦛚<E6BB9A><EFBFBD>$0嚗<30>𧋦<EFBFBD>啁㩞<E59581>𡢅<EFBFBD>
- REDCap霈詨虾嚗?0嚗<30><EFBFBD><EFBFBD>嚗?
- SSL霂<4C>髡嚗?0嚗<30>䌊蝑曉<E89D91><EFBFBD>髡嚗?
- 撘<><E69298>穃極<E7A983><EFBFBD>$0嚗<30><E59A97>皞琜<E79A9E>
<EFBFBD>餉恣嚗?0
```
### <20>箸艶2嚗𡁜<E59A97><F0A1819C><EFBFBD>鈭抒㴓憓<E3B493><E68693>50<35><EFBFBD>嚗?
```
<EFBFBD><EFBFBD><EFBFBD>鞉𧋦嚗<EFBFBD><EFBFBD>甈⊥<EFBFBD><EFBFBD>嚗?
- REDCap霈詨虾<E8A9A8><EFBFBD>嚗?0嚗<30><E59A97><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- 鈭烐<E988AD><E78390>膥韐凋僭嚗?0嚗<30><E59A97><EFBFBD><EFBFBD><EFBFBD>韐對<E99F90>
- SSL霂<4C>髡嚗?0嚗𡿨et's Encrypt嚗?
- <20>函蔡摰墧鴌嚗?2K嚗?憭拐犖<E68B90>𨥈<EFBFBD>
撟游漲餈鞱𨯫<EFBFBD>鞉𧋦嚗?
- 鈭烐<E988AD><E78390>膥嚗?600/撟湛<E6929F><E6B99B><EFBFBD>鈭?<3F>?GB嚗?
- 撣血捐瘚<E68D90><E7989A>嚗?240/撟湛<E6929F>10Mbps嚗?
- 憭<>遢摮睃<E691AE>嚗?120/撟湛<E6929F>100GB OSS嚗?
- SMTP<54>滚𦛚嚗?0嚗𠄎endGrid<69>滩晶憸嘥漲嚗?
- <20>烐綉<E78390>𡃏郎嚗?0嚗㇎ptimeRobot<6F>滩晶嚗?
- 餈鞟輕鈭箏<E988AD>嚗?10K/撟湛<E6929F>0.2 FTE嚗?
5撟湔<EFBFBD><EFBFBD><EFBFBD>穿<EFBFBD>$57K
```
### <20>箸艶3嚗帋<E59A97>銝𡁶漣<F0A181B6><EFBFBD>嚗?00<30><EFBFBD>嚗?
```
<EFBFBD><EFBFBD><EFBFBD>鞉𧋦嚗?
- <20>滚𦛚<E6BB9A><EFBFBD>蝢歹<E89DA2>$5K嚗<4B><E59A97>韐哨<E99F90>
- 銝㮖<E98A9D><E3AE96>滚𦛚嚗?10K嚗<4B><EFBFBD><E6B2B2>挽霈?<3F>函蔡嚗?
- 摰匧<E691B0>摰∟恣嚗?5K嚗<4B>洵銝㗇䲮霂<E4B2AE>摯嚗?
撟游漲餈鞱𨯫<EFBFBD>鞉𧋦嚗?
- 鈭烐<E988AD><E78390>膥嚗?12K/撟湛<E6929F>4<EFBFBD>?6GB <20> 2嚗?
- <20>唳旿摨𣫮DS嚗?8K/撟湛<E6929F>擃睃虾<E79D83><EFBFBD>嚗?
- 韐蠘蝸<E8A098><E89DB8>﹛嚗?3K/撟?
- 撖寡情摮睃<E691AE>嚗?1K/撟?
- SMTP<54>滚𦛚嚗?1K/撟湛<E6929F>SendGrid銝㮖<E98A9D><E3AE96><EFBFBD><EFBFBD>
- <20>烐綉APM嚗?2K/撟湛<E6929F>New Relic嚗?
- 摰匧<E691B0><E58CA7>滚𦛚嚗?5K/撟湛<E6929F>WAF + DDoS嚗?
- 餈鞟輕鈭箏<E988AD>嚗?50K/撟湛<E6929F>1 FTE DevOps嚗?
- 撟游漲摰∟恣嚗?10K/撟湛<E6929F>HIPAA<41><41><EFBFBD>嚗?
5撟湔<EFBFBD><EFBFBD><EFBFBD>穿<EFBFBD>$480K
```
---
## <20>㴓 撖寞<E69296>憿寧𤌍<E5AFA7><F0A48C8D>遣霈?
### 敶枏<E695B6><E69E8F>嗆挾撱箄悅嚗𡁜<E59A97>銝齿<E98A9D><EFBFBD><E4BAA6>函蔡REDCap
```
<EFBFBD><EFBFBD>眏嚗?
1. <20>?<3F>典歇<E585B8>兴EDCap皞𣂷誨<F0A382B7><E8AAA8><EFBFBD>redcap15.8.0/嚗?
2. <20>?<3F>臭誑<E887AD>𠉛弦External Module撘<65><E69298>𡢅<EFBFBD><F0A1A285>𣳇<EFBFBD>餈鞱<E9A488><E99EB1><EFBFBD>嚗?
3. <20>?<3F>臭誑<E887AD><E8AA91>粉API<50><49><EFBFBD><EFB99D><EFBFBD><EFBFBD>Schema
4. <20>?蝑厩摰朞<E691B0>撖寞𦻖<E5AF9E><EFBFBD><E59785>函蔡嚗<E894A1><E59A97><EFBFBD><EFBFBD><EFBFBD>皞琜<E79A9E>
<EFBFBD>圈𧫴畾萄虾隞亙<EFBFBD>嚗?
- <20>𠉛弦REDCap隞<70><E99A9E>蝏𤘪<E89D8F>
- 霈曇恣External Module<6C><EFBFBD>
- 蝻硋<E89DBB>config.json<6F>釶HP隞<50><E99A9E><EFBFBD>氖蝥選<E89DA5>
- <20><><EFBFBD><EFBFBD>唳旿頧祆揢<E7A586><EFBFBD>
- 霈曇恣API<50><49><EFBFBD><EFBFBD><EFBFBD>
```
### 雿閙𧒄<E99699>函蔡REDCap瘚贝<E7989A><E8B49D><EFBFBD>嚗?
```
<EFBFBD>嗆㦤嚗?
- <20><><EFBFBD><E996AC>霂𦭵xternal Module<6C>?
- <20><><EFBFBD><E996AC><EFBFBD>PI靚<49><EFBFBD>?
- <20><><EFBFBD><E996AC>霂閙㺭<E99699><EFBFBD>甇交𧒄
- <20><><EFBFBD>蝏坔恥<E59D94><EFBFBD>蝷箸𧒄
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
Docker<EFBFBD>函蔡嚗?撠𤩺𧒄敹恍<E695B9><E6818D>𨰹撱綽<E692B1>
<EFBFBD>賭誘嚗?
cd AIclinicalresearch/
mkdir redcap-dev
cd redcap-dev
# <20>𥕦遣docker-compose.yml
docker-compose up -d
# 摰峕<E691B0>嚗?
```
### <20>煺漣<E785BA><EFBFBD><E887AC>函蔡蝑𣇉裦
```
<EFBFBD><EFBFBD>A嚗𡁜恥<EFBFBD>瑁䌊撌梢<EFBFBD>蝵莎<EFBFBD><EFBFBD><EFBFBD>嚗?
- 雿牐賑<E78990><EFBFBD>靘𡻈xternal Module
- 摰<E691B0><EFBCB8>刻䌊撌梁<E6928C>REDCap銝𠰴<E98A9D>鋆?
- 雿牐賑銝齿㗁<E9BDBF><E39781><EFBFBD>蝏渲提隞?
隡睃飵嚗?
<EFBFBD>?<3F>𣳇<EFBFBD>餈鞟輕<E99E9F>鞉𧋦
<EFBFBD>?<3F>唳旿<E594B3>典恥<E585B8>瑞㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD>嚗?
<EFBFBD>?<3F><><EFBFBD><E79285><EFBFBD>苊嚗<E88B8A><E59A97>隞園<E99A9E><E59C92><EFBFBD>
<EFBFBD><EFBFBD>B嚗帋<EFBFBD>隞祆<EFBFBD>靘𥟇<EFBFBD>蝞⊥<EFBFBD><EFBFBD>?
- <20>函蔡REDCap + 雿牐賑<E78990><E8B391>xternal Module
- <20><EFBFBD><E39787>嗉晶嚗𠄎aaS璅<E79285>嚗?
<EFBFBD><EFBFBD>飵嚗?
<EFBFBD>?餈鞟輕<E99E9F>鞉𧋦擃矋<E69383>$50K+/撟湛<E6929F>
<EFBFBD>?霈詨虾<E8A9A8><E899BE><EFBFBD>憌𡡞埯嚗<E59FAF><E59A97>銝舘<E98A9D>敺瑕嵗蝖株恕嚗?
<EFBFBD>?<3F>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>遙嚗𠃍IPAA嚗?
撱箄悅嚗?
<EFBFBD>㴓 隡睃<E99AA1><E79D83><EFBFBD><E588BB><EFBFBD>A嚗<41><EFBFBD>瑁䌊撌梢<E6928C>蝵涮EDCap嚗?
```
---
## <20><> <20>函蔡<E587BD><E894A1><EFBFBD><EFBFBD><EFBFBD>皞?
### 摰䀹䲮<E480B9><E4B2AE>
```
1. REDCap摰㕑<E691B0><E39591><EFBFBD><EFBFBD>
/redcap15.8.0/Installation_Instructions.txt
2. REDCap<61><70><EFBFBD><EFBFBD>瘙?
https://projectredcap.org/software/requirements/
3. REDCap蝷曉躹霈箏<E99C88>
https://community.projectredcap.org/
4. External Module撘<65><E69298><EFBFBD>獢?
/redcap_external_module_framework_docs_main/
```
### 蝚砌<E89D9A><E7A08C><EFBFBD>蝔?
```
1. GitHub REDCap Docker
https://github.com/123andy/redcap-docker-compose
2. DigitalOcean REDCap<61>函蔡<E587BD><EFBFBD>
https://www.digitalocean.com/community/tutorials/how-to-install-redcap
3. YouTube閫<65><E996AB><EFBFBD><EFBFBD>
<20>𦦵揣嚗?REDCap installation tutorial"
```
---
## <20>𤁗 <20><EFBFBD>銝舘<E98A9D><E88898>典遣霈?
### <20><EFBFBD><E482BF><EFBFBD><E587BD><EFBFBD>
**Q1: 撖寞𦻖REDCap<61><EFBFBD><EFBFBD><E996AC>蝵脣<E89DB5>嚗?*
A: <20>?**<2A><EFBFBD>**嚗屸<E59A97><EFBFBD><E996AC>蝵涮EDCap<61>滚𦛚<E6BB9A><EFBFBD><E586BD><EFBFBD><E8B3A2><EFBFBD>瘚贝<E7989A>撖寞𦻖<E5AF9E><EFBFBD><E8A098>?
**Q2: <20>函蔡憭齿<E686AD><E9BDBF><EFBFBD>**
A: <20>椬 **銝剔<E98A9D>憭齿<E686AD>摨?*嚗?.5/5<><35><EFBFBD>
- Docker<65><EFBFBD>嚗?-2撠𤩺𧒄嚗<F0A79284><E59A97><EFBFBD>𤏪<EFBFBD>
- <20>煺漣<E785BA><EFBFBD>嚗?-2憭抬<E686AD>銝剔<E98A9D>嚗?
-<><E99AA1>蝥改<E89DA5>3-5憭抬<E686AD>憭齿<E686AD>嚗?
**Q3: <20><><EFBFBD><E996AC><EFBFBD>辺隞塚<E99A9E>**
A:
1. <20><> REDCap霈詨虾嚗<E899BE><E59A97><EFBFBD><EFBFBD><E4BAA5><EFBFBD><EFBFBD>
2. <20>𠒣 REDCap皞𣂷誨<F0A382B7><E8AAA8><EFBFBD>撌脫<E6928C><E884AB><EFBFBD><EFBFBD>
3. <20>棅儭?<3F>滚𦛚<E6BB9A><EFBFBD>2<EFBFBD>?GB韏瘀<E99F8F>
4. <20>𩣪 SMTP<54>桐辣<E6A190>滚𦛚
**Q4: 頧舐隞嗉<E99A9E><EFBFBD><E79899>**
A:
- CPU: 2<>?
- <20><><EFBFBD>: 8GB+
- 蝖祉<E89D96>: 100GB+ SSD
- 頧臭辣: LAMP<4D><50><EFBFBD>Linux + Apache + MySQL + PHP嚗?
### 蝡见朖銵<E69C96>𢆡
```
Step 1: <20><EFBFBD><E596B3>函蔡<E587BD><EFBFBD>
<20><EFBFBD> Docker嚗<72><E59A97><EFBFBD><EFBFBD>霂𤏪<E99C82> <20>?1撠𤩺𧒄摰峕<E691B0>
<20><EFBFBD> <20>见𢆡<E8A781>函蔡嚗<E894A1><E59A97>鈭抒㴓憓<E3B493><E68693> <20>?1憭拙<E686AD><E68B99>?
Step 2: <20><><EFBFBD><EFBFBD><EFBFBD>
- 韐凋僭鈭烐<E988AD><E78390>膥嚗<E886A5><E59A97><EFBFBD><EFBFBD>嚗?
- 摰㕑<E691B0>Docker嚗<72><E59A97><EFBFBD><EFBFBD>嚗?
- 蝖株恕REDCap霈詨虾<E8A9A8><EFBFBD>?
Step 3: <20><EFBFBD><E689AF>函蔡
- <20><EFBFBD><E58EA9><EFBFBD><EFBFBD>郊撉斗<E69289>雿?
- 霈啣<E99C88><E595A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䔮憸?
- 摰峕<E691B0>摰㕑<E691B0><E39591>穃紡
Step 4: 撉諹<E69289>
- <20>𥕦遣瘚贝<E7989A>憿寧𤌍
- 敶訫<E695B6>瘚贝<E7989A><E8B49D>唳旿
- 瘚贝<E7989A>API靚<49>
Step 5: 撘<>憪𢱑xternal Module撘<65><E69298>?
- <20>𥕦遣璅<E79285><E288AA><EFBFBD>
- 蝻硋<E89DBB>config.json
- 瘚贝<E7989A>Hook<6F><EFBFBD>
```
---
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦**嚗鯝1.0
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>?*嚗?025-12-30
**銝𧢲活<F0A7A2B2>湔鰵**嚗𡁻<E59A97>蝵脣<E89DB5><E884A3>𣂼<EFBFBD>銵亙<E98AB5>摰鮋<E691B0><E9AE8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䔮憸?
---
**<EFBFBD><EFBFBD> <20><><EFBFBD><E996AC>撣格<E692A3><E6A0BC>𥕦遣Docker<65>函蔡<E587BD>𡁏𧋦<F0A1818F><EFBFBD><E6A2B9>𤥁<EFBFBD><F0A4A581><EFBFBD><EFBFBD><EFBFBD><E597A1>函蔡<E587BD><EFBFBD><E8A9A8><EFBFBD>䔮憸矋<E686B8>**