153 lines
4.2 KiB
Markdown
153 lines
4.2 KiB
Markdown
# 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、限制访问等
|