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

相关推荐
番茄炒鸡蛋加糖1 小时前
MySQL 实战调优& 分表基础
数据库·mysql
味悲1 小时前
Linux提权
linux·服务器·安全
Database_Cool_2 小时前
云数据库如何保证高可用、故障了怎么办:阿里云 RDS MySQL 高可用架构详解
数据库·mysql·阿里云
无足鸟ICT2 小时前
【RHCA+】替换变量
linux
中微极客2 小时前
Veo视频生成与Gemini Agent平台集成实践
数据库·人工智能·oracle·音视频
尘似鹤2 小时前
rk3506的uboot源码分析(三)
linux·uboot
闲猫2 小时前
Agent工程实践:从WorkFlow到多Agent协作的落地笔记
java·服务器·前端
2023自学中2 小时前
imx6ull 开发板 贪吃蛇, C++11 SDL2 无硬件GPU优化版
linux·c++
一棵星3 小时前
内网 MySQL 表结构一键导出 Word 文档:直连 + Agent 双模式实战
数据库·mysql·word