服务器版本:CentOS Linux release 7.6.1810 (Core)

zabbix版本:5.0.19

依赖软件包

libzip-1.3.2.tar.gz
php-7.4.27.tar.gz
nginx-1.20.2.tar.gz
mysql5.7

一、准备工作

1.上传软件包到服务器/opt路径(路径可自定义) 2.关闭防火墙,关闭selinux

临时并永久关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
临时并永久关闭selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

二、安装nginx

安装所需依赖包
yum -y install pcre pcre-devel zlib openssl openssl-devel

解压源码包
cd /opt
tar -zxvf nginx-1.20.2.tar.gz

新建nginx程序用户
useradd -s /sbin/nologin -M nginx

configure配置,加上所需模块,安装目录在/usr/local/nginx
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx  --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre

编译安装
make && make install

把nginx命令制作软链接方便使用
ln -s /usr/local/nginx/sbin/* /usr/local/bin/

三、yum安装mysql

这里安装mysql5.7版本,先下载安装mysql5.7的yum源
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm

然后yum安装mysql
yum -y install mysql-server mysql mysql-devel --nogpgcheck

启动mysql
systemctl start mysqld
systemctl enable mysqld

mysql5.7会预设root账号MiMa,把初始MiMa找出来
[root@k8smaster home]# grep password /var/log/mysqld.log
2022-02-10T04:38:57.712898Z 1 [Note] A temporary password is generated for root@localhost: /M:p6wKyhwqM

/M:p6wKyhwqM 这一坨就是初始MiMa
然后进入mysql修改MiMa
[root@zabbix-server ~]# mysql -uroot -p
Enter password:

mysql> set global validate_password_policy=0;      //修改默认MiMa策略否则会检查MiMa长度和复杂度,设定MiMa策略为只检查MiMa长度为8位
Query OK, 0 rows affected (0.00 sec)

mysql> set password = password('zabbix123');       //重设MiMa
Query OK, 0 rows affected, 1 warning (0.00 sec)

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

mysql> exit
Bye


四、安装php

php由于使用的是比较新的版本,所以安装方式跟之前的版本有不少差别!首先安装php7.4所需依赖包
yum -y install libxml2 libxml2-devel  curl curl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel openldap openldap-devel sqlite-devel oniguruma-devel

yum install -y epel-release
yum install -y oniguruma oniguruma-devel
这里还需要手工编译安装libzip依赖包否则configure的时候会报以下错误:意思是 libzip的版本必须大于0.11 且 不能等于1.3.1或者1.7.0
configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

No package 'libzip' found
No package 'libzip' found
No package 'libzip' found

安装libzip-1.3.2解决
wget https://libzip.org/download/libzip-1.3.2.tar.gz
tar -zxvf libzip-1.3.2.tar.gz
cd libzip-1.3.2
./configure && make && make install
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
解压php的tar包,添加php用户和组
cd /opt
tar -zxvf php-7.4.27.tar.gz
cd php-7.4.27/
useradd php -s /sbin/nologin


./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-mhash --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib --enable-bcmath  --enable-gd --with-jpeg --with-freetype  --enable-mbstring --enable-ftp --enable-sockets   --with-gettext --enable-session --with-curl   --enable-fpm --with-fpm-user=php --with-fpm-group=php   --enable-pdo -enable-tokenizer --with-zip

出现如下图,说明成功

image.png

然后在执行安装,勿忘!!!
make && make install      这个步骤执行时间很长,请耐心等待
出现如下图,说明成功

image.png


五、安装php的ldap扩展模块

安装依赖
yum install autoconf

[root@k8smaster php-7.4.27]# find / -name phpize
/usr/local/php7/bin/phpize		//找出这个可执行文件
/opt/php-7.4.27/scripts/phpize
[root@k8smaster php-7.4.27]# cd ext/ldap/
[root@k8smaster ldap]# /usr/local/php7/bin/phpize		//到ldap的目录下执行该命令
Configuring for:
PHP Api Version:         20190902
Zend Module Api No:      20190902
Zend Extension Api No:   320190902
[root@k8smaster ldap]# cp -frp /usr/lib64/libldap* /usr/lib/		//拷贝库文件,软链接也行
[root@k8smaster ldap]# ./configure --with-php-config=/usr/local/php7/bin/php-config //配置
[root@k8smaster ldap]# make && make install
Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/
//记住这个路径一会需要写在配置文件里
[root@k8smaster ldap]# 


解压目录下的php.ini-production就是配置文件,但是需要移动和改名才能识别,放到/usr/local/php7/etc/php.ini

[root@k8smaster ldap]# cd -
/opt/php-7.4.27
[root@k8smaster php-7.4.27]# cp php.ini-production /usr/local/php7/etc/php.ini
[root@k8smaster php-7.4.27]# vim /usr/local/php7/etc/php.ini
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/"  (759行)
extension=ldap.so  //增加一行添加ldap模块 (可以放在760行)

配置其他参数
max_execution_time = 300    //每个脚本的最大执行时间,单位秒 (338行)
post_max_size = 16M	    //PHP将接受的POST数据的最大大小 ,0为无限制(694行)
max_input_time = 300        //每个脚本分析请求数据的最长时间 ,-1为无限制(398行)
date.timezone = Asia/Shanghai   //时区

到安装目录下把两个配置文件改名(必须)
[root@k8smaster etc]# cd /usr/local/php7/etc/
[root@k8smaster etc]# cp php-fpm.conf.default php-fpm.conf
[root@k8smaster etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf

给php命令设置软链接方便使用
[root@k8smaster etc]# ln -s /usr/local/php7/bin/* /usr/local/bin
[root@k8smaster etc]# ln -s /usr/local/php7/sbin/* /usr/local/sbin

顺便查看下php的版本
[root@k8smaster etc]# php -v
PHP 7.4.27 (cli) (built: Feb  9 2022 21:04:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

启动php,php-fpm是php的管理工具,默认9000端口
[root@k8smaster etc]# php-fpm
[root@k8smaster etc]# netstat -antp | grep php-fpm
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      55916/php-fpm: mast

查看是否加载了ldap模块
[root@k8smaster etc]# php -m | grep ldap
ldap

配置nginx可以支持php网页
vim /usr/local/nginx/conf/nginx.conf

location / {
            root   html;
            index  index.php index.html index.htm;
        }

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

启动nginx
[root@k8smaster etc]# nginx
[root@k8smaster etc]# netstat -antp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      56077/nginx: master

在nginx网页目录下编写一个简单的php网页,验证访问nginx的php网页成功
[root@k8smaster etc]# vim /usr/local/nginx/html/index.php
<?php
 phpinfo();
?>

image.png

最后可以修改下内容测试一下php与mysql的连接
[root@k8smaster etc]# vim /usr/local/nginx/html/index.php
<?php
    $mysqli = new mysqli("localhost", "root", "zabbix123");
    if(!$mysqli)  {
        echo"database error";
    }else{
        echo"php env successful";
    }
    $mysqli->close();
?>
验证连接mysql也成功

image.png


五、安装zabbix5.0

cd /opt
解压源码包
tar -zxvf zabbix-5.0.19.tar.gz
为zabbix新建用户和组
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
为zabbix家目录修改权限
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
好了,现在来设置数据库了
字符集utf8和utf8_bin排序规则是Zabbix Server/Proxy与MySQL数据库一起正常工作所必需的。
还有就是新建一个授权账户叫做zabbix,MiMa是zabbix123,用他专门来访问数据库的,授权他只能从本地访问zabbix数据库
[root@k8smaster opt]# mysql -uroot -p
Enter password:

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

mysql> create user 'zabbix'@'localhost' identified by 'zabbix123';
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> quit;
Bye
SQL 脚本 用于创建数据库 schema 和插入 dataset。Zabbix proxy 数据库只需要数据库 schema,而 Zabbix server 数据库在建立数据库 schema 后,还需要 dataset。
如果要从源代码安装Zabbix,请继续将数据导入数据库。对于Zabbix代理数据库,应仅导入schema.sql( 不是images.sql或data.sql)
我们这里没有单独说要做zabbix代理服务器,所以3个sql都导入数据库
[root@@k8smaster opt]# cd zabbix-5.0.19/
[root@@k8smaster zabbix-5.0.13]# cd database/mysql

[root@@k8smaster mysql]# mysql -uzabbix -pzabbix123 zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

[root@@k8smaster mysql]# mysql -uzabbix -pzabbix123 zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

[root@@k8smaster mysql]# mysql -uzabbix -pzabbix123 zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
接下来就可以configure配置了,带上所需参数,这些几乎都是必需的
[root@k8smaster mysql]# cd -
/opt/zabbix-5.0.19
[root@k8smaster zabbix-5.0.19]# ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

但是按照官网的configure会报错,缺少net-snmp-devel和libevent-devel依赖包,yum装一下就好
yum -y install  net-snmp-devel
yum -y install  libevent-devel
整个过程没报错应该是以下这样的,中间省略一些不重要的信息,这里告诉你相关配置文件路径以及启用了哪些模块等等
Configuration:

  
    Configuration file:    /usr/local/etc/zabbix_server.conf
    External scripts:      /usr/local/share/zabbix/externalscripts
    Alert scripts:         /usr/local/share/zabbix/alertscripts
    Modules:               /usr/local/lib/modules

  Enable proxy:          no

  Enable agent:          yes
  Agent details:
    Configuration file:    /usr/local/etc/zabbix_agentd.conf
    Modules:               /usr/local/lib/modules

  Enable Java gateway:   no

  LDAP support:          no
  IPv6 support:          yes

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
接着直接安装就好,你没看错直接make install!
[root@k8smaster zabbix-5.0.19]# make install
安装完成之后需要对服务器端配置文件进行修改,服务器端配置文件是zabbix_server.conf
vim /usr/local/etc/zabbix_server.conf
DBPassword=zabbix123    //添加mysql数据库zabbix用户的登陆MiMa(118行)
DBSocket=/var/lib/mysql/mysql.sock   //指定mysql的socket文件路径(125行)
启动zabbix服务端,zabbix_agentd是zabbix客户端需要运行的程序,这服务器上启动是因为可以让他自己监控自己
[root@k8smaster zabbix-5.0.19]# zabbix_server
[root@k8smaster zabbix-5.0.19]# zabbix_agentd
安装前端web页面
Zabbix 前端是 PHP 编写的,所以必须运行在支持 PHP 的 Web 服务器上。只需要从ui路径下复制 PHP 文件到 Web 服务器的 HTML 文档目录,即可完成安装,我把整个ui目录都拷贝过去命名为zabbix

[root@k8smaster zabbix-5.0.19]# cp -r ui /usr/local/nginx/html/zabbix/

检查下端口是否正常,服务器端监听10051,客户端监听10050
[root@k8smaster zabbix-5.0.19]# netstat -antp | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      71293/zabbix_agentd 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      71226/zabbix_server 
tcp6       0      0 :::10050                :::*                    LISTEN      71293/zabbix_agentd 
tcp6       0      0 :::10051                :::*                    LISTEN      71226/zabbix_server 
[root@k8smaster zabbix-5.0.19]# 

六、初始化配置

验证访问http://172.10.6.56/zabbix/就出现zabbix主页了,但是还没有完全装好,需要做一些设置,直接下一步

image.png image.png image.png image.png image.png image.png

[root@k8smaster zabbix-5.0.13]# cd /opt
[root@k8smaster opt]#
[root@k8smaster opt]# cp zabbix.conf.php /usr/local/nginx/html/zabbix/conf/zabbix.conf.php

image.png image.png image.png

至此安装成功

七,修改页面语言显示为中文

image.png image.png image.png image.png image.png

参考

https://blog.csdn.net/shengjie87/article/details/118497793
https://blog.csdn.net/sqlquan/article/details/98048492
https://cyhour.com/1627/