Rocky Linux 10 环境下 Redis 源码编译安装与系统服务集成

1. 背景

在 Rocky Linux 10 (或 RHEL 10) 等较新发行版中,官方仓库(BaseOS/AppStream)可能尚未包含 Redis 软件包。为了获得最稳定的运行环境并确保持久化支持,直接从源码编译安装是最佳实践。

2. 环境准备

由于 Rocky Linux 10 默认工具链极其精简,在编译前必须手动安装 C/C++ 编译器及构建工具。

# 安装全套编译环境
sudo dnf install -y gcc gcc-c++ make

3. 源码下载与编译安装

我们直接从 Redis 官网获取最新稳定版源码。

# 进入源码存放目录
cd /usr/local/src

# 下载最新稳定版
sudo curl -O https://download.redis.io/redis-stable.tar.gz

# 解压并进入目录
sudo tar -xzf redis-stable.tar.gz
cd redis-stable

# 编译 (核心技巧:使用 MALLOC=libc 解决新系统下的 jemalloc 兼容性问题)
sudo make clean
sudo make MALLOC=libc

# 将二进制文件安装至系统路径 (/usr/local/bin)
sudo make install

4. 配置与系统集成

为了让 Redis 在后台稳定运行并随开机自启,我们需要配置 redis.conf 并集成到 systemd

4.1 配置文件准备

sudo mkdir -p /etc/redis
sudo cp /usr/local/src/redis-stable/redis.conf /etc/redis/redis.conf

# 关键:由于由 systemd 管理,确保 daemonize 为 no
sudo sed -i 's/^daemonize yes/daemonize no/' /etc/redis/redis.conf

4.2 创建 Systemd 服务

创建服务单元文件 /etc/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

5. 服务启动与验证

# 重新加载配置并启动服务
sudo systemctl daemon-reload
sudo systemctl enable --now redis

# 检查服务状态
systemctl status redis

# 测试连接
redis-cli ping
# 预期返回: PONG

6. 避坑指南 (Troubleshooting)

报错信息 原因分析 解决方案
cc: command not found 缺少 C 编译器 dnf install gcc
g++: command not found 缺少 C++ 编译器 dnf install gcc-c++
je_malloc_usable_size 编译报错 默认分配器依赖冲突 编译时添加 MALLOC=libc
start-limit-hit 启动失败 Redis 开启了后台模式与 systemd 冲突 redis.conf 中的 daemonize 设为 no

7. 安全建议

在生产环境中,请务必执行以下操作:

  1. 编辑 /etc/redis/redis.conf

  2. 搜索 requirepass 并设置强密码。

  3. 确保 bind 127.0.0.1 仅允许本地访问(若需远程访问,请配合防火墙策略)。

  4. 修改后执行 systemctl restart redis


阅读剩余
THE END