feat(redcap): REDCap 15.8.0 Docker本地开发环境部署完成
核心成果: - 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的数据对接
This commit is contained in:
47
redcap-docker-dev/scripts/create-redcap-password.php
Normal file
47
redcap-docker-dev/scripts/create-redcap-password.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/**
|
||||
* REDCap密码哈希生成脚本
|
||||
* 直接在数据库中更新Admin密码
|
||||
*/
|
||||
|
||||
// REDCap密码哈希算法(SHA-512 + Salt)
|
||||
$username = 'Admin';
|
||||
$new_password = 'Admin123!';
|
||||
|
||||
// 生成新的salt(REDCap使用100字符的随机salt)
|
||||
$salt = '';
|
||||
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_=+[]{}|;:,.<>?~';
|
||||
for ($i = 0; $i < 100; $i++) {
|
||||
$salt .= $characters[random_int(0, strlen($characters) - 1)];
|
||||
}
|
||||
|
||||
// 生成密码哈希(SHA-512(password + salt))
|
||||
$password_hash = hash('sha512', $new_password . $salt);
|
||||
|
||||
// 数据库连接信息
|
||||
$db_host = getenv('REDCAP_DB_HOST') ?: 'redcap-mysql';
|
||||
$db_name = getenv('REDCAP_DB_NAME') ?: 'redcap';
|
||||
$db_user = getenv('REDCAP_DB_USER') ?: 'redcap_user';
|
||||
$db_pass = getenv('REDCAP_DB_PASS') ?: 'redcap_pass_dev_456';
|
||||
|
||||
try {
|
||||
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
|
||||
// 更新密码
|
||||
$stmt = $pdo->prepare("UPDATE redcap_auth SET password = ?, password_salt = ? WHERE username = ?");
|
||||
$result = $stmt->execute([$password_hash, $salt, $username]);
|
||||
|
||||
if ($result) {
|
||||
echo "✅ Password updated successfully!\n\n";
|
||||
echo "Username: $username\n";
|
||||
echo "New Password: $new_password\n\n";
|
||||
echo "You can now login at: http://localhost:8080/\n";
|
||||
} else {
|
||||
echo "❌ Failed to update password\n";
|
||||
}
|
||||
|
||||
} catch (PDOException $e) {
|
||||
echo "❌ Database error: " . $e->getMessage() . "\n";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user