【CentOS7环境下Redis 6.2.14 源码编译部署说明】

Redis 6.2.14 源码编译部署说明

适用环境:CentOS 7 / RHEL 7

安装方式:源码编译安装

本文档基于实际生产部署过程整理,其他运维人员可按步骤在新服务器上复现


一、部署前准备

1.1 所需安装文件清单

文件 说明 存放位置
redis-6.2.14.tar.gz Redis 6.2.14 源码包(约 2.4M) /install/

1.2 环境要求

  • 操作系统:CentOS 7 / RHEL 7
  • 编译工具:gcc、make(编译安装必需)
  • 内存:建议 1GB 以上(按业务需求调整)
  • 端口规划:6379(Redis 默认端口)

1.3 检查编译环境

bash 复制代码
which gcc make
gcc --version    # 确认 gcc 可用(本文环境为 4.8.5)

二、编译安装

2.1 解压源码包

bash 复制代码
# redis安装包保存在 /install/ 目录下
# 解压安装文件到 /opt/ 目录下
tar -xzf /install/redis-6.2.14.tar.gz -C /opt/
ls -d /opt/redis-6.2.14

2.2 编译

bash 复制代码
cd /opt/redis-6.2.14
make -j$(nproc)

预期输出末尾:

复制代码
LINK redis-server
INSTALL redis-sentinel
LINK redis-cli
Hint: It's a good idea to run 'make test' ;)

2.3 安装到系统目录

bash 复制代码
make install

# 验证安装
/usr/local/bin/redis-server --version
# 预期:Redis server v=6.2.14 ... bits=64

三、配置 Redis

3.1 创建目录结构

bash 复制代码
mkdir -p /etc/redis /var/lib/redis /var/log/redis
cp /opt/redis-6.2.14/redis.conf /etc/redis/redis.conf

3.2 修改关键配置

编辑 /etc/redis/redis.conf,修改以下配置项:

properties 复制代码
# 1. 守护进程模式(后台运行)
daemonize yes

# 2. 日志文件路径
logfile "/var/log/redis/redis.log"

# 3. 数据目录
dir /var/lib/redis

# 4. 访问密码(生产环境必须设置)
requirepass <您的密码>

# 5. 监听地址(如需远程访问)
bind * -::*

⚠️ 安全说明:

  • 生产环境必须设置 requirepass 密码
  • 修改 bind 为所有接口前,请确保已设置密码
  • 保护模式保持默认开启(protected-mode yes),配合密码认证使用

四、注册 systemd 服务(开机自启)

创建 /etc/systemd/system/redis.service:

ini 复制代码
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=on-failure
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

启用并启动服务:

bash 复制代码
systemctl daemon-reload
systemctl enable redis
systemctl start redis

五、验证部署结果

bash 复制代码
# 1. 服务状态
systemctl is-active redis     # 应显示 active
systemctl is-enabled redis    # 应显示 enabled

# 2. 端口监听
ss -tlnp | grep 6379
# 本地模式:127.0.0.1:6379
# 远程模式:*:6379

# 3. 功能验证(无密码应被拒绝)
redis-cli ping
# 预期:(error) NOAUTH Authentication required.

# 4. 密码认证验证
redis-cli -a '<您的密码>' ping
# 预期:PONG

六、远程访问配置(可选)

如需远程客户端连接 Redis:

bash 复制代码
# 1. 确认已设置密码(必须)
grep '^requirepass' /etc/redis/redis.conf

# 2. 修改监听地址
sed -i 's/^bind 127.0.0.1 -::1/bind * -::*/' /etc/redis/redis.conf

# 3. 重启服务
systemctl restart redis

# 4. 验证监听
ss -tlnp | grep 6379    # 应显示 *:6379

# 5. 远程连接测试
redis-cli -h <服务器IP> -p 6379 -a '<您的密码>' ping

七、日常运维命令

bash 复制代码
# 服务管理
systemctl start|stop|restart|status redis

# 连接 Redis
redis-cli -a '<密码>'
# 或先连接再认证
redis-cli
127.0.0.1:6379> auth <密码>

# 查看日志
tail -f /var/log/redis/redis.log

# 查看内存使用
redis-cli -a '<密码>' info memory | grep used_memory_human

# 手动触发持久化
redis-cli -a '<密码>' bgsave

关键路径

项目 路径
程序目录 /usr/local/bin/
配置文件 /etc/redis/redis.conf
数据目录 /var/lib/redis
日志文件 /var/log/redis/redis.log
源码目录 /opt/redis-6.2.14
systemd 服务文件 /etc/systemd/system/redis.service

八、常见问题

8.1 编译报错缺少 gcc 或 make

处理:从光盘本地源安装编译工具:

bash 复制代码
yum install -y gcc make

8.2 远程连接被拒绝

排查:

  • 确认 bind 已修改为 * 或指定 IP
  • 确认已设置 requirepass 密码
  • 确认防火墙已关闭或已放行 6379 端口
  • 确认连接时提供了正确的密码

8.3 提示 NOAUTH Authentication required

原因:Redis 已设置密码,连接时未认证。

处理:连接时添加 -a 参数,或连接后执行 auth 命令。

8.4 服务启动失败

排查:

  • 查看日志:tail -50 /var/log/redis/redis.log
  • 检查配置文件语法:/usr/local/bin/redis-server /etc/redis/redis.conf --test-memory 2
  • 确认数据目录和日志目录存在且有写权限

九、部署清单核对表

  • gcc、make 编译环境已就绪
  • 源码包已解压到 /opt/redis-6.2.14
  • make 编译成功(无错误)
  • make install 安装成功
  • redis-server --version 验证版本正确
  • 配置文件已修改(daemonize、dir、logfile)
  • requirepass 密码已设置
  • systemd 服务文件已创建
  • 服务已 enable 并 active
  • 6379 端口监听正常
  • 无密码连接被拒绝
  • 密码认证连接成功
  • (可选)远程访问已配置并验证
相关推荐
175063319451 小时前
Ubuntu24 DNS 问题
网络·数据库
渡我白衣1 小时前
Acceptor模块的设计与实现
java·linux·服务器·开发语言·网络·c++·人工智能
做一个AK梦1 小时前
DevOps
运维·devops
hzxpaipai1 小时前
杭州网站运维|企业官网上线前技术检查清单:SEO、GEO、安全、服务器与备份
运维·服务器·nginx·安全
风123456789~1 小时前
【Oracle专栏】跨服务器调用ORA-02064: 不支持分布式操作
数据库·oracle
优化Henry1 小时前
关于“星链”互联网系统的几点认识
运维·服务器·网络·笔记·学习·信息与通信
瀚高PG实验室1 小时前
PostgreSQL libpq lo_* 函数允许服务器超级用户覆盖客户端栈内存HGVE-2026-E011
服务器·数据库·postgresql·瀚高数据库
沫璃染墨1 小时前
《从零入门Linux系统篇(二十八):文件篇·一——Linux为什么“万物皆文件”:从C语言文件流到系统调用》
linux·运维·服务器·开发语言·c++·文件
Feynman’s boom2 小时前
PDF解析复盘
数据库·人工智能·算法·pdf解析