Zabbix 7.0在Rocky Linux 8/9上需严格匹配PHP 8.2模块流、MySQL utf8mb4_bin字符集、Nginx显式charset utf-8配置,否则导致前端空白、中文乱码或服务启动失败;必须通过dnf module switch-to php:8.2启用PHP,建库用CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,导入zabbix-sql-scripts中的server.sql.gz,并在zabbix.conf中添加charset utf-8和add_header X-Content-Type-Options nosniff。

Zabbix 7.0 在 Rocky Linux 8/9 或 Oracle Linux 8 上能直接用 yum 或 dnf 安装,但必须严格匹配 PHP、数据库、Nginx 模块流版本,否则前端打不开、中文乱码、服务起不来——这不是配置问题,是模块冲突。
PHP 8.2 模块必须显式启用并切换
Zabbix 7.0 前端明确要求 PHP ≥ 8.2,而 Rocky Linux 8 默认提供的是 php:8.0 或 php:8.1 流。不切换会导致 zabbix-web-mysql 安装失败,或 Web 页面空白、报 Parse error: syntax error。
- 先查可用流:
dnf module list php - 启用并强制切换:
dnf module enable php:8.2 -y && dnf module switch-to php:8.2 -y - 验证:
php -v输出应为PHP 8.2.x,且php --modules | grep mbstring必须有输出(Zabbix 依赖mbstring和gd) - 注意:如果系统还跑着其他 PHP 应用,
switch-to会全局生效;专用监控机可忽略,否则建议用容器隔离
MySQL/MariaDB 字符集必须设为 utf8mb4_bin
Zabbix 7.0 初始化 SQL 脚本里大量使用四字节 emoji 兼容字段(如 description、name),若数据库用 utf8(实际是 utf8mb3)或 utf8mb4_general_ci,导入时会卡在 CREATE TABLE alerts,报错:Specified key was too long 或中文显示为问号。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 建库语句必须写全:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; - MySQL 配置文件
/etc/my.cnf中需加:[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin skip-character-set-client-handshake = ON innodb_file_per_table = ON
- 重启 MySQL 后,用
mysql -e "SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='zabbix';"确认返回utf8mb4_bin
zabbix-nginx-conf 包自带的配置默认监听 8080 端口且无 HTTPS
安装 zabbix-nginx-conf 后,Nginx 会自动加载 /etc/nginx/conf.d/zabbix.conf,但它默认监听 8080,且不启用 SSL。如果你没改过 Nginx 主配置,访问 http://ip 会 404,访问 http://ip:8080 才进得去——但登录后所有中文菜单、提示仍是乱码,因为响应头缺少 charset=utf-8。
- 编辑
/etc/nginx/conf.d/zabbix.conf,在server块内加两行:charset utf-8; add_header X-Content-Type-Options nosniff;
- 把
listen 8080改成listen 80(或 443 + SSL 配置) - 检查 Nginx 配置:
nginx -t,再重载:systemctl reload nginx - 别漏掉 SELinux:即使你禁用了它,也要确认
setsebool -P httpd_can_network_connect 1,否则 Zabbix Server 无法连数据库
初始化数据库必须用 zabbix-sql-scripts 里的 schema.sql
Zabbix 7.0 不再把 create.sql 放在 /usr/share/doc/ 下,而是统一归到 zabbix-sql-scripts 包。手动找错路径或用旧版 SQL 会导致表结构缺失(比如缺 history_text 表),后续 agent 数据写入直接被丢弃,日志里只显示 cannot insert into table 'history_text',没有任何明显报错。
- 确保已安装:
dnf install -y zabbix-sql-scripts - 导入顺序必须是:
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix -
server.sql.gz是完整初始化脚本;images.sql.gz和data.sql.gz可选(图标和默认模板) - 导入后检查关键表:
mysql -uzabbix -p zabbix -e "SHOW TABLES LIKE 'users';"应返回users表名
最易被忽略的是 Nginx 配置里没加 charset utf-8 —— 它不会导致服务启动失败,也不会报错,但所有中文界面全是方块,排查时容易误判为数据库字符集问题。

















