1. 离线安装Redis前的准备工作
在开始Redis的离线安装之前,我们需要做好充分的准备工作。离线环境意味着我们无法直接使用yum或apt-get等包管理工具来安装依赖,所有操作都需要手动完成。
1.1 系统环境确认
首先,我们需要确认服务器的基本环境信息:
bash复制# 查看系统版本
cat /etc/redhat-release # 适用于CentOS/RHEL
lsb_release -a # 适用于Ubuntu/Debian
# 查看内核版本
uname -r
# 检查系统架构
uname -m
这些信息将帮助我们确定需要下载哪些版本的软件包。在离线环境中,一旦下载了错误的版本,可能会导致安装失败且难以补救。
1.2 下载Redis安装包
访问Redis官方网站(https://download.redis.io/releases/)下载Redis 7.4.0的稳定版本。建议下载.tar.gz格式的源码包,因为它包含了完整的编译环境。
注意:在下载前,务必检查文件的完整性。可以通过比较SHA256校验值来确认下载的文件未被篡改。
1.3 准备安装介质
由于是离线安装,我们需要将下载好的Redis安装包和所有依赖包通过U盘或其他存储介质传输到目标服务器。建议按照以下目录结构组织文件:
code复制/opt/offline_install/
├── redis/
│ └── redis-7.4.0.tar.gz
└── gcc/
├── gcc-c++-4.8.5-44.el7.x86_64.rpm
├── cpp-4.8.5-44.el7.x86_64.rpm
└── ...
这种结构化的存储方式有助于后续安装过程的有序进行。
2. GCC环境的离线安装与配置
Redis是用C语言编写的,因此需要GCC编译器来构建。在离线环境中安装GCC及其依赖是一个关键步骤。
2.1 检查现有GCC环境
首先检查服务器是否已经安装了GCC:
bash复制gcc --version
如果返回"command not found"或版本过低(Redis 7.x需要GCC 4.9或更高版本),则需要安装或升级GCC。
2.2 下载GCC依赖包
对于CentOS 7系统,我们需要下载以下RPM包(可以从阿里云镜像站获取):
-
编译器核心组件:
- gcc-4.8.5-44.el7.x86_64.rpm
- gcc-c++-4.8.5-44.el7.x86_64.rpm
- cpp-4.8.5-44.el7.x86_64.rpm
-
标准库开发包:
- libstdc++-devel-4.8.5-44.el7.x86_64.rpm
- glibc-devel-2.17-317.el7.x86_64.rpm
- glibc-headers-2.17-317.el7.x86_64.rpm
-
内核头文件:
- kernel-headers-3.10.0-1160.el7.x86_64.rpm
-
数学运算库:
- libmpc-1.0.1-3.el7.x86_64.rpm
- mpfr-3.1.1-4.el7.x86_64.rpm
重要提示:这些包之间存在严格的依赖关系,必须全部下载完整。缺少任何一个都可能导致安装失败。
2.3 安装GCC及其依赖
将所有下载的RPM包上传到服务器的同一目录下,然后执行批量安装:
bash复制# 进入RPM包所在目录
cd /path/to/rpm_packages
# 批量安装所有RPM包(忽略依赖检查)
sudo rpm -ivh *.rpm --nodeps --force
安装完成后,再次验证GCC版本:
bash复制gcc --version
如果显示版本信息,说明安装成功。如果遇到问题,可以尝试以下命令查看缺少的依赖:
bash复制ldd $(which gcc)
3. Redis 7.4.0的编译与安装
3.1 解压Redis源码包
将下载的Redis源码包解压到合适的目录:
bash复制tar -zxvf redis-7.4.0.tar.gz -C /usr/local/src/
cd /usr/local/src/redis-7.4.0
3.2 编译Redis源码
在编译前,建议先清理可能存在的旧编译文件:
bash复制make distclean
然后开始编译:
bash复制make
编译过程可能需要几分钟时间,取决于服务器的性能。如果编译成功,最后会显示"Hint: It's a good idea to run 'make test'"的提示。
常见问题:如果编译过程中出现错误,通常是由于缺少依赖或GCC版本不兼容。可以尝试以下解决方案:
- 确保所有GCC依赖包已正确安装
- 检查系统内存是否充足(编译Redis需要至少1GB可用内存)
- 尝试使用
make MALLOC=libc命令指定内存分配器
3.3 安装Redis
编译成功后,执行安装命令:
bash复制make install
默认情况下,Redis的可执行文件会被安装到/usr/local/bin目录下,包括:
- redis-server:Redis服务器
- redis-cli:Redis命令行客户端
- redis-benchmark:性能测试工具
- redis-check-aof:AOF文件检查工具
- redis-check-rdb:RDB文件检查工具
4. Redis配置与优化
4.1 创建配置文件目录
建议将配置文件放在/etc/redis目录下:
bash复制mkdir -p /etc/redis
cp redis.conf /etc/redis/
4.2 修改Redis配置文件
编辑/etc/redis/redis.conf文件,修改以下关键参数:
bash复制# 启用守护进程模式
daemonize yes
# 设置日志文件路径
logfile "/var/log/redis/redis.log"
# 设置工作目录
dir /var/lib/redis
# 设置密码(建议使用更复杂的密码)
requirepass your_strong_password
# 如果需要远程访问,注释掉bind行或指定IP
# bind 127.0.0.1
# 最大内存限制(根据服务器内存调整)
maxmemory 2gb
# 内存淘汰策略
maxmemory-policy allkeys-lru
4.3 创建必要的目录和设置权限
bash复制# 创建数据和日志目录
mkdir -p /var/lib/redis
mkdir -p /var/log/redis
# 设置正确的权限
chown -R redis:redis /var/lib/redis
chown -R redis:redis /var/log/redis
4.4 启动Redis服务
bash复制redis-server /etc/redis/redis.conf
验证Redis是否正常运行:
bash复制redis-cli
127.0.0.1:6379> auth your_strong_password
127.0.0.1:6379> ping
如果返回"PONG",说明Redis已成功启动。
5. 设置Redis为系统服务
5.1 创建systemd服务文件
创建/etc/systemd/system/redis.service文件,内容如下:
ini复制[Unit]
Description=Redis persistent key-value database
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
PrivateTmp=true
[Install]
WantedBy=multi-user.target
5.2 创建Redis专用用户
为了安全考虑,建议创建一个专用用户来运行Redis服务:
bash复制useradd -r -s /sbin/nologin redis
chown -R redis:redis /etc/redis
5.3 启用并启动Redis服务
bash复制systemctl daemon-reload
systemctl enable redis
systemctl start redis
systemctl status redis
5.4 验证服务状态
bash复制# 检查服务状态
systemctl status redis
# 检查端口监听
netstat -tulnp | grep 6379
# 测试连接
redis-cli -a your_strong_password ping
6. 安全加固与性能优化
6.1 安全配置建议
- 修改默认端口:在redis.conf中修改
port 6379为其他端口 - 启用保护模式:确保
protected-mode yes - 限制命令执行:使用
rename-command禁用危险命令 - 配置防火墙规则:只允许特定IP访问Redis端口
6.2 性能优化建议
- 根据工作负载选择合适的持久化方式(RDB或AOF)
- 调整TCP backlog参数:
tcp-backlog 511 - 优化内存分配器:
jemalloc通常比系统默认分配器性能更好 - 调整内核参数:如
vm.overcommit_memory=1
6.3 监控与维护
- 设置定期备份策略
- 监控内存使用情况
- 定期检查日志文件
- 设置适当的日志轮转策略
7. 常见问题与解决方案
7.1 编译错误排查
如果编译过程中出现错误,可以尝试以下步骤:
- 确保所有GCC依赖已正确安装
- 检查系统内存是否充足
- 尝试使用
make MALLOC=libc命令 - 查看详细的错误日志
7.2 启动失败排查
Redis启动失败的常见原因包括:
- 端口冲突:检查6379端口是否被占用
- 权限问题:确保Redis用户有足够的权限访问数据和日志目录
- 配置错误:仔细检查redis.conf文件中的配置项
- 内存不足:检查系统可用内存
7.3 性能问题排查
如果遇到性能问题,可以考虑:
- 使用
redis-benchmark进行性能测试 - 检查慢查询日志
- 监控内存使用情况
- 检查网络延迟
在实际部署中,我发现离线安装Redis最关键的是确保所有依赖的完整性。特别是在没有网络的环境中,缺少任何一个依赖包都可能导致整个安装过程失败。因此,建议在准备阶段就仔细检查所有需要的软件包,并做好备份。