CentOS 7.9 源码编译部署 Zabbix 6.0 全过程记录

📌 部署背景与环境要求

Zabbix 官方部署要求参考:
🔗 https://www.zabbix.com/documentation/6.0/en/manual/installation/requirements

Zabbix 6.0 部署要求:

  • 支持的前端访问页面: Apache 2.4 或更高版本;Nginx 1.20 或更高版本
  • 支持的数据库类型:
    • MySQL: 8.0.30-9.6.X
    • MariaDB: 10.5.00-12.2.X
    • PostgreSQL: 13.0-18.X
    • SQLite: 3.3.5-3.53.X
  • 支持的 PHP 版本: PHP 7.2.5 或更高版本

📦 本次部署组件选择:

  • OS: CentOS 7.9
  • Zabbix: 6.0.46 (源码)
  • MySQL: 8.0.36
  • PHP: 7.4
  • Nginx: 1.22

各组件部署形式:
mysql: rpm包安装,mysql官方社区直接可以下载打包好的rpm包集合,省心
php: yum仓库安装,原因是php有太多环境依赖
zabbix6.0:源码编译安装,官方没有针对centos7.9打包好的rpm包,这个zabbix还可以直接使用官方打包好的rpm包,看自己的需求
nginx:前端web应用,直接yum部署即可

💡 为什么采用源码编译?
官方在 2023 年后停止对 CentOS7 的 6.0 server 包支持。因此需要自己手动编译,只能直接手搓一个编译后的二进制包了。

将下载好的 mysql 打包好的 rpm 包集合,zabbix 的源码包全部下载到服务器上面:

[root@zabbix opt]# ll
总用量 5649388
-rw-r--r--  1 root root 1030420480 5月  14 13:47 mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar
-rw-r--r--  1 root root   41430362 5月  14 13:47 zabbix-6.0.46.tar.gz

🛠️ 1. 安装部署 MySQL 服务

https://downloads.mysql.com/archives/community/

image

1.1 解压并使用 RPM 安装

[root@zabbix opt]# mkdir mysql
[root@zabbix opt]# 
[root@zabbix opt]# tar xf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar -C mysql/
[root@zabbix opt]# ll mysql
总用量 1006276
-rw-r--r-- 1 7155 31415  16767208 12月 14 2023 mysql-community-client-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   3621168 12月 14 2023 mysql-community-client-plugins-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415    681264 12月 14 2023 mysql-community-common-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 528659552 12月 14 2023 mysql-community-debuginfo-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   1948160 12月 14 2023 mysql-community-devel-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   4217212 12月 14 2023 mysql-community-embedded-compat-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   2344468 12月 14 2023 mysql-community-icu-data-files-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415   1563732 12月 14 2023 mysql-community-libs-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415    685408 12月 14 2023 mysql-community-libs-compat-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415  67429872 12月 14 2023 mysql-community-server-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415  25664528 12月 14 2023 mysql-community-server-debug-8.0.36-1.el7.x86_64.rpm
-rw-r--r-- 1 7155 31415 376818184 12月 14 2023 mysql-community-test-8.0.36-1.el7.x86_64.rpm

# rpm安装
[root@zabbix mysql]# yum localinstall *.rpm

1.2 启动数据库

[root@zabbix mysql]# systemctl enable --now  mysqld.service 
[root@zabbix mysql]# 
[root@zabbix mysql]# systemctl status mysqld.service 
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2026-05-14 14:21:52 CST; 3s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 5276 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 5342 (mysqld)
   Status: "Server is operational"
   CGroup: /system.slice/mysqld.service
           └─5342 /usr/sbin/mysqld

5月 14 14:21:39 zabbix systemd[1]: Starting MySQL Server...
5月 14 14:21:52 zabbix systemd[1]: Started MySQL Server.

1.3 进入数据库修改密码

[root@zabbix mysql]# tail -f /var/log/mysqld.log | grep root@localhost
2026-05-14T06:21:44.071886Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 3*>fhjWn(C%r
[root@zabbix mysql]# mysql -uroot -p'3*>fhjWn(C%r'
mysql> alter user root@localhost identified by 'Lh@123456';
Query OK, 0 rows affected (0.01 sec)

1.4 创建 Zabbix 数据库与用户

⚠️ 注意: MySQL8.0 默认认证插件:caching_sha2_password,Zabbix6.0、PHP7.4 客户端不支持这种新加密方式,不改这条:Zabbix 页面连不上数据库、直接报错无法连接。

mysql> create database zabbix character set
    -> utf8 collate utf8_bin;
Query OK, 1 row affected, 2 warnings (0.01 sec)

mysql> 
mysql> create user 'zabbix'@'localhost' identified by 'Lh@123456';
Query OK, 0 rows affected (0.02 sec)

mysql> ALTER USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Lh@123456';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

-- Zabbix 专用临时参数(必须开)
-- 作用:导入 zabbix 数据库结构时允许创建存储过程,不然导入 SQL 失败
mysql> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

1.5 导入 SQL 初始数据

下载 zabbix6.0 的源码包,将 sql 数据导入到 zabbix 库中:

[root@zabbix opt]# tar xf zabbix-6.0.46.tar.gz 
[root@zabbix opt]# cd zabbix-6.0.46/database/mysql/
[root@zabbix mysql]# 
# 需要将 schema.sql images.sql data.sql 导入 zabbix 库
[root@zabbix mysql]# ll
总用量 20916
-rw-rw-r-- 1 1000 1000 19240269 5月   5 15:01 data.sql
-rw-rw-r-- 1 1000 1000  1978341 5月   5 15:00 images.sql
-rw-rw-r-- 1 1000 1000      786 5月   5 15:00 Makefile.am
-rw-rw-r-- 1 1000 1000    23351 5月   5 15:01 Makefile.in
drwxrwxr-x 2 1000 1000       92 5月   5 15:01 option-patches
-rw-rw-r-- 1 1000 1000   166646 5月   5 15:01 schema.sql

按顺序依次导入 sql 表: 先建表(schema.sql),再导图标(images.sql),最后导基础数据(data.sql):

[root@zabbix mysql]# mysql -uzabbix -p'Lh@123456' zabbix < schema.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix mysql]# mysql -uzabbix -p'Lh@123456' zabbix < images.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix mysql]# mysql -uzabbix -p'Lh@123456' zabbix < data.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.

🐘 2. 安装部署 PHP 服务

2.1 安装源配置

安装 EPEL 源(必须,解决基础依赖):

yum install -y epel-release

安装 php Remi 仓库源(提供 PHP 7.4):

[root@zabbix opt]# yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@zabbix opt]# cd /etc/yum.repos.d/
[root@zabbix yum.repos.d]# 
[root@zabbix yum.repos.d]# ll
总用量 68
-rw-r--r--. 1 root root  193 3月  31 11:25 epel.repo
-rw-r--r--  1 root root 1358 9月   5 2021 epel.repo.rpmnew
-rw-r--r--  1 root root 1457 9月   5 2021 epel-testing.repo
-rw-r--r--. 1 root root   81 3月  31 13:45 local.repo
-rw-r--r--  1 root root  855 11月 28 2023 remi-modular.repo
-rw-r--r--  1 root root  456 11月 28 2023 remi-php54.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php70.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php71.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php72.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php73.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php74.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php80.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php81.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php82.repo
-rw-r--r--  1 root root 1314 11月 28 2023 remi-php83.repo
-rw-r--r--  1 root root 2605 11月 28 2023 remi.repo
-rw-r--r--  1 root root  750 11月 28 2023 remi-safe.repo

启动 remi-php74.repo 仓库:

[root@zabbix yum.repos.d]# sed -i '/^\[remi-php74\]/,/^enabled=/ s/enabled=0/enabled=1/' /etc/yum.repos.d/remi-php74.repo
[root@zabbix yum.repos.d]# grep -A5 '\[remi-php74\]' /etc/yum.repos.d/remi-php74.repo | grep enable
enabled=1
[root@zabbix opt]# yum clean all && yum makecache

2.2 安装 PHP 及相关组件

[root@zabbix opt]# yum --enablerepo=remi-php74 install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-bcmath php-json php-opcache php-ldap

这行命令会自动安装:

  • php → 主程序
  • php-fpm → Nginx 对接 PHP 必须
  • php-mysqlnd → MySQL 连接(Zabbix 连数据库必须)
  • php-gd → 图片处理(画图、报表)
  • php-mbstring → 多字节字符
  • php-xml → XML 处理
  • php-bcmath → 数学计算(Zabbix 必需要!)
  • php-json → JSON 支持
  • php-opcache → 加速
  • php-ldap → 企业登录(可选但推荐)
[root@zabbix mysql]# php -v
PHP 7.4.33 (cli) (built: Jun  5 2024 05:05:14) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies

2.3 设置 PHP 开机自启

[root@zabbix mysql]# systemctl enable --now php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[root@zabbix mysql]# systemctl enable --now php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
[root@zabbix mysql]# 
[root@zabbix mysql]# ss -tlnp | grep 9000
LISTEN     0      128    127.0.0.1:9000                     *:*                   users:(("php-fpm",pid=6346,fd=9),("php-fpm",pid=6345,fd=9),("php-fpm",pid=6344,fd=9),("php-fpm",pid=6343,fd=9),("php-fpm",pid=6342,fd=9),("php-fpm",pid=6341,fd=7))

🌐 3. 安装部署 Nginx 服务

3.1 配置 Nginx 官方 Yum 仓库并安装

[root@zabbix opt]# cat > /etc/yum.repos.d/nginx.repo <<EOF
> [nginx-stable]
> name=nginx stable repo
> baseurl=http://nginx.org/packages/centos/7/\$basearch/
> gpgcheck=1
> enabled=1
> gpgkey=https://nginx.org/keys/nginx_signing.key
> 
> [nginx-mainline]
> name=nginx mainline repo
> baseurl=http://nginx.org/packages/mainline/centos/7/\$basearch/
> gpgcheck=1
> enabled=0
> gpgkey=https://nginx.org/keys/nginx_signing.key
> EOF

[root@zabbix opt]# yum --showduplicates list nginx | grep 1.22
nginx.x86_64                  1:1.22.0-1.el7.ngx                    nginx-stable
nginx.x86_64                  1:1.22.1-1.el7.ngx                    nginx-stable
[root@zabbix opt]# yum install -y nginx-1.22.1
[root@zabbix opt]# nginx -v
nginx version: nginx/1.22.1

3.2 配置 Nginx 服务

[root@zabbix conf.d]# cp default.conf default.conf.bak
[root@zabbix conf.d]# cat default.conf
server {
	
	listen 80;
	server_name _;

	root /code;
	index index.php index.html;

	location ~ \.php$ {
	fastcgi_pass 127.0.0.1:9000;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME
	$document_root$fastcgi_script_name;
	include fastcgi_params;
}
}

[root@zabbix conf.d]# mkdir /code
[root@zabbix conf.d]# chown -R nginx:nginx /code
[root@zabbix conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

3.3 启动 Nginx 并开机自启

[root@zabbix conf.d]# systemctl enable --now nginx
[root@zabbix conf.d]# ss -tlnp | egrep '80|3306|9000'
LISTEN     0      128    127.0.0.1:9000                     *:*                   users:(("php-fpm",pid=6346,fd=9),("php-fpm",pid=6345,fd=9),("php-fpm",pid=6344,fd=9),("php-fpm",pid=6343,fd=9),("php-fpm",pid=6342,fd=9),("php-fpm",pid=6341,fd=7))
LISTEN     0      128          *:80                       *:*                   users:(("nginx",pid=6610,fd=6),("nginx",pid=6609,fd=6))
LISTEN     0      128       [::]:3306                  [::]:*                   users:(("mysqld",pid=5342,fd=24))
LISTEN     0      70        [::]:33060                 [::]:*                   users:(("mysqld",pid=5342,fd=21))

3.4 部署前端代码与权限配置

将源码中的前端页面代码文件拷贝到 /code 目录:

[root@zabbix zabbix-6.0.46]# cp -r ui/* /code/
[root@zabbix zabbix-6.0.46]# 
[root@zabbix zabbix-6.0.46]# ll /code/
[root@zabbix zabbix-6.0.46]# chown -R nginx:nginx /code

统一让 php-fpmnginx 使用 nginx 用户运行服务,默认 nginx 启动用 nginx 用户:

[root@zabbix zabbix-6.0.46]# cat /etc/nginx/nginx.conf | grep nginx | grep user
user  nginx;

[root@zabbix zabbix-6.0.46]# sed -i 's/^user = apache/user = nginx/' /etc/php-fpm.d/www.conf
[root@zabbix zabbix-6.0.46]# sed -i 's/^group = apache/group = nginx/' /etc/php-fpm.d/www.conf
[root@zabbix zabbix-6.0.46]# cat /etc/php-fpm.d/www.conf | grep nginx
user = nginx
group = nginx

3.5 调整 PHP 参数并重启服务

修改 php.ini 修改下面这三个参数,否则 zabbix 起不来,zabbix6.0 要求 php 最低配置要求,配置好时区:

[root@zabbix zabbix-6.0.46]# cat /etc/php.ini | egrep 'post_max_size|max_execution_time|max_input_time|Asia/ShangHai'
; max_input_time
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
date.timezone = Asia/ShangHai

重启 php-fpm 服务和 nginx:

[root@zabbix zabbix-6.0.46]# systemctl restart php-fpm.service 
[root@zabbix zabbix-6.0.46]# systemctl restart nginx.service

⚙️ 4. 编译 Zabbix 服务端

4.1 安装编译依赖

[root@zabbix zabbix-6.0.46]# yum -y install gcc gcc-c++ make pcre-devel pcre2-devel libxml2 libxml2-devel net-snmp-devel curl-devel libcurl-devel OpenIPMI-devel zlib-devel libevent libevent-devel mysql-devel

4.2 编译与安装

[root@zabbix zabbix-6.0.46]# ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
[root@zabbix zabbix-6.0.46]# make -j4
[root@zabbix zabbix-6.0.46]# make install

# 完成后检查
[root@zabbix zabbix-6.0.46]# zabbix_
zabbix_agentd  zabbix_get     zabbix_js      zabbix_sender  zabbix_server  

4.3 配置 Zabbix 数据库连接与用户

配置 zabbix 数据库连接信息:

[root@zabbix zabbix-6.0.46]# grep -n ^DB /usr/local/etc/zabbix_server.conf
99:DBName=zabbix
115:DBUser=zabbix
124:DBPassword=Lh@123456

创建 zabbix 启动虚拟用户 zabbix:

[root@zabbix zabbix-6.0.46]# groupadd zabbix
[root@zabbix zabbix-6.0.46]# 
[root@zabbix zabbix-6.0.46]# useradd -g zabbix -s /sbin/nologin -d /usr/local/zabbix -m zabbix

4.4 编写 Systemd 运行 Zabbix

创建并编写 Agent 服务文件:

[root@zabbix zabbix-6.0.46]# cat /etc/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Agent 6.0 (Compiled)
After=network.target

[Service]
Type=forking
User=zabbix
Group=zabbix
ExecStart=/usr/local/sbin/zabbix_agentd -c /usr/local/etc/zabbix_agentd.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

创建并编写 Server 服务文件:

[root@zabbix zabbix-6.0.46]# cat /etc/systemd/system/zabbix-server.service 
[Unit]
Description=Zabbix Server 6.0 (Compiled)
After=mysqld.service network.target

[Service]
Type=forking
User=zabbix
Group=zabbix
ExecStart=/usr/local/sbin/zabbix_server -c /usr/local/etc/zabbix_server.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

重新加载服务并启动:

[root@zabbix zabbix-6.0.46]# systemctl daemon-reload
[root@zabbix zabbix-6.0.46]# systemctl enable --now zabbix-server.service zabbix-agent.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /etc/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /etc/systemd/system/zabbix-agent.service.

# 检查端口监听情况
[root@zabbix zabbix-6.0.46]# netstat -tnulp | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      18487/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      18487/zabbix_agentd 
[root@zabbix zabbix-6.0.46]# 
[root@zabbix zabbix-6.0.46]# netstat -tnulp | grep 10051
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      18394/zabbix_server 
tcp6       0      0 :::10051                :::*                    LISTEN      18394/zabbix_server 

🖥️ 5. 界面安装部署

至此,所有服务端与依赖环境的安装已全部完成。
浏览器打开服务器的 IP 地址,进入 Web 前端配置页面,跟随引导验证依赖项状态并输入数据库连接信息(密码为:Lh@123456),即可完成最终部署。默认初始登录账号:Admin / zabbix

2fd95317f6591996e4d3c0b56fc2db8e


bc1c838ce147cc639a31bab57e7aa0c7


73c0ed7f57266fa1c2d8f4a1dc2d0a82


cc1e5624ec03e892aeb555d1f9009cb0


39d830681d76ad0c91ada8b655c50233


6b61eedf880f87d6508fac21f22492d4


a4700e1e257ea967d159d96d2034da6d


052cb1d2a7485b119005e84160593725

🖥️ 6.更换zabbix 前端代码目录里面的字体,设置中文语言后必须要配置

在windows上面找一个正常使用的字体,比如说微软雅黑字体,上传到代码目录fonts当中,然后先备份原有字体,再将上传的字体变更成zabbix默认识别的字体

[root@zabbix fonts]# ll
总用量 19984
-rw-r--r-- 1 nginx nginx   756072 5月  14 16:04 DejaVuSans.ttf.bak
-rw-r--r-- 1 root  root  19704352 5月  15 16:02 msyh.ttc
[root@zabbix fonts]# 
[root@zabbix fonts]# mv msyh.ttc DejaVuSans.ttf
[root@zabbix fonts]# 
[root@zabbix fonts]# ll
总用量 19984
-rw-r--r-- 1 root  root  19704352 5月  15 16:02 DejaVuSans.ttf
-rw-r--r-- 1 nginx nginx   756072 5月  14 16:04 DejaVuSans.ttf.bak
[root@zabbix fonts]# chown nginx:nginx DejaVuSans.ttf
[root@zabbix fonts]# 
[root@zabbix fonts]# ll
总用量 19984
-rw-r--r-- 1 nginx nginx 19704352 5月  15 16:02 DejaVuSans.ttf
-rw-r--r-- 1 nginx nginx   756072 5月  14 16:04 DejaVuSans.ttf.bak

由于字体替换是即时生效的(因为 Zabbix 前端是用 PHP 和 GD 库实时渲染图片的)。
回到你的 Zabbix Web 页面,在键盘上按下 Ctrl + F5 强制刷新网页。
此时,那些方块 [[]] 就会变成清晰明了的中文 [最新]、[最小]、[平均]、[最大] 了!

image

posted on 2026-05-14 17:45  LeeHang  阅读(14)  评论(0)    收藏  举报