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

26 KiB
Raw Blame History

REDCap<EFBFBD>函蔡<EFBFBD><EFBFBD><EFBFBD>銝𡒊㴓憓<EFBFBD><EFBFBD><EFBFBD>祕閫?

*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗? v1.0
*<EFBFBD>𥕦遣<EFBFBD><EFBFBD>嚗? 2025-12-30
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗? 霂衣<E99C82>霂湔<E99C82>REDCap<61><70><EFBFBD>蝵脰<E89DB5><EFBFBD><E79899><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6BCB2>蔓蝖砌辣<E7A08C>∩辣
*<EFBFBD><EFBFBD><EFBFBD>園𡢿嚗? 25<32><35><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 潃鐥<E6BD83>潃鐥<E6BD83>潃?*撖寞𦻖<EFBFBD><EFBFBD>霂?


<EFBFBD><EFBFBD> <20><EFBFBD><E689AF><EFBFBD>

<EFBFBD><EFBFBD>蝏栞捏嚗?

  • <EFBFBD>?**<2A><EFBFBD><EFBFBD><EFBFBD>充EDCap<61><EFBFBD>憿餃<E686BF><E9A483>函蔡REDCap<61>滚𦛚<E6BB9A>?*
  • <EFBFBD>椬 **<2A>函蔡憭齿<E686AD>摨佗<E691A8>銝剔<E98A9D>**嚗?.5/5<><35><EFBFBD>
  • <EFBFBD><EFBFBD> <EFBFBD>函蔡<EFBFBD>園𡢿嚗?
    • 瘚贝<EFBFBD><EFBFBD><EFBFBD>嚗㇄ocker嚗㚁<EFBFBD>1-2撠𤩺𧒄
    • <EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?-2憭?
    • <EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>鉄摰匧<EFBFBD><EFBFBD>惩𤐄嚗㚁<EFBFBD>3-5憭?
  • <EFBFBD><EFBFBD>鞉𧋦嚗?
    • 瘚贝<EFBFBD><EFBFBD><EFBFBD>嚗?0嚗<30>𧋦<EFBFBD><EFBFBD><E595A3>𡢅<EFBFBD>
    • <EFBFBD>煺漣<EFBFBD><EFBFBD>嚗?500-3000/<2F><><EFBFBD>鈭烐<E988AD><E78390>膥嚗?

<EFBFBD>喲睸<EFBFBD>滨蔭<EFBFBD>∩辣嚗?

  1. <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>REDCap霈詨虾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝑曄蔡EULA嚗?
  2. <EFBFBD>𠒣 **銝贝蝸REDCap皞𣂷誨<F0A382B7>?*嚗ǐedcap15.8.0.zip嚗?
  3. <EFBFBD>棅儭?**<2A><><EFBFBD><EFBFBD>滚𦛚<E6BB9A>函㴓憓?*嚗𡿨AMP/LEMP<4D><50><EFBFBD>
  4. <EFBFBD>𩣪 <EFBFBD>滨蔭SMTP<EFBFBD>桐辣<EFBFBD>滚𦛚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

<EFBFBD><20>函蔡<E587BD><EFBFBD>霂鳴<E99C82><E9B3B4><EFBFBD><EFBFBD><E996AC><EFBFBD><E98A8B>

1. REDCap霈詨虾銝擧<E98A9D><EFBFBD><E99A9E><EFBFBD><EFBFBD><EFBFBD><E59A97>?<3F><><EFBFBD>喲睸嚗?

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

Step 1: <20>唾窈<E594BE><EFBFBD>REDCap<61>𠉛<EFBFBD>
  <20>?
霈輸䔮嚗冴ttps://projectredcap.org/join/
  <20>?
憛怠<E6869B><E680A0><EFBFBD>靽⊥<E99DBD><EFBFBD><EFBFBD>?憭批郎/<2F>𠉛弦<F0A0899B><EFBFBD>嚗?
  <20>?
蝑匧<E89D91>摰⊥鸌嚗?-4<><EFBFBD>

Step 2: 蝑曄蔡<E69B84><E894A1><EFBFBD><EFBFBD>瑁捂<E79181><EFBFBD>霈殷<E99C88>EULA嚗?
  <20>?
瘜訫<E7989C>摰⊥䰻嚗<E4B0BB><E59A97><E79487>銝𡁶鍂<F0A181B6><EFBFBD>
  <20>?
<0A><EFBFBD><E7AEB8><EFBFBD><EFBFBD>鈭箇倌摮?

Step 3: 銝贝蝸REDCap頧臭辣<E887AD>?
  <20>?
<0A><EFBFBD><E9A483>𠉛<EFBFBD><F0A0899B>𣂼<EFBFBD><F0A382BC><EFBFBD>
  <20>?
銝贝蝸嚗鬏edcap_vX.X.X.zip嚗<70>漲50-80MB嚗?

霈詨虾<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>儭?<3F><EFBFBD>嚗?

<EFBFBD>?<3F><>捂嚗?
- <20>𧼮<EFBFBD>銝𡁶<E98A9D>蝛嗥鍂<E597A5>?
- <20><EFBFBD><E7AEB8><EFBFBD><EFBFBD>雿輻鍂
- 撘<><E69298>䫿xternal Modules嚗<73><E59A97>皞𣂼<E79A9E>鈭恬<E988AD>

<0A>?蝳<>迫嚗?
- <20><><EFBFBD><EFBFBD><EFBFBD><E39A9A>?
- <20><EFBFBD><E88AB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- 靽格㺿<E6A0BC><EFBFBD><EFBFBD><E99A9E><EFBFBD>𡡞𡡒皞?

<0A>𩤃<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>霈?

<EFBFBD><EFBFBD><EFBFBD><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餈墧𦻖

<0A><><EFBFBD><EFBFBD><EFBFBD>隡堆<E99AA1>
<0A>?<3F><EFBFBD><E888AA><EFBFBD><EFBFBD><EFBFBD><E59A97>靘𥟇<E99D98>隞塚<E99A9E>銝漤<E98A9D><E6BCA4>娜EDCap<61>祈澈嚗?
<0A>𩤃<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>函蔡嚗?

<EFBFBD>棅儭?頧舐隞嗉<E99A9E><EFBFBD>祕閫?

<EFBFBD>滚𦛚<EFBFBD><EFBFBD>蝵株<EFBFBD>瘙?

<EFBFBD><EFBFBD>?瘚贝<E7989A><E8B49D><EFBFBD>

<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嚗?

<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<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

<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<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

<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?隡<><E99AA1>蝥改<E89DA5>

<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

頧臭辣靘肽<EFBFBD><EFBFBD><EFBFBD>

<EFBFBD><EFBFBD><EFBFBD>

# <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

<EFBFBD><EFBFBD><EFBFBD>隞塚<EFBFBD>憓𧼮撩<EFBFBD><EFBFBD>嚗?

# SMTP<54>滚𦛚<E6BB9A><EFBFBD><E58981>桐辣<E6A190>𡁶䰻嚗?<><E695B9>嚗𡁶鍂鈭𤾸<E988AD><F0A4BEB8><EFBFBD><EFBFBD><EFBFBD>仿<EFBFBD>霂瑯<E99C82><E791AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵桃<E89DB5>
<0A>厰★嚗?
  - SendGrid嚗<64><EFBFBD><EFBFBD>鈭烐<E988AD><E78390><EFBFBD>
  - Amazon SES
  - <20>芸遣Postfix
  - 隡<><E99AA1>SMTP嚗㇉ffice 365<36><35>mail嚗?

# SSL霂<4C>髡嚗𠃍TTPS嚗?<><E695B9>嚗𡁶<E59A97>鈭抒㴓憓<E3B493><EFBFBD><EFBFBD>瘙?
<0A>厰★嚗?
  - 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>
<0A><EFBFBD><EFBFBD><EFBFBD><E99AA1><EFBFBD><EFBFBD><E887AC><EFBFBD>
  - OpenLDAP
  - Microsoft AD
  - Azure AD

# <20><EFBFBD>憓?WAF
<0A><EFBFBD>嚗?
  - UFW / firewalld嚗<64><EFBFBD>粹俈<E7B2B9><EFBFBD>嚗?
  - ModSecurity嚗Áeb摨𠉛鍂<F0A0899B><EFBFBD>憓辷<E68693>
  - Cloudflare嚗㇃DN + DDoS<6F>脫擪嚗?

# <20>烐綉撌亙<E6928C>
<0A><EFBFBD>嚗?
  - New Relic APM
  - Datadog
  - Prometheus + Grafana

<EFBFBD><20>函蔡<E587BD><EFBFBD>撖寞<E69296>

<EFBFBD><EFBFBD>1嚗鋽ocker摰孵膥<EFBFBD>函蔡嚗<EFBFBD><EFBFBD> <20><EFBFBD><E588BB><EFBFBD><EFBFBD><E69298>?瘚贝<E7989A>嚗?

隡睃飵

<EFBFBD>?敹恍<E695B9>笔鍳<E7AC94><EFBFBD>1撠𤩺𧒄<F0A4A9BA><F0A79284><EFBFBD><EFBFBD><EFBFBD>
<0A>?<3F><EFBFBD><E887AC>𠉛氖嚗<E6B096><E59A97>瘙⊥<E79899>銝餅㦤嚗?
<0A>?<3F><EFBFBD><EFBFBD>宏嚗<E5AE8F><EFBFBD>典虾蝘餅<E89D98>嚗?
<0A>?<3F><>𧋦蝞∠<E89D9E><EFBFBD><E59A97><EFBFBD>𤩺<EFBFBD>蝑橘<E89D91>
<0A>?<3F><EFBFBD><E3AE96><EFBFBD><EFBFBD><E798A5>撱綽<E692B1>瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD>嚗?

摰峕㟲Docker Compose<73>滨蔭

# 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:

<EFBFBD>函蔡甇仿炊嚗㇄ocker<EFBFBD><EFBFBD>嚗?

# 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<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?

<EFBFBD>𩤃<EFBFBD> <20>?: <20><><EFBFBD><E8BEA3><EFBFBD><EFBFBD><EFBFBD>
<0A><>𠶖: 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>辣憭梯揖嚗峕<E59A97>瘜訫<E7989C><E8A8AB>占docs<63><EFBFBD><><E996AB>:
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

<0A>𩤃<EFBFBD> <20>?: <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?
<0A><>𠶖: REDCap<61><EFBFBD>餈墧𦻖MySQL
<0A><EFBFBD>: 摰孵膥蝵𤑳<E89DB5><F0A491B3>芸停蝏?
閫<><E996AB>:
# 蝑匧<E89D91>MySQL摰<4C><E691B0><EFBFBD>臬𢆡嚗?0蝘𡜐<E89D98>
docker-compose logs redcap-db
# <20><EFBFBD> "ready for connections" <20>𤾸<EFBFBD>霈輸䔮install.php

<0A>𩤃<EFBFBD> <20>?: PHP<48><EFBFBD>蝻箏仃
<0A><>𠶖: <20>鞟內蝻箏<E89DBB>GD摨瓐<E691A8><E79390>IP摨?
閫<><E996AB>:
# 餈𥕦<E9A488>摰孵膥摰㕑<E691B0>
docker exec -it redcap-apache bash
docker-php-ext-install gd zip mysqli
service apache2 reload

<0A>𩤃<EFBFBD> <20>?: <20><EFBFBD><E689AF><EFBFBD>
<0A><>𠶖: 憿菟𢒰<E88F9F>㰘蝸<E3B098><EFBFBD>Docker on Windows/Mac嚗?
<0A><EFBFBD>: <20><>辣I/O<><EFBFBD>撌?
閫<><E996AB>:
# 雿輻鍂<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>嚗?

<EFBFBD><EFBFBD>2嚗𡁏<EFBFBD><EFBFBD><EFBFBD>蝵莎<EFBFBD><EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?

Ubuntu 22.04 LTS<54>函蔡<E587BD>𡁏𧋦

#!/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 "<22>𩤃<EFBFBD>  霂瑕𦛚敹<F0A69B9A><E695B9>摮䀹㺭<E480B9><EFBFBD><EFBFBD><E69296>嚗?

<EFBFBD>见𢆡<EFBFBD>函蔡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?

<EFBFBD>𩤃<EFBFBD> <20>?: SELinux<75>餅迫嚗㇃entOS/RHEL嚗?
<0A><>𠶖: Permission denied<65>躰秤
閫<><E996AB>:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

<0A>𩤃<EFBFBD> <20>?: <20><>辣銝𠹺<E98A9D>憭梯揖
<0A><>𠶖: edocs<63><EFBFBD><E6A180><EFBFBD><E683A9><EFBFBD><EFBFBD><><E996AB>:
chown -R www-data:www-data /var/www/html/redcap/edocs
chmod -R 777 /var/www/html/redcap/edocs

<0A>𩤃<EFBFBD> <20>?: Cron隞餃𦛚銝齿<E98A9D>銵?
<0A><>𠶖: 霈<E99C88>隞餃𦛚<E9A483><F0A69B9A><EFBFBD>隞嗡<E99A9E><E597A1><EFBFBD>?
閫<><E996AB>:
# 璉<><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

<0A>𩤃<EFBFBD> <20>?: <20>唳旿摨栞<E691A8><E6A09E>亙仃韐?
<0A><>𠶖: Can't connect to MySQL
閫<><E996AB>:
# 璉<><E79289>仗ySQL<51>臬炏餈鞱<E9A488>
systemctl status mysql
# 瘚贝<E7989A>餈墧𦻖
mysql -uredcap_user -p redcap

<0A>𩤃<EFBFBD> <20>?: <20>桐辣<E6A190><EFBFBD><E785BE>仃韐?
<0A><>𠶖: 靚<><EFBFBD><E4B0BB>霂瑟<E99C82>瘜訫<E7989C><E8A8AB>?
<0A><EFBFBD>: <20><EFBFBD>蝵娟MTP
閫<><E996AB>:
# <20>沖EDCap<61><EFBFBD>銝剖<E98A9D><E58996>滨蔭SMTP
# <20>碶蝙<E7A2B6>沒endGrid/Amazon SES

<EFBFBD><EFBFBD> <20>函蔡憭齿<E686AD>摨西<E691A8>隡?

憭齿<EFBFBD>摨行<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-5<><35><EFBFBD>

<EFBFBD><EFBFBD> 憭齿<EFBFBD>摨? <EFBFBD>園𡢿 撣貉<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
<EFBFBD><EFBFBD>REDCap霈詨虾 <EFBFBD>椬 2/5 1-4<>? 摰⊥鸌<EFBFBD>? 瘜訫𦛚瘚<EFBFBD><EFBFBD>
*<EFBFBD>滚𦛚<EFBFBD><EFBFBD>憭? <EFBFBD>叚 1/5 1撠𤩺𧒄 鈭穃<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇𥋘 <EFBFBD>?
LAMP<EFBFBD><EFBFBD><EFBFBD>剖遣 <EFBFBD>椬 2/5 2-4撠𤩺𧒄 PHP<EFBFBD><EFBFBD>𧋦<EFBFBD>澆捆 靘肽<EFBFBD>摰㕑<EFBFBD>
REDCap摰㕑<EFBFBD> <EFBFBD>椬 2/5 1-2撠𤩺𧒄 <EFBFBD>唳旿摨㯄<EFBFBD>蝵? <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SMTP<EFBFBD>滨蔭 <EFBFBD>椬 3/5 1-3撠𤩺𧒄 <EFBFBD>桐辣鋡急<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞?
SSL霂<EFBFBD> <EFBFBD>叚 1/5 30<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
摰匧<EFBFBD><EFBFBD>惩𤐄 <EFBFBD>𣞁 4/5 1-2憭? <EFBFBD><EFBFBD><EFBFBD>滨蔭 <EFBFBD><EFBFBD>憓?WAF
<EFBFBD><EFBFBD>隡睃<EFBFBD> <EFBFBD>𣞁 4/5 1-2憭? <EFBFBD>䰻霂? MySQL靚<EFBFBD><EFBFBD>
<EFBFBD>遢蝑𣇉裦 <EFBFBD>椬 2/5 2撠𤩺𧒄 摮睃<EFBFBD>蝛粹𡢿 <EFBFBD>芸𢆡<EFBFBD>?
<EFBFBD>烐綉<EFBFBD>𡃏郎 <EFBFBD>椬 3/5 4撠𤩺𧒄 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇𥋘 撌亙<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

<EFBFBD><EFBFBD><EFBFBD>

<EFBFBD>函蔡憭齿<EFBFBD>摨佗<EFBFBD>3.5/5嚗<35>葉蝑匧<E89D91>擃矋<E69383>

<0A><EFBFBD>嚗?
<0A>?隡睃飵嚗?
- REDCap摰㕑<E691B0><E39591>穃紡<E7A983>见末嚗<E69CAB>㦛敶<E695B6><EFBCB7>屸𢒰嚗?
- 摰䀹䲮<E480B9><E4B2AE>﹝霂衣<E99C82>
- 蝷曉躹<E69B89><EFBFBD>瘣餉<E798A3>

<0A>𩤃<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>銝𡁶䰻霂?

撖寞<E69296>嚗?
- 瘥犔ordPress蝞<73><E89D9E>𤏪<EFBFBD>靘肽<E99D98><E882BD><EFBFBD>嚗?
- 瘥渊oodle憭齿<E686AD><EFBFBD><E59A97>蝵格凒憭𡄯<E686AD>
- 瘥磰䌊<E7A3B0>𠉛頂蝏毺<E89D8F><E6AFBA>𤏪<EFBFBD><F0A48FAA><EFBFBD>頧臭辣嚗?

<EFBFBD><EFBFBD> 敹恍<E695B9><EFBFBD>憪页<E686AA>3蝘漤<E89D98>蝵脰楝敺?

頝臬<EFBFBD>1嚗鋽ocker敹恍<EFBFBD><EFBFBD>撉䕘<EFBFBD>1撠𤩺𧒄嚗?

# <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

<0A>?隡睃飵嚗𡁜翰<F0A1819C><EFBFBD><E9BA84><EFBFBD><EFBFBD><E6BB9A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘥?
<0A>?<3F><>飵嚗帋<E59A97><E5B88B><EFBFBD><EFBFBD><EFBFBD>煺漣<E785BA><EFBFBD>

頝臬<EFBFBD>2嚗帋<EFBFBD><EFBFBD>滚𦛚<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝵莎<EFBFBD>1憭抬<EFBFBD>

# <20><>鍂鈭𠬍<E988AD>撠誩<E692A0><E8AAA9><EFBFBD><EFBD81><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E58CA7>函蔡摰<E691B0>

# 1. 韐凋僭鈭烐<E988AD><E78390>
<0A><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

<0A>?隡睃飵嚗𡁶迅摰𠾼<E691B0><F0A0BEBC><EFBFBD><EFBFBD><EFBFBD><E585B7><EFBFBD><EFBFBD>
<0A>?<3F><>飵嚗𡁻<E59A97><EFBFBD><E996AC>蝏渡䰻霂?

頝臬<EFBFBD>3嚗𡁏<EFBFBD>蝞⊥<EFBFBD><EFBFBD><EFBFBD>0憭抬<EFBFBD>

# <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

<0A>?隡睃飵嚗𡁻妟餈鞟輕<E99E9F><E8BC95><EFBFBD><EFBFBD>舐鍂<E88890><E98D82><EFBFBD>銝𡁏𣈲<F0A1818F>?
<0A>?<3F><>飵嚗朞晶<E69C9E><EFBFBD><E588B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E59785>?

<EFBFBD><EFBFBD> <20>煺漣<E785BA><EFBFBD>摰匧<E691B0><E58CA7>惩𤐄皜<F0A49084><E79A9C>

<EFBFBD><EFBFBD>憿對<EFBFBD>P0嚗?

# 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

<EFBFBD><EFBFBD>憿對<EFBFBD>P1嚗?

# 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>

<EFBFBD><20>鞉𧋦隡啁<E99AA1><EFBFBD><E59A97><EFBFBD>笔𦶢<E7AC94><EFBFBD>嚗?

<EFBFBD>箸艶1嚗𡁜<EFBFBD><EFBFBD><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>

<0A>餉恣嚗?0

<EFBFBD>箸艶2嚗𡁜<EFBFBD><EFBFBD><EFBFBD>鈭抒㴓憓<EFBFBD><EFBFBD>50<EFBFBD><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>

撟游漲餈鞱𨯫<E99EB1>鞉𧋦嚗?
- 鈭烐<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撟湔<E6929F><EFBFBD><E9A485>穿<EFBFBD>$57K

<EFBFBD>箸艶3嚗帋<EFBFBD>銝𡁶漣<EFBFBD><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>摯嚗?

撟游漲餈鞱𨯫<E99EB1>鞉𧋦嚗?
- 鈭烐<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撟湔<E6929F><EFBFBD><E9A485>穿<EFBFBD>$480K

<EFBFBD>㴓 撖寞<E69296>憿寧𤌍<E5AFA7><F0A48C8D>遣霈?

敶枏<EFBFBD><EFBFBD>嗆挾撱箄悅嚗𡁜<EFBFBD>銝齿<EFBFBD><EFBFBD><EFBFBD>函蔡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>

<0A>圈𧫴畾萄虾隞亙<E99A9E>嚗?
- <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>

雿閙𧒄<EFBFBD>函蔡REDCap瘚贝<EFBFBD><EFBFBD><EFBFBD>嚗?

<EFBFBD>嗆㦤嚗?
- <20><><EFBFBD><E996AC>霂𦭵xternal Module<6C>?
- <20><><EFBFBD><E996AC><EFBFBD>PI靚<49><EFBFBD>?
- <20><><EFBFBD><E996AC>霂閙㺭<E99699><EFBFBD>甇交𧒄
- <20><><EFBFBD>蝏坔恥<E59D94><EFBFBD>蝷箸𧒄

<0A><EFBFBD><E588BB><EFBFBD>嚗?
Docker<65>函蔡嚗?撠𤩺𧒄敹恍<E695B9><E6818D>𨰹撱綽<E692B1>

<0A>賭誘嚗?
cd AIclinicalresearch/
mkdir redcap-dev
cd redcap-dev
# <20>𥕦遣docker-compose.yml
docker-compose up -d
# 摰峕<E691B0>嚗?

<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>函蔡蝑𣇉裦

<EFBFBD><EFBFBD>A嚗𡁜恥<EFBFBD>瑁䌊撌梢<EFBFBD>蝵莎<EFBFBD><EFBFBD><EFBFBD>嚗?
- 雿牐賑<E78990><EFBFBD>靘𡻈xternal Module
- 摰<E691B0><EFBCB8>刻䌊撌梁<E6928C>REDCap銝𠰴<E98A9D>鋆?
- 雿牐賑銝齿㗁<E9BDBF><E39781><EFBFBD>蝏渲提隞?

隡睃飵嚗?
<0A>?<3F>𣳇<EFBFBD>餈鞟輕<E99E9F>鞉𧋦
<0A>?<3F>唳旿<E594B3>典恥<E585B8>瑞㴓憓<E3B493><E68693><EFBFBD><EFBFBD><EFBFBD>嚗?
<0A>?<3F><><EFBFBD><E79285><EFBFBD>苊嚗<E88B8A><E59A97>隞園<E99A9E><E59C92><EFBFBD>

<0A><EFBFBD>B嚗帋<E59A97>隞祆<E99A9E>靘𥟇<E99D98>蝞⊥<E89D9E><E28AA5>?
- <20>函蔡REDCap + 雿牐賑<E78990><E8B391>xternal Module
- <20><EFBFBD><E39787>嗉晶嚗𠄎aaS璅<E79285>嚗?

<0A><>飵嚗?
<0A>?餈鞟輕<E99E9F>鞉𧋦擃矋<E69383>$50K+/撟湛<E6929F>
<0A>?霈詨虾<E8A9A8><E899BE><EFBFBD>憌𡡞埯嚗<E59FAF><E59A97>銝舘<E98A9D>敺瑕嵗蝖株恕嚗?
<0A>?<3F>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>遙嚗𠃍IPAA嚗?

撱箄悅嚗?
<0A>㴓 隡睃<E99AA1><E79D83><EFBFBD><E588BB><EFBFBD>A嚗<41><EFBFBD>瑁䌊撌梢<E6928C>蝵涮EDCap嚗?

<EFBFBD><EFBFBD> <20>函蔡<E587BD><E894A1><EFBFBD><EFBFBD><EFBFBD>皞?

摰䀹䲮<EFBFBD><EFBFBD>

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/

蝚砌<EFBFBD><EFBFBD><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"

<EFBFBD>𤁗 <20><EFBFBD>銝舘<E98A9D><E88898>典遣霈?

<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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<EFBFBD><EFBFBD>嚗?-2撠𤩺𧒄嚗<F0A79284><E59A97><EFBFBD>𤏪<EFBFBD>
  • <EFBFBD>煺漣<EFBFBD><EFBFBD>嚗?-2憭抬<E686AD>銝剔<E98A9D>嚗?
  • <EFBFBD><EFBFBD>蝥改<EFBFBD>3-5憭抬<E686AD>憭齿<E686AD>嚗?

Q3: <20><><EFBFBD><E996AC><EFBFBD>辺隞塚<E99A9E> A:

  1. <EFBFBD><EFBFBD> REDCap霈詨虾嚗<E899BE><E59A97><EFBFBD><EFBFBD><E4BAA5><EFBFBD><EFBFBD>
  2. <EFBFBD>𠒣 REDCap皞𣂷誨<F0A382B7><E8AAA8><EFBFBD>撌脫<E6928C><E884AB><EFBFBD><EFBFBD>
  3. <EFBFBD>棅儭?<3F>滚𦛚<E6BB9A><EFBFBD>2<EFBFBD>?GB韏瘀<E99F8F>
  4. <EFBFBD>𩣪 SMTP<54>桐辣<E6A190>滚𦛚

Q4: 頧舐隞嗉<E99A9E><EFBFBD><E79899> A:

  • CPU: 2<>?
  • <EFBFBD><EFBFBD><EFBFBD>: 8GB+
  • 蝖祉<EFBFBD>: 100GB+ SSD
  • 頧臭辣: LAMP<4D><50><EFBFBD>Linux + Apache + MySQL + PHP嚗?

蝡见朖銵<EFBFBD>𢆡

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
**<2A><><EFBFBD>擧凒<E693A7>?*嚗?025-12-30
銝𧢲活<EFBFBD>湔鰵嚗𡁻<EFBFBD>蝵脣<EFBFBD><EFBFBD>𣂼<EFBFBD>銵亙<EFBFBD>摰鮋<EFBFBD><EFBFBD><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>