Files
AIclinicalresearch/docs/03-业务模块/Redcap/04-参考资料/02-REDCap部署指南与环境要求_旧版.md
HaHafeng 66255368b7 feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
2026-01-16 13:42:10 +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部署指南与环境要求详解
> **文档版本:** v1.0
> **创建日期:** 2025-12-30
> **文档目的:** 详细说明REDCap的部署要求、复杂度、软硬件条件
> **阅读时间:** 25分钟
> **重要性:** ⭐⭐⭐⭐⭐ **对接前必读**
---
## 📋 执行摘要
**核心结论**
-**是的对接REDCap前必须先部署REDCap服务器**
- 🟡 **部署复杂度:中等**3.5/5分
- ⏱️ **部署时间**
- 测试环境Docker1-2小时
- 生产环境手动1-2天
- 生产环境含安全加固3-5天
- 💰 **成本**
- 测试环境:$0本地开发
- 生产环境:$500-3000/月(云服务器)
**关键前置条件**
1. 🔑 **获得REDCap许可**加入联盟签署EULA
2. 💾 **下载REDCap源代码**redcap15.8.0.zip
3. 🖥️ **准备服务器环境**LAMP/LEMP栈
4. 📧 **配置SMTP邮件服务**(必需)
---
## 🎯 部署前必读:您需要什么?
### 1. REDCap许可与源代码获取🔑 最关键)
#### 获取流程
```
Step 1: 申请加入REDCap联盟
访问https://projectredcap.org/join/
填写机构信息(医院/大学/研究机构)
等待审批1-4周
Step 2: 签署最终用户许可协议EULA
法律审查(禁止商业用途)
机构授权人签字
Step 3: 下载REDCap软件包
登录联盟成员门户
下载redcap_vX.X.X.zip约50-80MB
```
#### 许可限制(⚠️ 重要)
```
✅ 允许:
- 非商业研究用途
- 机构内部使用
- 开发External Modules开源共享
❌ 禁止:
- 商业化销售
- 未经授权的再分发
- 修改核心代码后闭源
⚠️ 灰色地带:
- 提供REDCap托管服务需咨询范德堡大学
- 基于REDCap开发商业产品你们的情况
→ 建议:咨询法律顾问,可能需要额外协议
```
#### 您的情况分析
```
壹证循科技的商业模式:
- REDCap是"客户已有"的系统
- 你们提供的是"AI增值服务"DC/SSA模块
- 通过External Module连接
合规性评估:
✅ 可能合规提供插件不销售REDCap本身
⚠️ 需确认是否帮客户部署REDCap
- 如果只是对接客户现有REDCap → ✅ 合规
- 如果你们部署REDCap并收费 → ⚠️ 灰色地带
建议:
1. 与范德堡大学确认商业用途许可
2. 或者只对接客户现有的REDCap不提供部署
```
---
## 🖥️ 软硬件要求详解
### 服务器配置要求
#### 开发/测试环境
```yaml
用途: 本地开发、功能测试、External Module开发
最低配置:
CPU: 2核
内存: 4GB
硬盘: 20GB SSD
系统: Windows 10/11 或 macOS 或 Linux
推荐配置:
CPU: 4核
内存: 8GB
硬盘: 50GB SSD
系统: Ubuntu 22.04 LTS
成本: $0使用个人电脑或Mac
```
#### 生产环境(小型)
```yaml
用途: 1-5个项目<1000条记录
最低配置:
CPU: 2核 @ 2.5GHz+
内存: 8GB
硬盘: 100GB SSD
带宽: 10Mbps
系统: Ubuntu 22.04 LTS / CentOS 8
数据库:
MySQL: 5.7+ 或 MariaDB 10.3+
存储: 20GB独立磁盘
Web服务器:
Apache 2.4+ 或 Nginx 1.18+
PHP: 7.4 / 8.0 / 8.1 / 8.2
云服务器参考:
阿里云: ecs.c6.large2核8GB ≈ ¥500/月
AWS: t3.large2核8GB ≈ $70/月
腾讯云: SA2.MEDIUM42核8GB ≈ ¥450/月
年度成本: $6K-8K
```
#### 生产环境(中型)
```yaml
用途: 10-50个项目10K-100K条记录
推荐配置:
CPU: 4核 @ 3.0GHz+
内存: 16GB
硬盘: 500GB SSD或SAN存储
带宽: 50Mbps
系统: Ubuntu 22.04 LTS
数据库:
MySQL: 8.0+ 或 MariaDB 10.5+
存储: 200GB独立服务器
连接数: 最大500
Web服务器:
Apache 2.4+ 或 Nginx 1.20+
PHP: 8.1+(性能最优)
PHP-FPM进程数: 50-100
负载均衡:
可选多Web节点 + LB
云服务器参考:
阿里云: ecs.c6.xlarge4核16GB ≈ ¥1200/月
AWS: t3.xlarge4核16GB ≈ $150/月
年度成本: $15K-20K
```
#### 生产环境(大型/企业级)
```yaml
用途: 100+项目100万+记录,多机构部署
架构:
Web层: 2-4台Web服务器负载均衡
- 每台: 8核16GB
数据库层: 主从架构
- 主库: 16核32GB
- 从库: 16核32GB读负载分担
存储层:
- 文件服务器: NFS/对象存储
- 容量: 2TB-5TB
缓存层:
- Redis: 8核16GB
高可用:
- 数据库主从切换
- Web节点故障转移
- 每日备份+异地容灾
监控:
- Prometheus + Grafana
- 日志聚合ELK
- APM监控
云服务器参考:
总成本: ¥15K-30K/月
年度成本: $50K-100K
```
### 软件依赖清单
#### 必需组件
```bash
# 操作系统(任选其一)
Ubuntu 22.04 LTS # 推荐
CentOS 8 / Rocky Linux 8 # 企业级
Debian 11
# Web服务器任选其一
Apache 2.4+ # REDCap官方推荐
- mod_rewrite enabled
- mod_ssl enabled
- mod_headers enabled
Nginx 1.18+ # 性能更好,配置复杂
# PHP推荐8.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如需LDAP认证
- php-soap如需Web Service集成
# 数据库(任选其一)
MySQL 5.7+ / 8.0+ # 主流选择
MariaDB 10.3+ / 10.5+ # 开源替代
# PHP配置要求
upload_max_filesize = 32M
post_max_size = 32M
max_execution_time = 300
memory_limit = 256M
```
#### 可选组件(增强功能)
```bash
# SMTP服务器邮件通知
必需:用于发送调查邀请、密码重置等
选项:
- SendGrid推荐云服务
- Amazon SES
- 自建Postfix
- 企业SMTPOffice 365、Gmail
# SSL证书HTTPS
必需:生产环境强制要求
选项:
- Let's Encrypt免费
- 商业证书GeoTrust、DigiCert
- 企业内部CA
# LDAP/Active Directory单点登录
可选:企业环境推荐
- OpenLDAP
- Microsoft AD
- Azure AD
# 防火墙/WAF
推荐:
- UFW / firewalld主机防火墙
- ModSecurityWeb应用防火墙
- CloudflareCDN + DDoS防护
# 监控工具
推荐:
- New Relic APM
- Datadog
- Prometheus + Grafana
```
---
## 🐳 部署方案对比
### 方案1Docker容器部署⭐ 推荐用于开发/测试)
#### 优势
```
✅ 快速启动1小时内完成
✅ 环境隔离(不污染主机)
✅ 易于迁移(容器可移植)
✅ 版本管理(镜像标签)
✅ 易于销毁重建(测试理想)
```
#### 完整Docker Compose配置
```yaml
# docker-compose.yml
version: '3.8'
services:
# MySQL数据库
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数据库管理
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源代码需手动解压到此目录
- ./redcap15.8.0:/var/www/html
# Apache配置
- ./apache/redcap.conf:/etc/apache2/sites-available/000-default.conf
# PHP配置
- ./php/php.ini:/usr/local/etc/php/php.ini
# 上传文件存储
- 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
# 安装PHP扩展
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:
```
#### 部署步骤Docker方案
```bash
# Step 1: 创建项目目录
mkdir redcap-docker && cd redcap-docker
# Step 2: 解压REDCap源码
unzip redcap_v15.8.0.zip
# 得到: redcap15.8.0/ 目录
# Step 3: 创建docker-compose.yml
# (粘贴上面的配置)
# Step 4: 创建Apache配置
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: 创建PHP配置
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: 启动容器
docker-compose up -d
# Step 7: 检查容器状态
docker-compose ps
# 应该看到3个容器运行中
# Step 8: 访问REDCap安装向导
# 打开浏览器http://localhost:8080/install.php
# Step 9: 按照向导完成安装
# - 数据库配置:
# Host: redcap-db
# Database: redcap
# Username: redcap_user
# Password: redcap_pass_456
# Step 10: 安装完成后访问REDCap
# http://localhost:8080/
```
#### Docker方案的坑点
```
⚠️ 坑1: 文件权限问题
症状: 上传文件失败无法写入edocs目录
解决:
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
⚠️ 坑2: 数据库连接失败
症状: REDCap无法连接MySQL
原因: 容器网络未就绪
解决:
# 等待MySQL完全启动30秒
docker-compose logs redcap-db
# 看到 "ready for connections" 后再访问install.php
⚠️ 坑3: PHP扩展缺失
症状: 提示缺少GD库、ZIP库
解决:
# 进入容器安装
docker exec -it redcap-apache bash
docker-php-ext-install gd zip mysqli
service apache2 reload
⚠️ 坑4: 性能问题
症状: 页面加载慢Docker on Windows/Mac
原因: 文件I/O性能差
解决:
# 使用命名卷而非绑定挂载
volumes:
- redcap-code:/var/www/html # 命名卷(快)
# 不要: - ./redcap:/var/www/html # 绑定挂载(慢)
```
---
### 方案2手动部署生产环境推荐
#### Ubuntu 22.04 LTS部署脚本
```bash
#!/bin/bash
# REDCap生产环境自动化部署脚本
# 适用于Ubuntu 22.04 LTS
set -e # 遇到错误立即退出
echo "========================================"
echo "REDCap 15.8.0 自动化部署脚本"
echo "========================================"
# ========== 1. 系统更新 ==========
echo "[Step 1] 更新系统..."
apt update && apt upgrade -y
# ========== 2. 安装Apache ==========
echo "[Step 2] 安装Apache 2.4..."
apt install -y apache2
a2enmod rewrite ssl headers
systemctl enable apache2
systemctl start apache2
# ========== 3. 安装PHP 8.1 ==========
echo "[Step 3] 安装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
# 配置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. 安装MySQL 8.0 ==========
echo "[Step 4] 安装MySQL 8.0..."
apt install -y mysql-server mysql-client
# 启动MySQL
systemctl enable mysql
systemctl start mysql
# 安全加固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;"
# 创建REDCap数据库和用户
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 "数据库密码(请保存):${REDCAP_DB_PASS}"
# ========== 5. 部署REDCap代码 ==========
echo "[Step 5] 部署REDCap代码..."
# 上传redcap15.8.0.zip到 /tmp/
# 手动或通过SCP上传
# 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
# 创建符号链接(方便版本切换)
ln -s redcap_v15.8.0 redcap
# 设置权限
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. 配置Apache虚拟主机 ==========
echo "[Step 6] 配置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>
# 安全头
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
# 启用站点
a2ensite redcap.conf
a2dissite 000-default.conf
systemctl reload apache2
# ========== 7. 配置防火墙 ==========
echo "[Step 7] 配置防火墙..."
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw --force enable
# ========== 8. 安装Let's Encrypt SSL证书 ==========
echo "[Step 8] 安装SSL证书..."
apt install -y certbot python3-certbot-apache
# 自动获取证书(需要域名已解析到此服务器)
# certbot --apache -d redcap.yourdomain.com --non-interactive --agree-tos --email admin@yourdomain.com
# ========== 9. 配置Cron任务 ==========
echo "[Step 9] 配置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. 完成 ==========
echo "========================================"
echo "✅ REDCap部署完成"
echo "========================================"
echo ""
echo "📝 下一步:"
echo "1. 访问http://your-server-ip/install.php"
echo "2. 按照向导完成安装"
echo "3. 数据库配置:"
echo " Host: localhost"
echo " Database: redcap"
echo " Username: redcap_user"
echo " Password: ${REDCAP_DB_PASS}"
echo ""
echo "⚠️ 请务必保存数据库密码!"
```
#### 手动部署的坑点
```
⚠️ 坑1: SELinux阻止CentOS/RHEL
症状: Permission denied错误
解决:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
⚠️ 坑2: 文件上传失败
症状: edocs目录无写权限
解决:
chown -R www-data:www-data /var/www/html/redcap/edocs
chmod -R 777 /var/www/html/redcap/edocs
⚠️ 坑3: Cron任务不执行
症状: 计划任务、邮件不发送
解决:
# 检查cron日志
tail -f /var/log/syslog | grep CRON
# 手动测试cron
sudo -u www-data php /var/www/html/redcap/cron.php
⚠️ 坑4: 数据库连接失败
症状: Can't connect to MySQL
解决:
# 检查MySQL是否运行
systemctl status mysql
# 测试连接
mysql -uredcap_user -p redcap
⚠️ 坑5: 邮件发送失败
症状: 调查邀请无法发送
原因: 未配置SMTP
解决:
# 在REDCap控制中心配置SMTP
# 或使用SendGrid/Amazon SES
```
---
## 📈 部署复杂度评估
### 复杂度打分1-5分
| 环节 | 复杂度 | 时间 | 常见问题 | 难点 |
|------|--------|------|----------|------|
| **获取REDCap许可** | 🟡 2/5 | 1-4周 | 审批慢 | 法务流程 |
| **服务器准备** | 🟢 1/5 | 1小时 | 云厂商选择 | 无 |
| **LAMP环境搭建** | 🟡 2/5 | 2-4小时 | PHP版本兼容 | 依赖安装 |
| **REDCap安装** | 🟡 2/5 | 1-2小时 | 数据库配置 | 文件权限 |
| **SMTP配置** | 🟡 3/5 | 1-3小时 | 邮件被拒 | 反垃圾邮件 |
| **SSL证书** | 🟢 1/5 | 30分钟 | 域名解析 | 无 |
| **安全加固** | 🔴 4/5 | 1-2天 | 规则配置 | 防火墙/WAF |
| **性能优化** | 🔴 4/5 | 1-2天 | 慢查询 | MySQL调优 |
| **备份策略** | 🟡 2/5 | 2小时 | 存储空间 | 自动化 |
| **监控告警** | 🟡 3/5 | 4小时 | 指标选择 | 工具集成 |
### 总体评估
```
部署复杂度3.5/5中等偏高
原因:
✅ 优势:
- REDCap安装向导友好图形化界面
- 官方文档详细
- 社区支持活跃
⚠️ 挑战:
- LAMP环境依赖多10+个PHP扩展
- 文件权限易出错
- SMTP配置繁琐
- 安全加固需要专业知识
对比:
- 比WordPress简单依赖更少
- 比Moodle复杂配置更多
- 比自研系统简单(现成软件)
```
---
## 🚀 快速开始3种部署路径
### 路径1Docker快速体验1小时
```bash
# 适用于开发测试、External Module开发
# 1. 克隆配置仓库(假设你已创建)
git clone https://github.com/your-org/redcap-docker.git
cd redcap-docker
# 2. 放置REDCap源码
# 将redcap_v15.8.0.zip解压到当前目录
# 3. 一键启动
docker-compose up -d
# 4. 访问
http://localhost:8080/install.php
# 5. 完成安装向导
# 数据库配置:
# Host: redcap-db
# Database: redcap
# Username: redcap_user
# Password: redcap_pass_456
✅ 优势:快速、可重复、易销毁
❌ 劣势:不适合生产环境
```
### 路径2云服务器标准部署1天
```bash
# 适用于:小型团队、私有化部署客户
# 1. 购买云服务器
阿里云ECS2核8GBUbuntu 22.04
# 2. 执行自动化脚本
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. 完成安装
# 5. 配置域名和SSL
certbot --apache -d redcap.yourdomain.com
✅ 优势:稳定、安全、可扩展
❌ 劣势:需要运维知识
```
### 路径3托管服务0天
```bash
# 适用于:快速上手、无运维团队
# REDCap官方认证托管服务商
1. Vanderbilt CTSA
https://redcap.vanderbilt.edu/consortium/pricing.php
价格:$5K-15K/年
2. Academic Health Center REDCap Hosting
https://ahcredcap.org/
价格:$3K-10K/年
3. 第三方托管(需验证合规性)
Veeva Vault EDC
Medidata Rave
✅ 优势:零运维、高可用、专业支持
❌ 劣势:费用高、定制受限
```
---
## 🔒 生产环境安全加固清单
### 必做项P0
```bash
# 1. 修改默认密码
# 安装完成后立即修改:
# - REDCap admin用户密码
# - MySQL root密码
# - 操作系统root密码
# 2. 启用HTTPS强制
certbot --apache -d redcap.yourdomain.com
# 在REDCap控制中心System Configuration
# Force HTTPS: Yes
# 3. 配置防火墙
ufw enable
ufw allow 22/tcp # SSH限制IP更佳
ufw allow 80/tcp
ufw allow 443/tcp
ufw deny 3306/tcp # 禁止外部访问MySQL
# 4. 关闭不必要的服务
systemctl disable bluetooth
systemctl disable cups
# 5. 定期更新
apt update && apt upgrade -y
# 设置自动安全更新
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
```
### 推荐项P1
```bash
# 6. 配置Web应用防火墙WAF
# ModSecurity + OWASP核心规则集
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. 启用审计日志
# 在REDCap控制中心启用
# - Login auditing
# - Page view logging
# - Data export logging
# 8. 配置备份(每日自动)
cat > /etc/cron.daily/redcap-backup << 'EOF'
#!/bin/bash
# 数据库备份
mysqldump -uredcap_user -p'PASSWORD' redcap | gzip > /backup/redcap_$(date +\%Y\%m\%d).sql.gz
# 文件备份
tar -czf /backup/redcap_files_$(date +\%Y\%m\%d).tar.gz /var/www/html/redcap/edocs
# 删除30天前的备份
find /backup -type f -mtime +30 -delete
EOF
chmod +x /etc/cron.daily/redcap-backup
# 9. 配置fail2ban防暴力破解
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. 配置监控告警
# 推荐工具:
# - Uptime监控UptimeRobot免费
# - 日志监控Logtail阿里云SLS
# - APM监控New Relic付费
```
---
## 💰 成本估算(全生命周期)
### 场景1开发测试环境
```
初始成本:
- 服务器:$0本地电脑
- REDCap许可$0已获得
- SSL证书$0自签名证书
- 开发工具:$0开源
总计:$0
```
### 场景2小型生产环境50用户
```
初始成本(一次性):
- REDCap许可获取$0联盟成员
- 云服务器购买:$0按月付费
- SSL证书$0Let's Encrypt
- 部署实施:$2K1天人力
年度运营成本:
- 云服务器:$600/年阿里云2核8GB
- 带宽流量:$240/年10Mbps
- 备份存储:$120/年100GB OSS
- SMTP服务$0SendGrid免费额度
- 监控告警:$0UptimeRobot免费
- 运维人力:$10K/年0.2 FTE
5年总成本$57K
```
### 场景3企业级环境500用户
```
初始成本:
- 服务器集群:$5K采购
- 专业服务:$10K架构设计+部署)
- 安全审计:$5K第三方评估
年度运营成本:
- 云服务器:$12K/年4核16GB × 2
- 数据库RDS$8K/年(高可用版)
- 负载均衡:$3K/年
- 对象存储:$1K/年
- SMTP服务$1K/年SendGrid专业版
- 监控APM$2K/年New Relic
- 安全服务:$5K/年WAF + DDoS
- 运维人力:$50K/年1 FTE DevOps
- 年度审计:$10K/年HIPAA合规
5年总成本$480K
```
---
## 🎯 对您项目的建议
### 当前阶段建议先不急着部署REDCap
```
理由:
1. ✅ 您已有REDCap源代码redcap15.8.0/
2. ✅ 可以研究External Module开发无需运行环境
3. ✅ 可以阅读API文档、数据库Schema
4. ⏰ 等确定要对接时再部署(节省资源)
现阶段可以做:
- 研究REDCap代码结构
- 设计External Module架构
- 编写config.json和PHP代码离线
- 准备数据转换逻辑
- 设计API集成方案
```
### 何时部署REDCap测试环境
```
时机:
- 需要测试External Module时
- 需要验证API调用时
- 需要测试数据同步时
- 准备给客户演示时
推荐方案:
Docker部署1小时快速搭建
命令:
cd AIclinicalresearch/
mkdir redcap-dev
cd redcap-dev
# 创建docker-compose.yml
docker-compose up -d
# 完成!
```
### 生产环境部署策略
```
方案A客户自己部署推荐
- 你们只提供External Module
- 客户在自己的REDCap上安装
- 你们不承担运维责任
优势:
✅ 无需运维成本
✅ 数据在客户环境(合规)
✅ 商业模式清晰(插件销售)
方案B你们提供托管服务
- 部署REDCap + 你们的External Module
- 按月收费SaaS模式
劣势:
❌ 运维成本高($50K+/年)
❌ 许可合规风险(需与范德堡确认)
❌ 数据合规责任HIPAA
建议:
🎯 优先推荐方案A客户自己部署REDCap
```
---
## 📚 部署参考资源
### 官方文档
```
1. REDCap安装指南
/redcap15.8.0/Installation_Instructions.txt
2. REDCap技术要求
https://projectredcap.org/software/requirements/
3. REDCap社区论坛
https://community.projectredcap.org/
4. External Module开发文档
/redcap_external_module_framework_docs_main/
```
### 第三方教程
```
1. GitHub REDCap Docker
https://github.com/123andy/redcap-docker-compose
2. DigitalOcean REDCap部署教程
https://www.digitalocean.com/community/tutorials/how-to-install-redcap
3. YouTube视频教程
搜索:"REDCap installation tutorial"
```
---
## 🎬 总结与行动建议
### 回答您的问题
**Q1: 对接REDCap前需要部署吗**
A: ✅ **是的**需要部署REDCap服务器才能开发和测试对接功能。
**Q2: 部署复杂吗?**
A: 🟡 **中等复杂度**3.5/5分
- Docker方案1-2小时简单
- 生产环境1-2天中等
- 企业级3-5天复杂
**Q3: 需要什么条件?**
A:
1. 🔑 REDCap许可加入联盟
2. 💾 REDCap源代码已有✅
3. 🖥️ 服务器2核8GB起
4. 📧 SMTP邮件服务
**Q4: 软硬件要求?**
A:
- CPU: 2核+
- 内存: 8GB+
- 硬盘: 100GB+ SSD
- 软件: LAMP栈Linux + Apache + MySQL + PHP
### 立即行动
```
Step 1: 决定部署方案
├─ Docker开发测试 → 1小时完成
└─ 手动部署(生产环境) → 1天完成
Step 2: 准备环境
- 购买云服务器(如需)
- 安装Docker如需
- 确认REDCap许可状态
Step 3: 执行部署
- 按照本文档步骤操作
- 记录遇到的问题
- 完成安装向导
Step 4: 验证
- 创建测试项目
- 录入测试数据
- 测试API调用
Step 5: 开始External Module开发
- 创建模块目录
- 编写config.json
- 测试Hook功能
```
---
**文档版本**v1.0
**最后更新**2025-12-30
**下次更新**:部署完成后补充实际遇到的问题
---
**🚀 需要我帮您创建Docker部署脚本吗或者有其他部署相关的问题**