跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Linux怎么安装和配置Zabbix 7.0 Linux监控系统最新版详解

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
或中文显示为问号。 建库语句必须写全:
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
。 CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。 下载 编辑
/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
—— 它不会导致服务启动失败,也不会报错,但所有中文界面全是方块,排查时容易误判为数据库字符集问题。

相关文章