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” 等错误。
操作要点:
- 先解压再导入:
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></directory>块里要有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路径(如@#@#@#@#@#@#@#@#@#@0),直接访问根目录会跳转失败或提示 “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" 返回有效数值——中间每一步都可能断在看不见的地方。











