一、项目概述
1.1 业务场景说明
在 CentOS7.9 系统编译安装 Redis,完成基础配置、安全设置、持久化配置、开机自启;可以部署单机、主从复制、哨兵模式,配合 ks‑cfg 脚本实现 PXE 批量自动化部署,统一机房 Redis 环境标准。
1.2 环境参数
项目 | 参数 |
操作系统 | CentOS Linux release 7.9‑2009 |
Redis 版本 | redis‑5.0.10 |
安装目录 | /usr/local/redis |
配置目录 | /usr/local/redis/conf |
数据目录 | /usr/local/redis/data |
服务运行用户 | root |
端口 | 6379 |
二、安装依赖环境
编译 Redis 需要 gcc 编译环境,先安装依赖包。
shell yum install -y gcc gcc-c++ make |
三、编译安装 Redis
3.1 下载源码包,解压编译
shell cd /usr/local/src #下载源码包 wget https://download.redis.io/releases/redis-5.0.10.tar.gz #解压压缩包 tar -zxf redis-5.0.10.tar.gz cd redis-5.0.10 #编译,解决内存分配报错 make MALLOC=libc #编译安装,指定安装目录 make install PREFIX=/usr/local/redis |
3.2 创建目录结构,整理配置文件
shell #创建配置目录、数据目录 mkdir -p /usr/local/redis/conf /usr/local/redis/data #复制模板配置文件 cp redis.conf /usr/local/redis/conf/redis.conf |
四、修改 redis.conf 核心配置(生产必改项)
shell vi /usr/local/redis/conf/redis.conf |
修改以下参数:
ini #开启后台运行 daemonize yes #对外开放访问,禁止只绑定本地 bind 0.0.0.0 #进程文件路径 pidfile /var/run/redis_6379.pid #日志文件 logfile "/usr/local/redis/data/redis.log" #RDB文件存放目录 dir /usr/local/redis/data #设置登录密码 requirepass Admin@123456
#开启AOF持久化 appendonly yes appendfsync everysec #开启混合持久化 aof-use-rdb-preamble yes |
五、启动与停止 Redis 服务
5.1 启动服务
shell /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf |
5.2 正常关闭服务(优先方式,刷新持久化数据)
shell redis-cli -a Admin@123456 shutdown |
5.3 强制关闭(生产尽量不用)
shell kill -9 $(pgrep redis-server) |
5.4 连接测试
shell redis-cli -a Admin@123456 |
六、配置 systemd 系统服务,设置开机自启
6.1 创建 redis.service 文件
shell vi /etc/systemd/system/redis.service |
写入内容:
ini [Unit] Description=Redis Server After=network.target
[Service] Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf ExecStop=/usr/local/redis/bin/redis-cli -a Admin@123456 shutdown PrivateTmp=true
[Install] WantedBy=multi-user.target |
6.2 加载配置并设置开机自启
shell #刷新systemd配置 systemctl daemon-reload #设置开机自启并启动服务 systemctl enable --now redis #查看运行状态 systemctl status redis |
七、防火墙配置
7.1 测试环境(直接关闭防火墙)
shell systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config |
7.2 生产环境放行端口
shell firewall-cmd --permanent --add-port=6379/tcp firewall-cmd --reload |
八、多实例部署(6380、6381,主从环境)
- 复制配置文件,修改端口、pid 文件、日志目录、数据目录;
- 新建 systemd 服务文件 redis‑6380.service;
- 启动多个实例,搭建主从复制架构。
shell cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis‑6380.conf sed -i 's/6379/6380/g' /usr/local/redis/conf/redis‑6380.conf |
九、ks‑cfg 无人值守批量部署脚本(PXE 装机)
在 % post 段写入脚本,新装服务器自动部署 Redis。
shell %post yum install -y gcc gcc-c++ make cd /usr/local/src wget https://download.redis.io/releases/redis-5.0.10.tar.gz tar -zxf redis-5.0.10.tar.gz cd redis-5.0.10 make MALLOC=libc make install PREFIX=/usr/local/redis mkdir -p /usr/local/redis/conf /usr/local/redis/data cp redis.conf /usr/local/redis/conf/redis.conf sed -i 's/daemonize no/daemonize yes/' /usr/local/redis/conf/redis.conf sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' /usr/local/redis/conf/redis.conf echo "requirepass Admin@123456" >> /usr/local/redis/conf/redis.conf echo "appendonly yes" >> /usr/local/redis/conf/redis.conf
#创建systemd服务文件 cat >/etc/systemd/system/redis.service <<EOF [Unit] Description=Redis Server After=network.target [Service] Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf ExecStop=/usr/local/redis/bin/redis-cli -a Admin@123456 shutdown PrivateTmp=true [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable --now redis %end |
十、高频故障总结
故障 1:make 编译时报 malloc 报错
- 解决:编译命令使用make MALLOC=libc。
故障 2:外网无法连接 Redis
- 原因:bind 绑定 [127.0.0.1](127.0.0.1),防火墙端口未放行;
- 解决:bind 改为 [0.0.0.0](0.0.0.0),防火墙放行 6379 端口。
故障 3:systemd 启动失败
- 解决:核对 ExecStart 和 ExecStop 路径以及登录密码。
故障 4:重启服务器 Redis 无法自动启动
- 原因:没有执行 daemon‑reload 刷新配置;
解决:执行systemctl daemon-reload,再设置 enable 开机项。