CentOS7.9:Redis服务器部署结构化实战教程

一、项目概述

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,主从环境)

  1. 复制配置文件,修改端口、pid 文件、日志目录、数据目录;
  1. 新建 systemd 服务文件 redis‑6380.service;
  1. 启动多个实例,搭建主从复制架构。

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 报错

  • 原因:缺少 libc 环境;
  • 解决:编译命令使用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 启动失败

  • 原因:service 文件路径写错,密码不一致;
  • 解决:核对 ExecStart 和 ExecStop 路径以及登录密码。

故障 4:重启服务器 Redis 无法自动启动

  • 原因:没有执行 daemon‑reload 刷新配置;

解决:执行systemctl daemon-reload,再设置 enable 开机项。