Zabbix在Linux上需数据库、Web服务、PHP三者协同,任一配置错误即导致server启动失败或Web报500/“Checking prerequisites”;须严格匹配版本依赖、字符集(utf8mb4)、PHP扩展、SELinux策略及zabbix_server.conf中DBHost/DBPassword/ListenPort等关键参数。

Zabbix 在 Linux 上不是“装上就能用”的监控工具,它依赖数据库、Web 服务、PHP 运行时三者协同,任一环节配置错,zabbix_server 就起不来,Web 页面就卡在“Checking prerequisites”或直接报 500 错误。
确认系统环境与组件依赖是否齐备
Zabbix 不是独立二进制,它对底层有明确要求:
- CentOS/RHEL 7/8 或 Rocky/AlmaLinux 8+ 是当前主流支持版本;Ubuntu 20.04/22.04 也稳定,但注意 PHP 版本(Zabbix 6.0+ 要求 PHP ≥ 8.0)
- 数据库必须选 MySQL 8.0+、MariaDB 10.5+ 或 PostgreSQL 12+;SQLite 仅限测试,不适用于生产
- Web 服务可用 Apache 或 Nginx,但 Nginx 需搭配
rh-nginx116(RHEL/CentOS)或官方 repo 提供的包,否则 PHP-FPM 无法正确传递/zabbix路径 - 必装 PHP 扩展:
php-bcmath、php-mbstring、php-xml、php-gd、php-ldap(如需 LDAP 登录)、php-pgsql或php-mysqlnd(按数据库选其一)
常见漏装项:
- 忘记
php-fpm,导致 Nginx 返回空白页或 502 -
php-opcache没启用,Web 界面加载极慢 - SELinux 未设为 permissive 或未加对应布尔值(如
httpd_can_network_connect_db=on),zabbix_server连不上远程数据库却无日志提示
数据库初始化必须匹配 Zabbix 版本和引擎
Zabbix 安装包自带的 SQL 脚本(如 /usr/share/doc/zabbix-server-mysql/create.sql.gz)严格绑定版本号。用 Zabbix 6.4 的包,却导入 6.0 的 schema,会导致表缺失、触发器失效、前端报 “No permissions to referred object” 等错误。
操作要点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先解压再导入:
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix - MySQL/MariaDB 用户必须有
CREATE ROUTINE和ALTER ROUTINE权限(Zabbix 6.0+ 触发器依赖存储过程) - PostgreSQL 用户需先执行
CREATE EXTENSION pg_trgm;和CREATE EXTENSION btree_gist;,否则前端搜索、排序异常 - 字符集必须为
utf8mb4(MySQL)或UTF8(PostgreSQL),否则中文模板名、主机名入库后乱码或截断
zabbix_server.conf 配置最容易出错的三项
zabbix_server.conf 表面简单,但三个字段写错就会让服务启动失败且日志无明确提示:
-
DBHost:不能写localhost(会走 Unix socket),跨服务器必须写 IP 或域名;若 DB 在容器中,别写127.0.0.1(那是容器内 loopback) -
DBPassword:密码含特殊字符(如@、/、:)必须 URL 编码(如pass@123→pass%40123),否则连接字符串解析失败 -
ListenPort和StartPollers:默认10051端口若被占用,systemctl start zabbix-server会静默失败;StartPollers=5对 10 台主机够用,但 500+ 主机建议调至 30+ 并配合StartPreprocessors
验证方式:
- 启动后立刻执行:
ss -tnlp | grep :10051,没输出说明进程根本没起来 - 查看真实错误:
tail -n 20 /var/log/zabbix/zabbix_server.log,重点看 “cannot connect to database” 或 “invalid password format”
Web 前端访问 404 或白屏的定位路径
Zabbix Web 不是放个文件夹就行,它依赖精确的 URL 路由重写和 PHP 入口点:
- Apache 下,
/etc/httpd/conf.d/zabbix.conf必须包含Alias /zabbix /usr/share/zabbix,且<Directory "/usr/share/zabbix">块里要有Require all granted - Nginx 下(尤其 RHEL 系),实际配置在
/etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf,其中root /opt/rh/rh-nginx116/root/usr/share/zabbix;是关键,路径错一个字母就 404 - PHP-FPM socket 路径要一致:
fastcgi_pass unix:/var/opt/rh/rh-php73/run/php-fpm/www.sock;(RHEL)或127.0.0.1:9000(Ubuntu),不匹配就是 502 - 浏览器访问必须带
/zabbix路径(如<a href="https://www.php.cn/link/2c41848295efeeb47beabefb10751ed3">https://www.php.cn/link/2c41848295efeeb47beabefb10751ed3</a>),直接访问根目录会跳转失败或提示 “Zabbix is not configured yet”
最常被忽略的是:修改完 Nginx/Apache 配置后,忘了 systemctl reload nginx 或 systemctl reload httpd,改了等于没改。
Zabbix 的“安装完成”不是 rpm 安装成功那一刻,而是你能在 Web 界面看到 Dashboard、且 zabbix_get -s 127.0.0.1 -k "system.uptime" 返回有效数值——中间每一步都可能断在看不见的地方。

















