736 字
4 分钟
CentOS 7.9 离线部署 Zabbix
1. 环境准备
部署前先关闭防火墙与 SELinux,避免后续端口与权限问题:
$ 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]],本文直接使用现成的压缩包。
$ tar -xzvf zabbix-repo.tar.gz -C /opt配置本地 YUM 仓库:
$ cat > /etc/yum.repos.d/zabbix.repo <<EOF[Zabbix]name=Zabbixbaseurl=file:///opt/zabbix/enabled=1gpgcheck=0EOF
$ yum clean all && yum makecache3. 安装组件
CentOS 7 自带的 mariadb-libs 会与 Zabbix 依赖的 MySQL 客户端冲突,先卸载再装:
$ 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 并取初始密码
$ systemctl start mysqld$ systemctl enable mysqld
# 查看初始化密码$ grep 'temporary password' /var/log/mysqld.log4.2 创建 Zabbix 库与用户
进入 MySQL:
$ 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 自带建表脚本,直接灌入空库:
$ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | \ mysql -uzabbix -p'zabbix_db_密码' -h localhost zabbix该步骤耗时较长(几十秒到几分钟),不要中断。
6. 配置 Zabbix Server
修改 PHP 时区:
$ sed -i.bak '/;date.timezone =/adate.timezone=Asia/Shanghai' \ /etc/opt/rh/rh-php72/php.ini配置数据库连接:
$ vi /etc/zabbix/zabbix_server.confDBHost=localhostDBPassword=zabbix_db_密码启用 Nginx 监听端口(默认注释,取消即可):
$ vi /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conflisten 8080;7. 配置 PHP-FPM
$ vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf# 第 6 行:添加 nginx 用户listen.acl_users = apache,nginx
# 第 25 行:修改时区php_value[date.timezone] = Asia/Shanghai8. 启动全部服务
$ 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-fpm9. 前端初始化
- 浏览器访问
http://服务器IP:8080 - 按配置向导填入数据库信息(与第 4.2 节一致)
- 默认登录账号:
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. 小结
离线部署的核心点:
- 依赖预下:所有 RPM 包及其依赖必须提前打包到
zabbix-repo.tar.gz - 库冲突处理:先卸载
mariadb-libs再装 Zabbix - SCL 路径特殊:Nginx/PHP 走 Red Hat Software Collections,配置文件不在常规
/etc/nginx、/etc/php.ini下 - 建表耗时:
create.sql.gz导入是阻塞操作,不要急
CentOS 7.9 离线部署 Zabbix
https://blog.xeu.asia/posts/centos79-zabbix-offline/