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 上能直接用
或
安装,但必须严格匹配 PHP、数据库、Nginx 模块流版本,否则前端打不开、中文乱码、服务起不来——这不是配置问题,是模块冲突。
PHP 8.2 模块必须显式启用并切换
Zabbix 7.0 前端明确要求 PHP ≥ 8.2,而 Rocky Linux 8 默认提供的是
或
流。不切换会导致
安装失败,或 Web 页面空白、报
。
先查可用流:
启用并强制切换:
验证:
输出应为
,且
必须有输出(Zabbix 依赖
和
)
注意:如果系统还跑着其他 PHP 应用,
会全局生效;专用监控机可忽略,否则建议用容器隔离
MySQL/MariaDB 字符集必须设为 utf8mb4_bin
Zabbix 7.0 初始化 SQL 脚本里大量使用四字节 emoji 兼容字段(如
、
),若数据库用
(实际是
)或
,导入时会卡在
,报错:
或中文显示为问号。
建库语句必须写全:
MySQL 配置文件
中需加:
重启 MySQL 后,用
确认返回
zabbix-nginx-conf 包自带的配置默认监听 8080 端口且无 HTTPS
安装
后,Nginx 会自动加载
,但它默认监听
,且不启用 SSL。如果你没改过 Nginx 主配置,访问
会 404,访问
才进得去——但登录后所有中文菜单、提示仍是乱码,因为响应头缺少
。
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
编辑
,在
块内加两行:
把
改成
(或 443 + SSL 配置)
检查 Nginx 配置:
,再重载:
别漏掉 SELinux:即使你禁用了它,也要确认
,否则 Zabbix Server 无法连数据库
初始化数据库必须用 zabbix-sql-scripts 里的 schema.sql
Zabbix 7.0 不再把
放在
下,而是统一归到
包。手动找错路径或用旧版 SQL 会导致表结构缺失(比如缺
表),后续 agent 数据写入直接被丢弃,日志里只显示
,没有任何明显报错。
确保已安装:
导入顺序必须是:
是完整初始化脚本;
和
可选(图标和默认模板)
导入后检查关键表:
应返回
表名
最易被忽略的是 Nginx 配置里没加
—— 它不会导致服务启动失败,也不会报错,但所有中文界面全是方块,排查时容易误判为数据库字符集问题。
yumdnfphp:8.0php:8.1zabbix-web-mysqlParse error: syntax errordnf module list phpdnf module enable php:8.2 -y && dnf module switch-to php:8.2 -yphp -vPHP 8.2.xphp --modules | grep mbstringmbstringgdswitch-todescriptionnameutf8utf8mb3utf8mb4_general_ciCREATE TABLE alertsSpecified key was too longCREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;/etc/my.cnf[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_bin
skip-character-set-client-handshake = ON
innodb_file_per_table = ONmysql -e "SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='zabbix';"utf8mb4_binzabbix-nginx-conf/etc/nginx/conf.d/zabbix.conf8080http://iphttp://ip:8080charset=utf-8/etc/nginx/conf.d/zabbix.confservercharset utf-8;
add_header X-Content-Type-Options nosniff;listen 8080listen 80nginx -tsystemctl reload nginxsetsebool -P httpd_can_network_connect 1create.sql/usr/share/doc/zabbix-sql-scriptshistory_textcannot insert into table 'history_text'dnf install -y zabbix-sql-scriptszcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbixserver.sql.gzimages.sql.gzdata.sql.gzmysql -uzabbix -p zabbix -e "SHOW TABLES LIKE 'users';"userscharset utf-8