Anolis 23 的官方源里彻底找不到 OpenIPMI 相关的 RPM 包,我们采取**"编译安装 + 核心组件分离"**的策略
第一步:准备编译环境
虽然 DNF 找不到 Zabbix 的 RPM,但它有基础的开发工具。我们需要先装好 PHP 8.3 环境和开发套件:
bash
# 解决 TLS、SSH、ODBC、SNMP 等所有核心功能的依赖
yum install -y openssl-devel libssh2-devel unixODBC-devel net-snmp-devel libxml2-devel libcurl-devel go
# 安装 LDAP, YAML, Java 等开发库
yum install -y openldap-devel libyaml-devel java-11-openjdk-devel
#基础软件
dnf install libxml2-devel libcurl-devel net-snmp-devel libevent-devel pcre2-devel -y
# 安装 PHP 8.3 及其 Web 扩展
dnf install php php-fpm php-mysqlnd php-gd php-bcmath php-mbstring php-xml php-ldap -y
# 安装数据库开发库和网络开发库
dnf install mariadb-devel mariadb libevent-devel pcre-devel libcurl-devel libxml2-devel -y
第二步:下载 Zabbix 源码
我们要下载 Zabbix 7.4 的源码包自行编译。
bash
wget https://cdn.zabbix.com/zabbix/sources/stable/7.4/zabbix-7.4.0.tar.gz
tar -xzvf zabbix-7.4.0.tar.gz
cd zabbix-7.4.0/
第三步:核心步骤------配置并禁用 IPMI
这是解决你报错的关键。通过 --without-openipmi 参数,让 Zabbix 不再去寻找系统里不存在的 libOpenIPMI.so。
bash
./configure --prefix=/usr/local/zabbix \
--enable-server \
--enable-agent \
--enable-agent2 \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--with-openssl \
--with-ssh2 \
--with-unixodbc \
--with-ldap \
--with-libyaml \
--with-libevent \
--with-pcre2 \
--enable-ipv6 \
--without-openipmi
第四步:执行编译与安装
bash
# 使用 -j 加上你的 CPU 核心数来加快编译速度
make -j$(nproc)
# 执行安装
make install
第五步:手动配置 Web 前端 (PHP 8.3)
bash
# 1. 创建 Web 访问目录
mkdir -p /var/www/html/zabbix
# 2. 拷贝源码包中的前端文件 (你在 zabbix-7.4.0 目录下执行)
cp -a ui/* /var/www/html/zabbix/
# 3. 设置权限(非常重要,否则 PHP 无法写入配置)
chown -R apache:apache /var/www/html/zabbix
第六步:初始化数据库 (Zabbix 7.4.0 结构)
第一步:安装并启动 MariaDB
bash
# 安装 MariaDB 服务器和客户端
dnf install mariadb-server mariadb -y
# 启动服务并设置开机自启
systemctl enable --now mariadb
第二步:数据库安全初始化
执行以下命令,为数据库的 root 用户设置密码(注意:这是数据库的总管理员密码,不是系统 root 密码):
bash
mysql_secure_installation
提示 Enter current password for root: 直接回车。
提示 Switch to unix_socket authentication: 输入 n。
提示 Change the root password?: 输入 y,然后设置你的数据库管理员密码。
后续所有提示(删除匿名用户、禁止远程 root 登录等)全部输入 y。
第三步:为 Zabbix 创建专用库和用户
现在登录数据库,手动创建 Zabbix 运行所需的"房间":
bash
# 使用你刚才设置的 root 密码登录
mysql -u root -p
进入数据库命令行后,逐行输入以下 SQL 语句:
bash
-- 1. 创建数据库,指定字符集(Zabbix 7.4 必须用 utf8mb4)
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
-- 2. 创建用户 'zabbix',密码设置为 'password' (你可以换成自己的)
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password';
-- 3. 给用户授权
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
-- 4. 允许函数创建(导入数据必开)
SET GLOBAL log_bin_trust_function_creators = 1;
-- 5. 退出
QUIT;
第四步:导入数据
bash
cd database/mysql
# 按照顺序导入
mysql -uzabbix -p zabbix < schema.sql
mysql -uzabbix -p zabbix < images.sql
mysql -uzabbix -p zabbix < data.sql
第五步:关联 Zabbix Server 与数据库
bash
# 找到以下行并修改(可以用 vi 手动改,也可以用下面命令)
sed -i 's/# DBPassword=/DBPassword=password/g' /usr/local/zabbix/etc/zabbix_server.conf
第七步:创建 Zabbix 运行用户
为了安全,Zabbix 不允许以 root 身份运行:
bash
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
第八步.:准备 Systemd 启动脚本
为了方便管理,我们需要手动创建两个服务文件,因为源码编译不会自动创建它们。
创建 Server 服务 (/etc/systemd/system/zabbix-server.service):
bash
[Unit]
Description=Zabbix Server
After=syslog.target network.target mariadb.service
[Service]
Type=forking
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_server
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
创建 Agent 服务 (/etc/systemd/system/zabbix-agent.service):
bash
[Unit]
Description=Zabbix Agent
After=syslog.target network.target
[Service]
Type=forking
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target
第九步.开放核心端口
请直接在 Zabbix Server 机器上执行以下命令:
bash
# 1. 开放 HTTP (80/tcp),用于你从浏览器访问 Web 界面
firewall-cmd --permanent --add-service=http
# 2. 开放 Zabbix Server 端口 (10051/tcp),用于接收 8 台 Builder 的数据
firewall-cmd --permanent --add-port=10051/tcp
# 3. 开放 Zabbix Agent 端口 (10050/tcp),如果你也要监控 Server 本身
firewall-cmd --permanent --add-port=10050/tcp
# 4. 重新加载配置,使修改生效
firewall-cmd --reload
第十步:修改关键参数
bash
# 修改执行时间限制 (解决图片中最后两个红字报错)
sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini
# 修改 POST 数据大小 (解决图片中第一个红字报错)
sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/php.ini
# 建议顺便把内存限制也调大一点(防止以后监控项多了页面卡顿)
sed -i 's/memory_limit = 128M/memory_limit = 256M/g' /etc/php.ini
第十一步. 启动并开启 Web 向导
bash
# 刷新服务列表
systemctl daemon-reload
# 启动服务
systemctl enable --now zabbix-server zabbix-agent httpd php-fpm
现在,你可以通过浏览器访问:http://你的服务器IP/zabbix 了。