# CentOS 7 安装 Zabbix 5.0 前端时报错:Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
1. 问题背景
在 CentOS 7 服务器上部署 Zabbix 5.0,安装流程大致如下:
- 安装 Zabbix 5.0 官方 yum 源;
- 安装
zabbix-server-mysql和zabbix-agent; - 安装
centos-release-scl; - 启用
zabbix-frontend仓库; - 安装 Zabbix Web 前端组件:
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
其中,Zabbix Server 和 Agent 已经成功安装,但安装 Web 前端时 yum 报错。
2. 环境信息
| 项目 | 内容 |
|---|---|
| 操作系统 | CentOS 7 |
| Zabbix 版本 | Zabbix 5.0 LTS |
| 已安装组件 | zabbix-server-mysql、zabbix-agent |
| 前端安装包 | zabbix-web-mysql-scl、zabbix-apache-conf-scl |
| 涉及仓库 | Zabbix 官方源、CentOS SCLo 源 |
3. 已成功执行的步骤
3.1 安装 Zabbix 5.0 官方仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
执行后生成 Zabbix 官方 yum 源配置文件:
/etc/yum.repos.d/zabbix.repo
3.2 安装 Zabbix Server 和 Agent
yum install zabbix-server-mysql zabbix-agent
安装结果:
Installed:
zabbix-agent.x86_64 0:5.0.47-1.el7
zabbix-server-mysql.x86_64 0:5.0.47-1.el7
说明 Zabbix Server 和 Zabbix Agent 已经安装成功。
3.3 安装 SCL 源
yum install centos-release-scl
安装后新增两个 SCL 仓库配置文件:
/etc/yum.repos.d/CentOS-SCLo-scl.repo
/etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
3.4 启用 Zabbix 前端仓库
编辑:
vim /etc/yum.repos.d/zabbix.repo
将 [zabbix-frontend] 中的 enabled 改为 1:
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
4. 报错现象
执行安装 Zabbix Web 前端:
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
出现如下错误:
Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=sclo-rh error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
关键错误是:
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
5. 原因分析
这个错误不是 Zabbix 包本身的问题,也不是 zabbix.repo 配置错误,而是 CentOS SCLo 仓库不可用导致的。
Zabbix 5.0 的 Web 前端依赖 PHP 7.2 相关组件,例如:
rh-php72
rh-php72-php-fpm
rh-php72-php-mysqlnd
rh-php72-php-mbstring
rh-php72-php-gd
rh-php72-php-xml
这些包来自 CentOS SCLo 仓库,也就是:
centos-sclo-rh
centos-sclo-sclo
但是默认生成的 SCLo repo 文件仍然使用:
mirrorlist=http://mirrorlist.centos.org/...
当 mirrorlist.centos.org 无法解析或不可用时,yum 就无法获取 SCLo 源数据,最终导致:
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
6. 解决方法
核心思路:
将 CentOS SCLo 源从不可用的
mirrorlist.centos.org改为可访问的 CentOS Vault 源。
6.1 备份原 SCLo repo 文件
cp -a /etc/yum.repos.d/CentOS-SCLo-scl.repo /etc/yum.repos.d/CentOS-SCLo-scl.repo.bak
cp -a /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo.bak
6.2 重写 CentOS-SCLo-scl-rh.repo
cat > /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo <<'EOF'
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://vault.centos.org/7.9.2009/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
EOF
6.3 重写 CentOS-SCLo-scl.repo
cat > /etc/yum.repos.d/CentOS-SCLo-scl.repo <<'EOF'
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://vault.centos.org/7.9.2009/sclo/$basearch/sclo/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
EOF
6.4 清理 yum 缓存
yum clean all
6.5 重新生成 yum 缓存
yum makecache
成功后可以看到 SCLo 源已经可以正常读取:
centos-sclo-rh | 3.0 kB 00:00
centos-sclo-sclo | 3.0 kB 00:00
Metadata Cache Created
7. 重新安装 Zabbix Web 前端
再次执行:
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
这次依赖解析正常,yum 能够从 centos-sclo-rh 中获取 rh-php72 相关包:
rh-php72
rh-php72-php-fpm
rh-php72-php-mysqlnd
rh-php72-php-mbstring
rh-php72-php-gd
rh-php72-php-xml
最终安装成功:
Installed:
zabbix-apache-conf-scl.noarch 0:5.0.47-1.el7
zabbix-web-mysql-scl.noarch 0:5.0.47-1.el7
Complete!
8. 最终正确执行顺序
如果重新整理一次完整流程,可以按下面顺序执行。
8.1 安装 Zabbix 5.0 官方源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
8.2 安装 Zabbix Server 和 Agent
yum install -y zabbix-server-mysql zabbix-agent
8.3 安装 SCL 源
yum install -y centos-release-scl
8.4 修复 SCLo 源
cp -a /etc/yum.repos.d/CentOS-SCLo-scl.repo /etc/yum.repos.d/CentOS-SCLo-scl.repo.bak
cp -a /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo.bak
cat > /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo <<'EOF'
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://vault.centos.org/7.9.2009/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
EOF
cat > /etc/yum.repos.d/CentOS-SCLo-scl.repo <<'EOF'
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://vault.centos.org/7.9.2009/sclo/$basearch/sclo/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
EOF
8.5 启用 Zabbix Frontend 仓库
编辑:
vim /etc/yum.repos.d/zabbix.repo
确认:
[zabbix-frontend]
enabled=1
8.6 重建 yum 缓存
yum clean all
yum makecache
8.7 安装 Zabbix Web 前端
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
9. 补充说明:NOKEY 警告是否需要处理?
安装过程中出现过类似提示:
Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Public key for zabbix-agent-5.0.47-1.el7.x86_64.rpm is not installed
这不是本次安装失败的核心原因。
后续 yum 会提示导入 GPG Key:
Importing GPG key 0xA14FE591
Is this ok [y/N]: y
确认导入即可。
真正导致失败的是:
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64
10. 排查思路总结
遇到 yum 安装失败时,不要只看最后一行 Error,要重点看失败的是哪个 repo。
本次问题中:
repo: centos-sclo-rh/x86_64
说明失败源是 centos-sclo-rh,不是 Zabbix 官方源。
判断过程如下:
Zabbix Server 和 Agent 已安装成功
↓
安装 Zabbix Web 前端失败
↓
报错 repo 是 centos-sclo-rh
↓
说明 PHP 7.2 SCL 依赖源不可用
↓
修复 CentOS-SCLo repo 到 vault.centos.org
↓
yum makecache 成功
↓
Zabbix Web 前端安装成功
11. 经验教训
-
zabbix-release和zabbix-agent不是一个东西:zabbix-release:安装 Zabbix yum 仓库;zabbix-agent:安装 Zabbix Agent 程序。
-
Zabbix 5.0 在 CentOS 7 上安装前端时,需要 SCL 提供 PHP 7.2。
-
如果 yum 报:
Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64应该优先检查
/etc/yum.repos.d/CentOS-SCLo-*.repo。 -
老版本 CentOS 的默认
mirrorlist可能不可用,实际部署时可以改用vault.centos.org。 -
解决 yum 源问题的基本套路:
yum clean all yum makecache yum install 包名
12. 最终结果
修复 SCLo 源后,Zabbix Web 前端安装成功:
Installed:
zabbix-apache-conf-scl.noarch 0:5.0.47-1.el7
zabbix-web-mysql-scl.noarch 0:5.0.47-1.el7
Complete!
至此,Zabbix 5.0 Server、Agent 和 Web 前端组件均已成功安装。
转载请注明作者和出处,并添加本页链接。
原文链接: //liyiyia.cloud/1