在许多企业级生产环境中,服务器出于安全策略的考虑,通常不允许直接连接到互联网,在这些隔离的“内网”或“离线”环境中部署高性能的内存数据库Redis,却是一个常见的需求,本文将详细阐述如何在CentOS系统上,通过准备依赖包和源码的方式,完整地进行Redis的离线安装与配置,整个过程分为两个核心阶段:在线准备阶段和离线安装阶段,确保每一步都清晰、可操作。

第一阶段:在线环境准备依赖
在有网络连接的、与目标离线CentOS系统版本相近的“准备机”上,我们需要下载所有必需的软件包,这一步是整个离线安装成功的关键。
确定系统版本与架构
在目标离线CentOS服务器上执行 uname -a 和 cat /etc/centos-release 命令,确认其内核版本和系统发行版(CentOS 7.9),在准备机上,我们应选择与之匹配的软件包,以避免潜在的兼容性问题。
下载Redis源码包
访问Redis官方网站(https://redis.io/download)获取最新稳定版的源码压缩包,使用wget命令直接下载:
wget http://download.redis.io/releases/redis-6.2.13.tar.gz
请根据实际需求替换版本号,源码安装方式具有更好的灵活性和兼容性。
下载编译依赖
Redis的编译过程需要一些基础的开发工具和库,在CentOS中,我们主要依赖gcc(C语言编译器)、make(构建工具)和tcl(用于测试),我们可以利用yum的yumdownloader工具来下载这些依赖的RPM包及其所有关联依赖。
安装yum-utils,它包含了yumdownloader:
yum -y install yum-utils
创建一个专门的目录用于存放所有下载的文件,并进入该目录:
mkdir -p /tmp/redis-offline-packages cd /tmp/redis-offline-packages
使用yumdownloader下载编译所需的RPM包,并使用--resolve参数自动处理依赖关系:
yumdownloader --resolve --destdir=. gcc make tcl
这个命令会将gcc, make, tcl以及它们所依赖的所有软件包(如cpp, glibc, kernel-headers等)全部下载到当前目录。
打包传输
将下载的Redis源码包和所有RPM依赖包打包,准备传输到离线服务器:

tar -czvf redis-offline-installer.tar.gz *.rpm *.tar.gz
redis-offline-installer.tar.gz这个文件就是我们离线安装所需的全部材料。
第二阶段:离线服务器安装配置
将打包好的redis-offline-installer.tar.gz文件通过U盘、内部网络共享或其他安全方式拷贝到目标离线CentOS服务器上。
解压与安装依赖
在离线服务器上,选择一个工作目录(例如/opt),解压安装包:
cd /opt tar -xzvf /path/to/redis-offline-installer.tar.gz
解压后,你会看到一堆.rpm文件和Redis的源码包,安装这些本地RPM依赖包,使用yum localinstall命令,因为它能自动处理本地包之间的依赖关系:
yum localinstall *.rpm -y
这个过程会安装所有编译Redis所需的基础环境。
编译安装Redis
依赖安装完毕后,开始编译Redis源码。
# 解压Redis源码 tar -xzvf redis-6.2.13.tar.gz cd redis-6.2.13 # 编译 make # (可选)运行测试以确保编译无误 make test # 安装到指定目录,/usr/local/redis make install PREFIX=/usr/local/redis
make install会将Redis的可执行文件(如redis-server, redis-cli)安装到/usr/local/redis/bin目录下。
配置Redis
一个良好的配置是Redis稳定运行的保障。
# 创建配置文件目录 mkdir -p /usr/local/redis/etc # 创建数据存储目录 mkdir -p /usr/local/redis/data # 创建日志目录 mkdir -p /usr/local/redis/logs # 将源码中的默认配置文件复制过来 cp redis.conf /usr/local/redis/etc/
编辑/usr/local/redis/etc/redis.conf文件,进行关键配置调整:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
daemonize | yes | 设置为yes,使Redis以守护进程方式在后台运行 |
bind | 0.0.0 或 内网IP | 监听的IP地址,0.0.0表示所有网卡,生产环境建议绑定具体内网IP |
port | 6379 | Redis服务监听的端口 |
pidfile | /var/run/redis_6379.pid | 指定PID文件路径 |
logfile | /usr/local/redis/logs/redis.log | 指定日志文件路径 |
dir | /usr/local/redis/data | 指定数据库快照(dump.rdb)的存放目录 |
创建系统服务并启动
为了方便管理,我们将Redis配置为systemd服务。
创建服务文件/etc/systemd/system/redis.service:

[Unit] Description=Redis In-Memory Data Store After=network.target [Service] User=redis Group=redis ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf ExecStop=/usr/local/redis/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.target
注意:上述配置中使用了redis用户和组,我们需要先创建它们:
groupadd redis useradd -g redis -s /sbin/nologin redis chown -R redis:redis /usr/local/redis
启动并设置Redis开机自启:
systemctl daemon-reload systemctl start redis systemctl enable redis
使用systemctl status redis和redis-cli ping来验证服务是否正常运行,若redis-cli ping返回PONG,则代表安装配置成功。
相关问答FAQs
Q1: 如果在离线编译时,make过程中报错提示缺少某个库(例如jemalloc),该怎么办?
A1: 这通常意味着目标离线服务器的系统环境与准备机有细微差别,或者Redis版本对某个特定库有强依赖,解决方法是回到在线的准备机,使用yumdownloader下载缺失的库及其依赖(yumdownloader --resolve --destdir=. jemalloc),将新生成的.rpm文件追加到redis-offline-installer.tar.gz中,然后重新传输到离线服务器,再次执行yum localinstall *.rpm -y安装新依赖,之后重新make即可。
Q2: 为什么在安装本地RPM包时推荐使用yum localinstall而不是rpm -ivh?
A2: yum localinstall是更优的选择,因为它具备强大的依赖解析能力,当你执行yum localinstall *.rpm时,yum会检查当前目录下所有待安装的RPM包,并自动计算它们之间的依赖关系,按正确的顺序进行安装,而rpm -ivh命令则更为“原始”,它只会尝试安装你指定的单个包,如果该包依赖的其他包未预先安装,安装过程就会直接失败,在处理一组相互依赖的离线包时,yum localinstall能提供更智能、更可靠的安装体验。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复