今天真是崩溃的一天,第一次遇到这么坑的 Linux 系统环境搭建。平时一直用 Ubuntu Server, 偶尔也用 CentOS,但是从没遇到过 Red Hat 这么折腾的情况。耗费一个下午,就部署了两台服务器,下班了,还有一个 redis 在低速下载中。。。
系统环境
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.10 (Ootpa)
查了一下这个版本号,发现 RHEL 8.10 是 2024 年 5 月发布的,属于 RHEL 8 系列的最新版本。
This system is not registered with an entitlement server
# dnf list redis --showduplicates
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered with an entitlement server. You can use subscription-manager to register.
Error: No matching Packages to list
报错的原因是,RHEL 系统没有注册 Red Hat 订阅,因此官方 AppStream 软件源被锁定了,无法搜索到 Redis 包。
我第一次遇到新装的系统,你不交钱就不给你用软件源的情况。那我怎么安装 gcc 和 make 。。。而且这个服务器还是内网环境,无法访问外网。。。我第一次感觉到无能为力。找运维帮忙安装 gcc,运维说可以给我开外网权限。。。
我实在无法理解,为什么要选择 Red Hat,选择了又不交钱。那用 CentOS 啊,CentOS 虽然已经变成了历史尘埃,那也比没有软件源的系统强吧。
去掉可恶的 Red Hat 订阅提示
sed -i 's/enabled=1/enabled=0/g' /etc/yum/pluginconf.d/subscription-manager.conf
查看 subscription-manager.conf 的内容,其实就是把 enabled=1 改成 enabled=0。
# cat /etc/yum/pluginconf.d/subscription-manager.conf
[main]
enabled=0
# When following option is set to 1, then all repositories defined outside redhat.repo will be disabled
# every time subscription-manager plugin is triggered by dnf or yum
disable_system_repos=0
yum 还是 dnf
没想到,几年不见,连安装工具都改名叫 dnf 了。乍一看,还以为是腾讯赞助的呢😅。
dnf 是 yum 的下一代版本,在 RHEL 8 及之后版本中,yum 命令本身已是 dnf 的一个别名。还是继续用 yum 吧,毕竟习惯了。
从版本号看,就是一样的。
# yum --version
4.7.0
Installed: dnf-0:4.7.0-20.el8.noarch at Mon 17 Mar 2025 10:27:30 AM GMT
Installed: rpm-0:4.14.3-31.el8.x86_64 at Mon 17 Mar 2025 10:23:29 AM GMT
# dnf --version
4.7.0
Installed: dnf-0:4.7.0-20.el8.noarch at Mon 17 Mar 2025 10:27:30 AM GMT
Installed: rpm-0:4.14.3-31.el8.x86_64 at Mon 17 Mar 2025 10:23:29 AM GMT
dnf 是什么的缩写?
- dnf 是 Dandified YUM(常写作 Dandified Yum,意思是”升级版/更优雅的 YUM”)的缩写。
- YUM = Yellowdog Updater, Modified,是早期 RHEL/CentOS 的包管理器
配置国内软件源
折腾了半天,始终没有搞定国内软件源的配置。Red Hat 8 的资料太少了,我也没法 Google,靠 CSDN 上的一众垃圾文章,折腾了半天阿里云、清华源也没搞定。最后,还是靠 WorkBuddy AI 分析出来了,最终用腾讯云的 Rocky Linux 软件源镜像搞定。WorkBuddy 有一点比较强,就是会主动去调用网络请求,验证连接的可用性,帮你排查问题。这是比纯网页版的 AI 强的地方。
之前靠阿里云 CentOS 源配置失败的原因是,CentOS 8 最后一个版本停在 8.5.2111,而 RHEL 8.10 比它新很多,用 CentOS vault 源会缺 8.6–8.10 的包。更合适的做法是改用 Rocky Linux 8.10 的源——Rocky 与 RHEL 8.10 二进制同源、版本号完全对齐,国内镜像也都同步了。
# 用腾讯云 Rocky 8.10 源覆盖原仓库文件
sudo tee /etc/yum.repos.d/Rocky-Base.repo > /dev/null <<'EOF'
[baseos]
name=Rocky-8.10 - BaseOS - tencent
baseurl=https://mirrors.cloud.tencent.com/rocky/8.10/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=https://mirrors.cloud.tencent.com/rocky/RPM-GPG-KEY-rockyofficial
[appstream]
name=Rocky-8.10 - AppStream - tencent
baseurl=https://mirrors.cloud.tencent.com/rocky/8.10/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=https://mirrors.cloud.tencent.com/rocky/RPM-GPG-KEY-rockyofficial
[extras]
name=Rocky-8.10 - Extras - tencent
baseurl=https://mirrors.cloud.tencent.com/rocky/8.10/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=https://mirrors.cloud.tencent.com/rocky/RPM-GPG-KEY-rockyofficial
EOF
# 重建缓存并验证
sudo dnf clean all
sudo dnf makecache
sudo dnf repolist
dnf install 测试
# dnf install gcc
# gcc --version
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-28)
dnf 安装 nginx
# dnf module list nginx
会发现只有 1.14 到 1.24 的版本,1.30 还没有。要安装 1.30 的话,需要从官方源安装。
# 1. 导入官方 GPG key
sudo rpm --import https://nginx.org/keys/nginx_signing.key
# 2. 添加官方仓库(用你刚配的腾讯云做基础依赖源即可)
sudo tee /etc/yum.repos.d/nginx.repo > /dev/null <<'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/8/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
# 3. 安装
sudo dnf clean all
sudo dnf install nginx
验证
# nginx -V
nginx version: nginx/1.30.4
启用 systemd
sudo systemctl enable --now nginx
sudo systemctl status nginx
curl -I http://localhost
会看到 200 的响应。
HTTP/1.1 200 OK
Server: nginx/1.30.4
Date: Wed, 22 Jul 2026 07:15:47 GMT
Content-Type: text/html
Content-Length: 896
Last-Modified: Wed, 15 Jul 2026 18:05:52 GMT
Connection: keep-alive
ETag: "6a57cc00-380"
Accept-Ranges: bytes
安装 redis
https://redis.io/docs/latest/operate/oss_and_stack/install/archive/install-stack/linux/#from-the-official-red-hatrocky-rpm-feeds
From the official Red Hat/Rocky RPM Feeds
果然,这两个系统被归为一类了。
/etc/yum.repos.d/redis.repo
[Redis]
name=Redis
baseurl=http://packages.redis.io/rpm/rhel8
enabled=1
gpgcheck=1
安装:
curl -fsSL https://packages.redis.io/gpg > /tmp/redis.key
sudo rpm --import /tmp/redis.key
sudo yum install epel-release
sudo yum install redis-stack-server
不要漏掉 sudo yum install epel-release,否则会报错缺少依赖。
# redis-server --version
Redis server v=7.4.6 sha=4b03ddfd:0 malloc=jemalloc-5.3.0 bits=64 build=8a9aacd8a7e90802
启用 systemd
sudo systemctl enable redis-stack-server
sudo systemctl start redis-stack-server
配置文件
# cat /etc/redis-stack.conf
port 6379
daemonize no
loadmodule /opt/redis-stack/lib/rediscompat.so
loadmodule /opt/redis-stack/lib/redisearch.so
loadmodule /opt/redis-stack/lib/redistimeseries.so
loadmodule /opt/redis-stack/lib/rejson.so
loadmodule /opt/redis-stack/lib/redisbloom.so
loadmodule /opt/redis-stack/lib/redisgears.so v8-plugin-path /opt/redis-stack/lib/libredisgears_v8_plugin.so
设置密码:
echo "requirepass xxxx" | sudo tee -a /etc/redis-stack.conf
sudo systemctl restart redis-stack-server.service
关于作者 🌱
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式