核心成果: - REDCap 15.8.0成功部署在Docker环境 - 登录功能正常,管理员账户: Admin/Admin123! - MySQL 8.0 + PHP 8.1 + Apache 2.4环境验证通过 问题解决: 1. 修复ERR_CONTENT_DECODING_FAILED错误 - 强制禁用Apache deflate模块 - PHP配置关闭zlib.output_compression - 自动注释REDCap源码中的压缩设置 2. 修复Base URL配置错误 - 更新redcap_config表中的redcap_base_url - 统一DocumentRoot与访问路径 3. 修复登录失败问题(CRLF污染) - 删除database.php末尾的PHP结束标签 - 创建.gitattributes规范换行符 - 验证REDCap官方源码无此问题 技术改进: - 添加密码重置工具脚本 - 完善docker-entrypoint.sh启动脚本 - 创建详细的部署问题解决记录 - 建立PHP配置文件最佳实践 部署文档: - REDCap本地Docker开发环境部署方案 - REDCap生产环境部署决策报告(ECS vs SAE) - 部署问题解决记录(含根因分析) 下一步: - Day 2: 开发REDCap API Adapter - 实现与IIT Manager Agent的数据对接
138 lines
4.6 KiB
PHP
138 lines
4.6 KiB
PHP
<?php
|
||
/**
|
||
* REDCap数据库连接配置
|
||
* 版本:v1.0
|
||
* 日期:2026-01-01
|
||
* 适用:Docker开发/测试/生产环境
|
||
*
|
||
* 重要说明:
|
||
* 1. 此文件需要复制到REDCap源码的redcap/目录下
|
||
* 2. 开发环境使用Docker MySQL容器
|
||
* 3. 生产环境应使用阿里云RDS MySQL
|
||
* 4. Salt值一旦设置永远不可更改!
|
||
*/
|
||
|
||
// ========== 错误日志配置 ==========
|
||
global $log_all_errors;
|
||
$log_all_errors = TRUE; // 开发环境开启详细日志,生产环境改为FALSE
|
||
|
||
// ========== MYSQL DATABASE CONNECTION ==========
|
||
// Docker容器内连接配置
|
||
// 注意:容器服务名不是localhost!
|
||
|
||
$hostname = 'redcap-db'; // Docker Compose服务名(开发环境)
|
||
// 生产环境改为:rm-xxx.mysql.rds.aliyuncs.com
|
||
|
||
$db = 'redcap'; // 数据库名
|
||
// 生产环境可能是:redcap_prod
|
||
|
||
$username = 'redcap_user'; // 数据库用户名
|
||
// 生产环境使用RDS创建的用户
|
||
|
||
$password = 'redcap_pass_dev_456'; // 数据库密码
|
||
// ⚠️ 生产环境必须修改为强密码!
|
||
|
||
// ========== SSL/TLS连接(可选,生产环境推荐) ==========
|
||
// 阿里云RDS支持SSL连接,增强安全性
|
||
$db_ssl_key = ''; // e.g., '/etc/mysql/ssl/client-key.pem'
|
||
$db_ssl_cert = ''; // e.g., '/etc/mysql/ssl/client-cert.pem'
|
||
$db_ssl_ca = ''; // e.g., '/etc/mysql/ssl/ca-cert.pem'
|
||
$db_ssl_capath = NULL;
|
||
$db_ssl_cipher = NULL;
|
||
$db_ssl_verify_server_cert = false; // 生产环境可设为TRUE
|
||
|
||
// ========== SALT VARIABLE(⚠️ 极其重要!) ==========
|
||
/**
|
||
* Salt值用于REDCap数据导出时的去标识化哈希
|
||
*
|
||
* 重要规则:
|
||
* 1. ⚠️ 一旦设置,永远不可更改!
|
||
* 2. 修改会导致历史去标识化数据无法解密
|
||
* 3. 必须妥善备份(丢失会导致数据无法恢复)
|
||
*
|
||
* 开发环境建议:
|
||
* - 使用固定的Salt值(便于重建环境)
|
||
* - 至少8个字符,建议20+字符
|
||
*
|
||
* 生产环境要求:
|
||
* - 必须使用强随机Salt(32+字符)
|
||
* - 包含大小写字母、数字、特殊字符
|
||
* - 生成方法:
|
||
* PowerShell: -join ((65..90) + (97..122) + (48..57) + (33..47) | Get-Random -Count 32 | % {[char]$_})
|
||
* Linux/Mac: openssl rand -base64 32
|
||
*/
|
||
|
||
// 开发环境Salt
|
||
$salt = 'iit_dev_salt_2026_redcap_v15_do_not_change';
|
||
|
||
// 生产环境Salt示例(必须修改!)
|
||
// $salt = 'Your_Strong_Random_Salt_32_Chars_Min_With_Special_Chars_!@#$%';
|
||
|
||
// ========== DATA TRANSFER SERVICES (DTS) ==========
|
||
// 如使用REDCap DTS功能,取消下方注释并配置
|
||
// DTS用于多个REDCap实例之间的数据传输
|
||
|
||
// $dtsHostname = 'your_dts_host_name';
|
||
// $dtsDb = 'your_dts_db_name';
|
||
// $dtsUsername = 'your_dts_db_username';
|
||
// $dtsPassword = 'your_dts_db_password';
|
||
|
||
// ========== 外部数据库连接(可选,替代默认配置) ==========
|
||
// 如需将数据库配置放在外部文件(安全考虑),取消下方注释
|
||
// 外部文件应放在Web根目录之外,无法通过HTTP访问
|
||
|
||
// include '/path/outside/web/root/db_conn_file.php';
|
||
|
||
// ========== 配置验证(开发环境调试用) ==========
|
||
// 开发环境可以启用此段代码验证配置
|
||
// 生产环境必须删除或注释此段代码!
|
||
|
||
if (FALSE) { // 调试时改为TRUE
|
||
echo "=== REDCap Database Configuration ===\n";
|
||
echo "Hostname: $hostname\n";
|
||
echo "Database: $db\n";
|
||
echo "Username: $username\n";
|
||
echo "Password: " . str_repeat('*', strlen($password)) . "\n";
|
||
echo "Salt Length: " . strlen($salt) . " characters\n";
|
||
echo "=====================================\n";
|
||
|
||
// 测试数据库连接
|
||
$test_conn = @mysqli_connect($hostname, $username, $password, $db);
|
||
if ($test_conn) {
|
||
echo "✅ Database connection successful!\n";
|
||
mysqli_close($test_conn);
|
||
} else {
|
||
echo "❌ Database connection failed: " . mysqli_connect_error() . "\n";
|
||
}
|
||
|
||
exit;
|
||
}
|
||
|
||
// ========== 环境切换说明 ==========
|
||
/**
|
||
* 开发环境 → 生产环境迁移清单:
|
||
*
|
||
* 1. 修改$hostname为RDS地址
|
||
* - 开发:redcap-db
|
||
* - 生产:rm-xxx.mysql.rds.aliyuncs.com
|
||
*
|
||
* 2. 修改$db数据库名
|
||
* - 开发:redcap
|
||
* - 生产:redcap_prod(建议区分)
|
||
*
|
||
* 3. 修改$username和$password
|
||
* - 必须使用强密码(32+字符)
|
||
*
|
||
* 4. 设置生产环境Salt
|
||
* - 必须使用强随机值
|
||
* - 设置后永远不可更改
|
||
*
|
||
* 5. 关闭调试
|
||
* - $log_all_errors = FALSE
|
||
* - 删除配置验证代码
|
||
*
|
||
* 6. 配置SSL连接(推荐)
|
||
* - RDS提供SSL证书
|
||
* - 增强数据传输安全
|
||
*/
|