736 字
4 分钟
CentOS 7.9 离线部署 Zabbix

1. 环境准备#

部署前先关闭防火墙与 SELinux,避免后续端口与权限问题:

Terminal window
$ setenforce 0
$ sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
$ systemctl stop firewalld && systemctl disable firewalld

离线环境下 SELinux 触发的拒绝问题排查成本极高,生产环境如果需要保留 SELinux,请先做好策略适配再启用。

2. 准备离线仓库#

提前在有网络的机器下载好 Zabbix 及其依赖打成 zabbix-repo.tar.gz,传到目标机器后解压:

制作 zabbix-repo.tar.gz 这类离线 RPM 仓库包的完整流程,见 [[posts/centos-local-yum-repo/index.md]],本文直接使用现成的压缩包。

Terminal window
$ tar -xzvf zabbix-repo.tar.gz -C /opt

配置本地 YUM 仓库:

Terminal window
$ cat > /etc/yum.repos.d/zabbix.repo <<EOF
[Zabbix]
name=Zabbix
baseurl=file:///opt/zabbix/
enabled=1
gpgcheck=0
EOF
$ yum clean all && yum makecache

3. 安装组件#

CentOS 7 自带的 mariadb-libs 会与 Zabbix 依赖的 MySQL 客户端冲突,先卸载再装:

Terminal window
$ yum remove -y mariadb-libs-5.5.68-1.el7.x86_64
$ yum install -y zabbix-agent zabbix-server-mysql zabbix-web-mysql \
zabbix-web-mysql-scl zabbix-nginx-conf-scl \
mysql-server wqy-microhei-fonts

wqy-microhei-fonts 用于 Web 界面图表中文显示,缺了会变方块。

4. 配置数据库#

4.1 启动 MariaDB 并取初始密码#

Terminal window
$ systemctl start mysqld
$ systemctl enable mysqld
# 查看初始化密码
$ grep 'temporary password' /var/log/mysqld.log

4.2 创建 Zabbix 库与用户#

进入 MySQL:

Terminal window
$ mysql -u root -p

重置 root 密码:

ALTER USER user() IDENTIFIED BY '你的强密码';
FLUSH PRIVILEGES;

创建 Zabbix 库和用户(请把 zabbix_db_密码 替换成实际密码):

CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
-- 本机访问
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbix_db_密码';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
-- 远程访问(按需选择 IP 或网段)
CREATE USER 'zabbix'@'10.10.2.170' IDENTIFIED BY 'zabbix_db_密码';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'10.10.2.170';
FLUSH PRIVILEGES;
EXIT;

5. 导入初始数据#

Zabbix 自带建表脚本,直接灌入空库:

Terminal window
$ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | \
mysql -uzabbix -p'zabbix_db_密码' -h localhost zabbix

该步骤耗时较长(几十秒到几分钟),不要中断。

6. 配置 Zabbix Server#

修改 PHP 时区:

Terminal window
$ sed -i.bak '/;date.timezone =/adate.timezone=Asia/Shanghai' \
/etc/opt/rh/rh-php72/php.ini

配置数据库连接:

Terminal window
$ vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBPassword=zabbix_db_密码

启用 Nginx 监听端口(默认注释,取消即可):

Terminal window
$ vi /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
listen 8080;

7. 配置 PHP-FPM#

Terminal window
$ vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
# 第 6 行:添加 nginx 用户
listen.acl_users = apache,nginx
# 第 25 行:修改时区
php_value[date.timezone] = Asia/Shanghai

8. 启动全部服务#

Terminal window
$ systemctl enable --now zabbix-server zabbix-agent \
rh-nginx116-nginx rh-php72-php-fpm
$ systemctl restart zabbix-server zabbix-agent \
rh-nginx116-nginx rh-php72-php-fpm

9. 前端初始化#

  1. 浏览器访问 http://服务器IP:8080
  2. 按配置向导填入数据库信息(与第 4.2 节一致)
  3. 默认登录账号:Admin / zabbix进入后立即修改

10. 排错指引#

现象排查点
Web 端连不上服务端systemctl status zabbix-server、检查 8080 端口监听
登录后图表中文乱码确认 wqy-microhei-fonts 已安装
服务端日志报数据库错误cat /var/log/zabbix/zabbix_server.log
前端报”PHP option … required”重启 rh-php72-php-fpm,或检查 php.ini 是否生效

主要日志路径:

  • Zabbix Server:/var/log/zabbix/zabbix_server.log
  • Nginx:/var/opt/rh/rh-nginx116/log/nginx/
  • MariaDB:/var/log/mysqld.log

11. 小结#

离线部署的核心点:

  1. 依赖预下:所有 RPM 包及其依赖必须提前打包到 zabbix-repo.tar.gz
  2. 库冲突处理:先卸载 mariadb-libs 再装 Zabbix
  3. SCL 路径特殊:Nginx/PHP 走 Red Hat Software Collections,配置文件不在常规 /etc/nginx/etc/php.ini
  4. 建表耗时create.sql.gz 导入是阻塞操作,不要急
CentOS 7.9 离线部署 Zabbix
https://blog.xeu.asia/posts/centos79-zabbix-offline/
作者
Xeu
发布于
2026-05-21
许可协议
CC BY-NC-SA 4.0