docker-redis/README.md

153 lines
4.2 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.

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