Linux 源码安装 Redis 6.0.10 超详细教程(含编译报错、SCL源失效解决方案)
一、前期准备
1.1 环境依赖
Redis 基于 C 语言开发,源码编译安装必须依赖 GCC 编译环境,未安装需提前执行命令安装基础编译依赖:
yum install gcc-c++
1.2 安装包下载
官方下载地址:https://redis.io/download
选择 Stable 稳定版(本文以 redis-6.0.10 为例),下载安装包后,通过远程工具(FinalShell/Xshell 等)将安装包上传至服务器 /usr/local 目录。
二、Redis 源码安装步骤
2.1 解压安装包
进入上传目录,执行解压命令:
cd /usr/local
tar -xvf redis-6.0.10.tar.gz
2.2 编译源码(解决报错核心步骤)
1. 进入解压后的 Redis 目录,直接执行编译会出现 gcc 未找到、jemalloc 依赖缺失、结构体参数报错 等一系列问题,根源为系统默认 GCC 版本过低,不兼容 Redis6.0+ 编译语法,需先升级高版本编译工具链:
# 进入Redis目录
cd redis-6.0.10
# 安装SCL源及高版本GCC编译工具
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
# 临时启用gcc9编译环境(当前终端生效)
scl enable devtoolset-9 bash
2. 重新执行编译、安装命令:
# 源码编译
make
# 安装Redis
make install
2.3 规范安装目录结构
安装完成后,手动创建配置目录、脚本目录,规整文件存放位置:
# 在Redis根目录创建文件夹
mkdir bin
mkdir etc
# 将核心配置文件移动到etc目录
mv redis.conf etc/
# 进入src目录,迁移运行脚本到bin目录
cd src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server ../bin/
三、Redis 核心配置优化
3.1 配置外网访问(bind 参数详解)
进入配置文件目录,编辑 redis.conf 配置外网访问权限:
cd /usr/local/redis-6.0.10/etc
vim redis.conf
输入 /bind 搜索配置项,修改参数:
将默认 bind 127.0.0.1 改为 bind 0.0.0.0
bind 参数核心原理(避坑重点)
很多人对 bind 配置存在认知误区,其并非限制访问IP,而是绑定本机网卡IP:
-
bind 127.0.0.1:绑定本机回环网卡,仅服务器本地可连接 Redis,安全性极高,无需密码也不会被外网访问,生产环境推荐配置。
-
bind 0.0.0.0:绑定本机所有网卡,允许所有网段主机访问(需开放服务器6379端口+配置密码),仅测试环境使用。
3.1.1 protected-mode 保护机制详解(核心安全要点)
Redis 自带保护模式是核心安全屏障,仅同时满足以下3个条件才会自动开启,开启后仅本机可访问服务:
1、保护模式开启:protected-mode yes(默认开启);
2、未手动配置 bind 绑定网卡;
3、未设置 Redis 登录密码。
任意一个条件不满足,保护模式自动失效。因此测试环境开启外网访问(bind 0.0.0.0)后,必须配置密码,避免裸奔暴露公网,引发数据泄露、恶意入侵风险。
若需精准限制指定IP访问,不能通过 bind 实现,需借助服务器防火墙/安全组策略限制6379端口访问权限。
详细原理参考:Redis bind 参数深度解析
3.2 设置后台运行
继续编辑 redis.conf,输入 /daemonize 搜索,修改配置:
将 daemonize no 改为 daemonize yes,设置 Redis 后台常驻运行。
3.3 设置登录密码
输入 /requirepass 搜索密码配置,取消注释,设置自定义密码:
修改为:requirepass 自定义密码
四、Redis 启动与连接测试
4.1 启动 Redis 服务
cd /usr/local/redis-6.0.10/bin
redis-server ../etc/redis.conf
4.2 客户端连接 Redis
# 远程连接格式:redis-cli -h 服务器IP -p 端口
redis-cli -h 10.0.0.10 -p 6379
# 输入密码认证
auth 自定义密码
4.3 清空数据(慎用!)
测试环境如需清空所有 Redis 缓存数据,执行以下命令,生产环境禁止随意使用**,清空后数据无法恢复**:
FLUSHALL
五、常见报错解决方案(SCL源失效)
5.1 报错信息
执行 yum install devtoolset-9 时报错:
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
Could not resolve host: mirrorlist.centos.org
5.2 报错原因
CentOS 7 官方 SCL 源已于 2024年6月30日停止维护,默认官方镜像地址无法访问,需替换为阿里云镜像源。
5.3 完整解决步骤
# 1. 进入yum源配置目录
cd /etc/yum.repos.d/
# 2. 备份原有失效的SCL源文件
mv CentOS-SCLo-scl.repo CentOS-SCLo-scl.repo.bak
mv CentOS-SCLo-scl-rh.repo CentOS-SCLo-scl-rh.repo.bak
# 3. 新建阿里云SCL源配置文件
vim CentOS-SCLo-rh.repo
粘贴以下完整配置内容并保存退出:
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
4. 清理缓存并重新执行编译工具安装命令即可正常使用。
5.4 启动后内核警告修复(可选优化)
Redis 启动后会出现两个常见内核警告,长期运行会影响性能、导致持久化失败,建议永久修复:
警告1:overcommit_memory 内存参数异常
问题:低内存场景下Redis后台持久化可能失败
临时修复(立即生效):sysctl vm.overcommit_memory=1
永久修复:编辑 /etc/sysctl.conf,添加 vm.overcommit_memory = 1,执行 sysctl -p 生效
警告2:透明大页THP开启
问题:会造成Redis延迟波动、内存占用异常
临时修复(立即生效):echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
永久修复:将上述命令写入 /etc/rc.local,开机自动执行,重启Redis生效
问题参考文档:SCL源失效修复方案
详细安装排坑参考:Redis 安装全坑解决方案
更多推荐




所有评论(0)