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 开机项。

相关推荐
我星期八休息7 分钟前
网络编程—NAT、代理服务与内网穿透
linux·服务器·网络·网络协议
RisunJan37 分钟前
Linux命令-sysctl(运行时修改内核参数)
linux·网络·智能路由器
yunwei3738 分钟前
eBPF 教程:使用 fsession 追踪慢速 vfs_read 调用
linux·云原生
深念Y41 分钟前
Opencode Event 表写入优化方案
数据库·人工智能·ai·node.js·bug·优化·opencode
A_humble_scholar1 小时前
Linux 网络基础(三)下的 HTTP 核心详解:从请求响应到状态管
linux·网络·http
袅沫1 小时前
Nginx中部署多个前端项目——区分路径
服务器·前端
Albart5751 小时前
Docker Desktop最新版安装踩坑全记录(Windows_Mac_Linux)【2026 4.74.0 终版】
linux·windows·macos·docker·环境搭建·踩坑记录
fei_sun1 小时前
UVM中的TLM1.0通信
运维·服务器·uvm
MartinYeung51 小时前
[论文学习]MCPTox:面向真实世界MCP服务器的工具投毒攻击基准测试
运维·服务器·学习
竹枝溪1 小时前
MySQL进阶:约束、多表设计、多表查询与事务
java·数据库·mysql·事务·子查询·acid·多表查询