基于docker启动的redis服务
| conf | ||
| data | ||
| .DS_Store | ||
| .gitignore | ||
| docker-compose.yml | ||
| init | ||
| README.md | ||
| redis-cli | ||
| service | ||
Redis 服务配置与管理
本目录包含了GuardDoc服务器使用的Redis服务配置与管理脚本,基于Docker容器化部署,支持环境变量配置、安全密码管理和便捷的服务控制。
目录结构
redis/
├── .gitignore # Git忽略文件
├── README.md # 本文档
├── conf/ # Redis配置文件目录(仅包含版本配置文件,供参考,未实际使用)
├── data/ # Redis数据持久化目录
├── docker-compose.yml # Docker Compose配置文件
├── init # 初始化脚本(环境配置、密码设置等)
├── redis-cli # Redis客户端连接工具
└── service # 服务控制脚本(启动、停止、重启等)
初始化
在首次使用前,需要运行初始化脚本来配置环境和安全设置:
cd /path/to/guarddoc-server/redis
./init
初始化过程中,脚本会:
- 检查必要的命令(如docker、openssl)是否已安装
- 创建必要的目录(如data、conf)
- 交互式收集用户输入的配置项:
- Redis密码(用于连接Redis服务)
- 加密主密钥(用于加密存储Redis密码)
- Redis版本(默认8.2)
- Redis端口(默认6379)
- 容器名称(默认redis)
- 生成加密的密码文件和
.envrc环境配置文件 - 自动配置direnv以加载环境变量
环境变量加载
本项目使用direnv和.envrc文件管理环境变量,确保敏感信息安全存储:
-
确保已安装direnv:
# macOS brew install direnv # Linux sudo apt-get install direnv # Debian/Ubuntu # 或 sudo yum install direnv # CentOS/RHEL -
在shell配置文件(如
~/.zshrc或~/.bashrc)中添加:eval "$(direnv hook zsh)" # 对于zsh # 或 eval "$(direnv hook bash)" # 对于bash -
每次进入redis目录时,direnv会自动提示输入主密钥以解密Redis密码:
direnv: error .envrc is blocked. Run `direnv allow` to approve its content首次进入时需要先运行:
direnv allow然后根据提示输入主密钥。
服务控制
使用service脚本控制Redis服务:
# 启动服务
./service start
# 停止服务
./service stop
# 重启服务
./service restart
# 查看服务状态
./service status
# 查看帮助信息
./service help
Redis客户端连接
使用redis-cli脚本连接到Redis服务:
# 基本连接
./redis-cli
# 执行具体命令
./redis-cli SET mykey "Hello Redis"
./redis-cli GET mykey
# 查看所有键
./redis-cli KEYS *
# 更多redis-cli命令,请参考Redis官方文档
注意:客户端脚本会自动从环境变量加载Redis连接信息(主机、端口、密码),无需手动指定。
配置修改
Redis配置文件
Redis的主要配置文件位于conf/redis.conf,可以根据需要修改以下关键配置:
- 持久化设置(RDB/AOF)
- 内存限制
- 连接数限制
- 日志级别
修改配置后,需要重启服务使更改生效:
./service restart
容器配置
如果需要修改容器相关配置(如端口映射、资源限制等),可以编辑docker-compose.yml文件,然后重启服务。
安全说明
- Redis密码使用AES-256-CBC加密存储在
.envrc文件中 - 加密主密钥不会保存在任何文件中,需要用户在加载环境变量时手动输入
.envrc文件已添加到.gitignore中,避免敏感信息被提交到版本控制系统- 建议定期更新Redis密码和加密主密钥
故障排查
- 服务启动失败:检查Docker是否正在运行,以及端口是否被占用
- 连接失败:确认主密钥输入正确,Redis服务已启动,密码配置正确
- 数据问题:检查data目录权限,确保Docker容器有写入权限
- 环境变量加载失败:确认direnv已正确安装和配置,
.envrc文件存在且未被修改
注意事项
- 首次使用请务必运行
./init脚本完成初始化配置 - 请妥善保管加密主密钥,丢失后将无法恢复Redis密码
- 定期备份data目录以防止数据丢失
- 在生产环境中,请进一步加强Redis的安全配置,如绑定IP、限制访问等