首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >长篇好文 | 全离线部署Zabbix7.0+MySQL8.0+PHP8.0

长篇好文 | 全离线部署Zabbix7.0+MySQL8.0+PHP8.0

作者头像
Zabbix
发布于 2025-02-27 04:31:15
发布于 2025-02-27 04:31:15
63304
代码可运行
举报
文章被收录于专栏:Zabbix中国官方Zabbix中国官方
运行总次数:4
代码可运行

作者简介

  • Zabbix资深玩家,SRE高级运维架构师,精通服务组件监控、模板制作及告警治理;
  • 擅长领域:Zabbix API定制化开发,对接企业蓝鲸,JMS保垒机等运维资产管理;
  • Zabbix 6.0 + 7.0 官方中文手册译者。

部署背景

银行作为金融行业的重要组成部分,对信息系统的稳定性和安全性有着极高的要求。为了确保银行机房内的系统能够得到有效的监控,笔者选择部署Zabbix 7.0 LTS作为主力军。然而,由于银行机房的特殊安全策略,不允许直连互联网,这对安装和部署带来了一定的挑战。因此,笔者决定采用全离线部署和编译的方式来完成Zabbix 7.0 LTS的安装,具体步骤详见下文。

一、环境约定

1.1 系统版本

  • 操作系统:Red Hat Enterprise Linux 8.8 (Ootpa),高度的稳定企业级操作系统,能够为Zabbix的运行提供可靠的基础。
  • Zabbix版本:Zabbix 7.0最新版LTS,实时监控服务器、网络设备、应用程序等,为银行系统提供全面的监控服务。
  • MySQL版本:MySQL 8.0,关系型数据库管理系统,为Zabbix提供数据存储支持。
  • Web服务器:PHP 8.0,Zabbix的Web界面主程序语言,提供友好的用户交互体验
  • 前端代理:NGINX,Web服务器和反向代理服务器,能够有效地处理并发请求,提高系统的响应速度。

1.2 硬件信息

  • CPU:至少2个核心,以保证系统能够快速处理监控数据和执行相关任务。
  • 内存:至少8GB,确保系统在运行Zabbix及相关服务时能够有足够的内存资源,避免出现内存不足的情况。
  • 存储:至少20GB可用空间,用于存储Zabbix的安装文件、数据库文件、日志文件等,监控数据存储另算。

二、RHEL8安装

在开始部署之前,需要对RHEL8系统进行一系列的初始化配置,以确保系统处于一个干净、稳定的状态。

2.1 系统初始化

定义主机名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# hostnamectl set-hostname zabbix-server && bash

配置安全级别

SELinux是一种增强系统安全性的机制,但在某些情况下可能会导致一些应用程序的运行出现问题,因此笔者将其设置为宽松模式。

代码语言:javascript
代码运行次数:1
运行
AI代码解释
复制
# sestatus |egrep 'SELinux status|Current mode'
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# setenforce 0
# sestatus |egrep 'SELinux status|Current mode'

关闭防火墙

虽然银行机房内部有其他安全防护措施,但为了避免防火墙对Zabbix部署过程中的干扰,笔者暂时将其关闭。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl stop firewalld
# systemctl disable firewalld
# systemctl status firewalld

设置时间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# rm -f /etc/localtime
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# hwclock -w
# timedatectl
# date

2.2 搭建本地源

由于银行机房无法直接连接互联网,笔者需要在RHEL8上搭建本地源,以便能够在离线环境下安装所需的软件包。因此需下载RHEL8.8的ISO光盘镜像,官网下载地址

创建并挂载ISO目录

代码语言:javascript
代码运行次数:3
运行
AI代码解释
复制
# ll /mnt/dvd
# mkdir -p /mnt/dvd
# mount -o loop /root/rhel-8.8-x86_64-dvd.iso /mnt/dvd

备份repos.d目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd /etc/yum.repos.d/
# mkdir bak
# mv * bak

创建本地YUM

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tee > /etc/yum.repos.d/local.repo << 'EOF'
[LocalRepo_BaseOS]

name=LocalRepository_BaseOS
baseurl=file:///mnt/dvd/BaseOS
enabled=1
gpgcheck=0

[LocalRepo_AppStream]
name=LocalRepository_AppStream
baseurl=file:///mnt/dvd/AppStream
enabled=1
gpgcheck=0
EOF

测试本地YUM源

上述配置文件保存后,执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum clean all
# yum makecache

可以再 yum install lrzsz 之类的软件包安装一下试试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum -y install lrzsz

2.3 准备离线资源

为了顺利完成Zabbix的全离线部署,笔者需要提前准备好所有所需的离线资源。

  • Zabbix:从Zabbix官方网站下载Zabbix 7.0最新版LTS的安装包,以及其所需的依赖库和插件。
  • MySQL:下载MySQL 8安装包,确保其版本与笔者的部署需求相匹配。
  • NGINX:下载NGINX的安装包,确保其版本与笔者的部署需求相匹配。
  • 下载PHP:下载PHP 8的安装包,Zabbix Web运行基本环境。

下载安装包,之后拷贝到离线机器上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.3.tar.gz
# wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.32-linux-glibc2.12-x86_64.tar
# wget https://nginx.org/download/nginx-1.24.0.tar.gz
# wget https://www.php.net/distributions/php-8.3.3.tar.gz

三、MySQL8安装

在安装MySQL 8之前,笔者需要先卸载系统中可能存在的原有MySQL版本,以避免版本冲突和其他潜在问题。

3.1 卸载原有版本

第一步:查看mysql安装版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rpm -qa|grep -i mysql

第二步:卸载Mysql

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rpm -ev --nodeps 【上一步查询到的mysql版本名称】

最后删除关于mysql相关的文件夹:查找根目录下所有者是mysql和有mysql名称的文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
find / -user mysql
find / -name mysql

把查找出的目录文件删除:rm -rf 路径

3.2 安装当前版本

目录计划:

  • 安装目录:/usr/local/mysql
  • data 目录:/data/mysql/data/
  • 日志位置:/data/mysql/mysql_error.err
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# xz -d tar xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar
# tar xvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
# mv mysql-8.0.32-linux-glibc2.12-x86_64 mysql
# mv mysql /usr/local/

创建mysql用户和用户组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# groupadd mysql
# useradd -r -g mysql -s /bin/false mysql

将安装目录所有者及所属组改为mysql ,并创建相关文件夹

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd /usr/local/
# chown -R mysql:mysql /usr/local/mysql/
# mkdir -p /data/mysql/{data,backup,scripts,binlog}
# ll /data/mysql/
# chown -R mysql:mysql /data/mysql/

添加环境变量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# echo "export PATH=$PATH:/usr/local/mysql/bin"  >>  /etc/profile
# source /etc/profile

修改my.cnf配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tee >  /etc/my.cnf << "EOF"
[mysqld]
user=mysql
port=3306
#basedir=/data/mysql
datadir = /data/mysql/data/
default_authentication_plugin=mysql_native_password
log_error=/data/mysql/mysql_error.err
max_connections=10000
max_connect_errors=10
character-set-server=utf8mb4
default-storage-engine=INNODB
default_authentication_plugin=mysql_native_password
[mysql]
default-character-set=utf8mb4
EOF

初始化mysql数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mysqld --initialize --user=mysql

获取mysql初始密码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cat /data/mysql/mysql_error.err
2024-09-14T08:26:30.427181Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead.
2024-09-14T08:26:30.427271Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.32) initializing of server in progress as process 30827
2024-09-14T08:26:30.450042Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-09-14T08:26:31.128008Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-09-14T08:26:32.685398Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: h62_Ruq-hxpo

将mysql加入到服务,并设置开机自启,启动mysql

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chkconfig mysqld on
# systemctl start mysqld 

3.3 如有防火墙

查看防火墙开放端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# firewall-cmd --list-all

在防火墙中将3306端口开放

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# firewall-cmd --zone=public --add-port=3306/tcp --permanent 
# firewall-cmd --reload

3.4 验证连通性

遇到报错

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mysql -uroot -p
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

解决方案

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

再次连接SQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 修改初始密码
mysql> alter user root@localhost identified by '111111';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

重启服务且测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl enable mysql
# systemctl restart mysql

在远程服务器或Navicat上测试连接(可选)

四、Zabbix安装

4.1 安装依赖

在安装Zabbix之前,笔者需要先安装一些基础依赖库,以确保Zabbix能够正常编译和运行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum -y install net-snmp net-snmp-devel pcre*

4.2 编译安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# groupadd zabbix
# useradd -g zabbix zabbix
# tar -zxf zabbix-7.0.3.tar.gz
# cd zabbix-7.0.3/
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc --enable-ipv6 --enable-java --with-openssl  --with-iconv --with-iconv-include --with-iconv-lib --with-libpcre --with-libevent --with-zlib --with-zlib-include --with-zlib-lib --with-libpthread

检验成功

编译安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# make install
make[2]: Nothing to be done for 'install-exec-am'.
 /usr/bin/mkdir -p '/usr/local/zabbix/share/man/man1'
 /usr/bin/install -c -m 644 'zabbix_get.man' '/usr/local/zabbix/share/man/man1/zabbix_get.1'
 /usr/bin/install -c -m 644 'zabbix_sender.man' '/usr/local/zabbix/share/man/man1/zabbix_sender.1'
 /usr/bin/mkdir -p '/usr/local/zabbix/share/man/man8'
 /usr/bin/install -c -m 644 'zabbix_agentd.man' '/usr/local/zabbix/share/man/man8/zabbix_agentd.8'
 /usr/bin/install -c -m 644 'zabbix_server.man' '/usr/local/zabbix/share/man/man8/zabbix_server.8'
make[2]: Leaving directory '/root/zabbix-7.0.3/man'
make[1]: Leaving directory '/root/zabbix-7.0.3/man'
Making install in misc
make[1]: Entering directory '/root/zabbix-7.0.3/misc'
make[2]: Entering directory '/root/zabbix-7.0.3/misc'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/root/zabbix-7.0.3/misc'
make[1]: Leaving directory '/root/zabbix-7.0.3/misc'
make[1]: Entering directory '/root/zabbix-7.0.3'
make[2]: Entering directory '/root/zabbix-7.0.3'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/root/zabbix-7.0.3'
make[1]: Leaving directory '/root/zabbix-7.0.3'

确认Zabbix是否成功安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# ln -s /usr/local/mysql/lib/libmysqlclient.so.21.2.32 /usr/lib64/libmysqlclient.so.21

# /usr/local/zabbix/sbin/zabbix_server -V
zabbix_server (Zabbix) 7.0.3
Revision d93ce022627 19 August 2024, compilation time: Sep 26 2024 16:14:19

Copyright (C) 2024 Zabbix SIA
License AGPLv3: GNU Affero General Public License version 3 <https://www.gnu.org/licenses/>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.1.1k  FIPS 25 Mar 2021
Running with OpenSSL 1.1.1k  FIPS 25 Mar 2021

4.3 导入库表

初始化Zabbix库表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mysql -uroot -p
password
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '111111';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> create user zabbix@127.0.0.1 identified by '111111';
mysql> grant all privileges on zabbix.* to zabbix@127.0.0.1;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

导入SQL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd zabbix-7.0.3/database/mysql
# mysql -u root -p111111 zabbix < schema.sql
# mysql -u root -p111111 zabbix < images.sql
# mysql -u root -p111111 zabbix < data.sql

4.4 配置服务

注意:不进行一下步骤,直接配置service文件即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd zabbix-7.0.3/
# cp misc/init.d/fedora/core/zabbix_* /etc/init.d/
# ll -d /etc/init.d/zabbix_*
# chmod +x /etc/init.d/zabbix_*
# chown -R zabbix: /usr/local/zabbix/

修改启动文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vi /etc/init.d/zabbix_server
将
BASEDIR=/usr/local
修改为
BASEDIR=/usr/local/zabbix

# vi /etc/init.d/zabbix_agentd
将
BASEDIR=/usr/local
修改为
BASEDIR=/usr/local/zabbix

修改配置文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# grep -Ev "^#|^$" /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/run/zabbix_server.pid
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=111111
DBPort=3306
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
StatsAllowedIP=127.0.0.1
EnableGlobalScripts=0

配置随机启动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# chkconfig --add zabbix_server
# chkconfig  zabbix_server on
# service zabbix_server start

# chkconfig --add zabbix_agentd
# chkconfig  zabbix_agentd on
# service start zabbix_agentd  start

五、Nginx安装

笔者使用离线资源安装NGINX,作为Zabbix的Web服务器。

5.1 安装部署

解压离线包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tar -zxvf nginx-1.24.0.tar.gz 
# cd nginx-1.24.0/
./configure --user=zabbix --group=zabbix --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre
# make -j 8 && make install
# /usr/local/nginx/sbin/nginx -V

测试版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.24.0
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-18) (GCC) 
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --user=zabbix --group=zabbix --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre

5.2 加载配置

nginx服务配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tee > /usr/local/nginx/conf/nginx.conf << "EOF"
 
user zabbix zabbix;
worker_processes auto;
error_log  logs/error.log  crit;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
 
events {
    worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  logs/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
 
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   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;
        }
    }
}
EOF

5.3 配置服务

nginx服务services启动文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tee > /usr/lib/systemd/system/nginx.service << "EOF"

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=-/usr/local/nginx/sbin/nginx -s reload
ExecStop=-/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

启动服务,并设置其为开机自启。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl daeon-reload
# systemctl start nginx
# systemctl status nginx
# systemctl enable nginx

测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# curl localhost -I
HTTP/1.1 200 OK
Server: nginx/1.24.0
Date: Sat, 14 Sep 2024 09:34:36 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Sat, 14 Sep 2024 09:22:49 GMT
Connection: keep-alive
ETag: "66e555e9-267"
Accept-Ranges: bytes

六、PHP8安装

6.1 安装依赖

安装依赖环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install -y unzip gcc gcc-c++ perl readline readline-devel openssl openssl-devel zlib zlib-devel ncurses-devel perl-ExtUtils-Embed libxslt* python3-devel

安装依赖环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum -y install  libevent-devel unixODBC unixODBC-devel java-1.8.0-openjdk-devel openssl-devel

libssh2 libssh2-devel OpenIPMI-devel 这三个包有问题

安装cmake

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install cmake -y
# cmake --version

cmake版本需大于3.4版本,如yum方式安装cmake版本低,则需要用手动编译方式进行替换

6.2 编译安装

执行配置脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tar xf php-8.3.3.tar.gz 
# cd php-8.3.3/

第一次编译安装PHP 8.0(试错)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# ./configure --prefix=/usr/local/php --sysconfdir=/etc/php --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl --with-gettext --with-freetype

执行配置脚本,报错系统无法找到满足要求的 SQLite3 版本(至少为 3.7.7)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking whether to enable the SQLite3 extension... yes
checking for sqlite3 >= 3.7.7... no
configure: error: Package requirements (sqlite3 >= 3.7.7) were not met:

No package 'sqlite3' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

安装 sqlite开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum -y install sqlite-devel

再次执行配置脚本,报错系统检测到需要 BZip2支持,但在默认路径下没有找到 BZip2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking whether to enable bc style precision math functions... yes
checking for BZip2 support... yes
checking for BZip2 in default path... not found
configure: error: Please reinstall the BZip2 distribution

安装 zip2开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zabbix02 php-8.3.8]# yum -y install bzip2-devel

再次执行配置脚本,报错系统需要找到 libffi 库且其版本需要大于或等于 3.0.11,但是并没有找到满足条件的库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking whether to enable EXIF (metadata from images) support... yes
checking for FFI support... yes
checking for libffi >= 3.0.11... no
configure: error: Package requirements (libffi >= 3.0.11) were not met:

No package 'libffi' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

安装 libffi开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zabbix02 php-8.3.8]# yum -y install libffi-devel

再次执行配置脚本,报错系统没有找到 libpng

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking for zlib... yes
checking for libpng... no
configure: error: Package requirements (libpng) were not met:

No package 'libpng' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

安装 libpng开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zabbix02 php-8.3.8]# yum -y install libpng-devel

再次执行配置脚本,报错系统没有找到 libwebp 库,或者找到的版本低于所需的 0.2.0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking for libpng... yes
checking for libwebp >= 0.2.0... no
configure: error: Package requirements (libwebp >= 0.2.0) were not met:

No package 'libwebp' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

安装 libwebp 开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zabbix02 php-8.3.8]# yum -y install libwebp-devel

再次执行配置脚本,报错系统没有找到 libjpeg

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking for libwebp >= 0.2.0... yes
checking for libjpeg... no
configure: error: Package requirements (libjpeg) were not met:

No package 'libjpeg' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

安装 libjpeg开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zabbix02 php-8.3.8]# yum -y install libjpeg-devel

再次执行配置脚本,报错系统没有找到 oniguruma

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking whether to enable multibyte regex support (requires oniguruma)... yes
checking for oniguruma... no
configure: error: Package requirements (oniguruma) were not met:

No package 'oniguruma' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

安装 oniguruma开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install autoconf automake libtool -y
# wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz 
# tar xf oniguruma-6.9.4.tar.gz 
# cd oniguruma-6.9.4/
# ./autogen.sh && ./configure --prefix=/usr
# make && make install

再次执行配置脚本,报错系统没有找到符合要求的 libzip 库版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
checking for zip archive read/write support... yes
checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0... no
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

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

安装 libzip开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zabbix02 php-8.3.8]# wget ftp://ftp.icm.edu.pl/packages/linux-pbone/rpms.remirepo.net/enterprise/7/remi/x86_64/libzip5-devel-1.10.0-1.el7.remi.x86_64.rpm
[root@zabbix02 php-8.3.8]# wget ftp://ftp.icm.edu.pl/packages/linux-pbone/rpms.remirepo.net/enterprise/7/remi/x86_64/libzip5-1.10.0-1.el7.remi.x86_64.rpm
[root@zabbix02 php-8.3.8]# yum -y install ./libzip5-*

安装libcurl开发库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
configure: error: Package requirements (libcurl >= 7.29.0) were not met:

Package 'libcurl', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables CURL_CFLAGS
and CURL_LIBS to avoid the need to call p
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# yum install -y libcurl-devel

解决PHP gd FreeType不支持

下载解压freetype源码包,执行配置脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# curl -LO https://jaist.dl.sourceforge.net/project/freetype/freetype2/2.13.2/freetype-2.13.2.tar.xz
# tar xf freetype-2.13.2.tar.xz
# cd freetype-2.13.2
# ./configure

执行成功,这里会有一个WARNING,可以不予理会

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Library configuration:
  external zlib: yes (pkg-config)
  bzip2:         yes (autoconf test)
  libpng:        yes (pkg-config)
  harfbuzz:      no
  brotli:        no
  pthread:       yes

configure: WARNING:
  `make refdoc' will fail since pip package `docwriter' is not installed.
  To install, run `pip install docwriter', or to use a Python
  virtual environment, run `make refdoc-venv' (requires pip package
  `virtualenv').  These operations require Python >= 3.5.

编译安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@zabbix02 freetype-2.13.2]# make && make install

安装成功

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/usr/bin/install -c -m 644 /root/freetype-2.13.2/include/ft2build.h                  \
          /usr/local/include/freetype2/ft2build.h
/usr/bin/install -c -m 644 ./builds/unix/ftconfig.h                        \
          /usr/local/include/freetype2/freetype/config/ftconfig.h
/usr/bin/install -c -m 644 /root/freetype-2.13.2/objs/ftmodule.h                          \
          /usr/local/include/freetype2/freetype/config/ftmodule.h
/usr/bin/install -c -m 644 ./builds/unix/ftoption.h                        \
          /usr/local/include/freetype2/freetype/config/ftoption.h
/usr/bin/install -c -m 644 ./builds/unix/freetype2.m4          \
          /usr/local/share/aclocal/freetype2.m4
/usr/bin/install -c -m 644 ./builds/unix/freetype2.pc             \
          /usr/local/lib/pkgconfig/freetype2.pc

重新编译PHP

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd php-8.3.8/
# make clean
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
# ./configure --prefix=/usr/local/php --sysconfdir=/etc/php --with-openssl --with-zlib --with-bz2 --with-curl --enable-bcmath --enable-gd --with-webp --with-jpeg --with-mhash --enable-mbstring --with-imap-ssl --with-mysqli --enable-exif --with-ffi --with-zip --enable-sockets --with-pcre-jit --enable-fpm --with-pdo-mysql --enable-pcntl --with-gettext --with-freetype

完成最终安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# make -j 4 && make install
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20230831/
Installing PHP CLI binary:        /usr/local/php/bin/
Installing PHP CLI man page:      /usr/local/php/php/man/man1/
Installing PHP FPM binary:        /usr/local/php/sbin/
Installing PHP FPM defconfig:     /etc/php/
Installing PHP FPM man page:      /usr/local/php/php/man/man8/
Installing PHP FPM status page:   /usr/local/php/php/php/fpm/
Installing phpdbg binary:         /usr/local/php/bin/
Installing phpdbg man page:       /usr/local/php/php/man/man1/
Installing PHP CGI binary:        /usr/local/php/bin/
Installing PHP CGI man page:      /usr/local/php/php/man/man1/
Installing build environment:     /usr/local/php/lib/php/build/
Installing header files:          /usr/local/php/include/php/
Installing helper programs:       /usr/local/php/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PDO headers:           /usr/local/php/include/php/ext/pdo/

准备PHP配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cd php-8.3.3/
# mv /etc/php/php-fpm.d/www.conf.default /etc/php/php-fpm.d/www.conf
# mv /etc/php/php-fpm.conf.default /etc/php/php-fpm.conf
# ln -s /usr/local/php/bin/* /usr/bin/
# cp ./sapi/fpm/php-fpm.service /lib/systemd/system/
# cp php.ini-development /usr/local/php/lib/php.ini
# ln -s /usr/local/php/lib/php.ini /etc/php.ini

6.3 配置服务

准备nginx配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cat /usr/local/nginx/conf/nginx.conf
user  zabbix;
worker_processes  1;

error_log  /apps/nginx/logs/error.log warn;

events {
    worker_connections  1024;
}


http {
    include     /apps/nginx/conf.d/*.conf;
    include       mime.types;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /apps/nginx/logs/access.log  main;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
}
[root@zabbix01 zabbix-7.0.0]# cat /usr/local/nginx/conf.d/zabbix.conf 
server {
        listen 80;
        server_name localhost;
        root /apps/nginx/html;
        index index.php;
        location ~ \.php$ {
                index index.php;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

重启nginx

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart nginx

启动php-fpm

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl daemon-reload
# systemctl enable --now php-fpm

这时php启动没有报错,但查看状态是failed,修改service文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# vim /usr/lib/systemd/system/php-fpm.service
ProtectSystem=full   #将这一行修改为ProtectSystem=false
# systemctl daemon-reload
# systemctl start php-fpm

查看状态,服务已成功运行!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-09-19 15:44:47 CST; 26s ago
 Main PID: 266392 (php-fpm)
    Tasks: 3 (limit: 23008)
   Memory: 8.4M
   CGroup: /system.slice/php-fpm.service
           ├─266392 php-fpm: master process (/etc/php/php-fpm.conf)
           ├─266393 php-fpm: pool www
           └─266394 php-fpm: pool www

Sep 19 15:44:47 localhost.localdomain systemd[1]: Started The PHP FastCGI Process Manager.

七、ZBX登录

7.1 加载前端

拷贝前端文件到nginx目录下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# rm -rf /usr/local/nginx/html
# cp -r zabbix-7.0.3/ui /usr/local/nginx/html
# chown -R zabbix.zabbix /usr/local/nginx
# systemctl restart php-fpm

7.2 配置数据库

浏览器访问,可以打开zabbix前端

选择完语言后,提示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- Minimum required size of PHP post is 16M (configuration option "post_max_size").
- Minimum required limit on execution time of PHP scripts is 300 (configuration option "max_execution_time").
- Minimum required limit on input parse time for PHP scripts is 300 (configuration option "max_input_time").

按照要求修改配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# grep -E "^post_max_size|^max_execution_time|^max_input_time" /etc/php.ini
max_execution_time = 300
max_input_time = 300
post_max_size = 16M

重启PHP

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart php-fpm

web页面继续后续步骤时,还会有个报错,无法创建/apps/nginx/html/conf/zabbix.conf.php

需要修改PHP配置文件,将php的运行用户改为zabbix然后重启zabbix

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# grep -E "^user|^group" /etc/php/php-fpm.d/www.conf 
user = zabbix
group = zabbix
[root@zabbix01 php-8.3.8]# systemctl restart php-fpm

点击Back,然后再点击下一步,提示保存成功。

7.3 登陆平台

使用默认账密登录:Admin/zabbix

正常登录后,简单地配置仪表盘,可以展示很多7.0的新组件,页面如下图所示:

八、部署总结

以上分别详尽地介绍了RHEL8本地源配置以解决相关组件的基础依赖、二进制部署MySQL8.0开箱即用,Zabbix7.0编译安装、还有PHP8.0的编译和各种依赖组件解决的全过程。笔者最终成功地在某银行机房的全离线环境中部署了基于LNMP架构的Zabbix 7.0 LTS,为银行机房的系统监控提供了有力的支持。

当然,在实际部署过程中,大家可以根据银行机房的具体环境和需求进行适当的部署调整和配置优化,以确保系统的稳定性和安全性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
CentOS 7 安装 PHP 7.4.0 正式版
wget https://www.php.net/distributions/php-7.4.0.tar.bz2 tar -jxf php-7.4.0.tar.bz2 cd php-7.4.0 3、配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP,例如启用某些扩展等。 运行 ./configure –help 命令来获得完整的可用选项清单。 在本示例中,我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。
Alone88
2020/09/01
2.9K0
PHP8.0环境详细安装教程
  说明:最近在搭建个人网站,环境有用到PHP,特此记录。本文安装案例是以PHP8.0.0版本为示例,开始安装前建议先将第三步骤抛出异常的依赖安装,这样安装的时候就无需逐个解决问题。
IT学习日记
2022/09/13
4.6K1
PHP8.0环境详细安装教程
麒麟系统V10 SP2 编译安装PHP 7.4.30
yum -y install libtool sqlite-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel
Kevin song
2022/11/19
3.2K0
麒麟系统V10 SP2 编译安装PHP 7.4.30
CentOS 7 编译安装 PHP 7.4
yum install gd zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel
用户10063859
2022/09/23
9930
编译安装PHP8和Swoole4
很多使用 Swoole 的同学都想在 PHP8 中体验一下性能,奈何编译不过...这篇文章我们就来编译一下 PHP8 和 Swoole4。
沈唁
2020/12/25
1.8K0
centos7 编译php环境记录
躺平程序员老修
2023/09/05
2230
部署zabbix监控服务器
一、zabbix运行架构 Zabbix是一个企业级的分布式开源监控解决方案。它能够监控各种服务器的健康性、网络的稳定性以及各种应用系统的可靠性。当监控出现异常时,Zabbix通过灵活的告警策略,可以为任何事件配置基于邮件、短信、微信等告警机制。而这所有的一切,都可以通过Zabbix提供的web界面进行配置和操作,基于web的前端页面还提供了出色的报告和数据可视化功能。这些功能和特性使我们运维人员可以非常轻松的搭建一套功能强大的运维监控管理平台。
小手冰凉
2020/03/03
2.4K0
三、php环境之php的docker镜像制作
tar -zxvf /tmp/php-7.4.30.tar.gz -C /usr/local/
阿湫..
2023/06/25
1.5K0
entOS 7.4基于LNMP环境安装Zabbix监控平台
https://mirrors.yangxingzhen.com/nginx/nginx-1.13.4.tar.gz
子润先生
2021/07/09
3300
一步步教你编译PHP 8.3并快速启动ThinkPHP 8.0框架项目
本文将介绍如何在本地编译 PHP 8.3 并快速搭建一个 ThinkPHP 8.0 框架应用。通过这篇教程,您可以轻松掌握 PHP 8.3 的编译和 ThinkPHP 8.0 的使用,快速构建您的 PHP Web 应用。
Tinywan
2023/12/26
2.9K0
一步步教你编译PHP 8.3并快速启动ThinkPHP 8.0框架项目
使用LNMP搭建Zabbix并对接Elasticsearch
不然修改密码之后密码会过期,会提示让你重新设置密码 You must reset your password using ALTER USER statement before executing this statement/usr/local/mysql/bin/mysql -uroot -p #登录MySQLuse mysql #切换MySql数据库
没有故事的陈师傅
2019/07/28
7790
Centos7 安装配置 PHP7 Nginx 并部署开源后台系统Fasadmin
1、查看是否安装过Nginx rpm -qa|grep -E "nginx" 2、安装Nginx前需要提前安装以下这些依赖 2.1、查看gcc版本 gcc -v 若有内容输出说明已安装了gcc。否则,需使用以下命令进行安装。 yum -y install gcc 2.2、pcre、pcre-devel安装 yum install -y pcre pcre-devel 2.3、zlib安装 yum install -y zlib zlib-devel 2.4、安装openssl yum ins
游离于山间之上的Java爱好者
2022/09/21
5030
Centos7 安装配置 PHP7 Nginx 并部署开源后台系统Fasadmin
Centos7安装php8
title: 'Centos7安装php8' date: 2021-07-12T20:00:59+08:00 draft: false slug: 'centos7-install-php-8'
无道
2021/07/15
1.4K0
Zabbix4.2安装和4.0升级4.2笔记
Server和ServerActive分别代表zabbix的被动模式和主动模式,这里都填server端的IP 最后一行是开启脚本采集数据
没有故事的陈师傅
2019/07/27
1K0
(Centos7-x86)编译安装php-7.4
PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 PHP同时支持面向对象和面向过程的开发,使用上非常灵活。
QGS
2023/11/20
5260
LNMP环境搭建Zabbix监控平台自动化安装脚本
此脚本是LNMP环境搭建Zabbix监控平台自动化安装脚本,有需要朋友可以参考,脚本内容如下:
子润先生
2021/07/06
3570
shell脚本 一键源码编译安装LNMP
下载 wget https://raw.githubusercontent.com/goodboy23/shell/master/jobs/install_lnmp.sh
陈不成i
2021/06/23
9300
麒麟系统V10 SP2 编译安装 Zabbix 6.0.8 +MySQL 8.0.30 + PHP 7.4.30
初始化密码登录MySQL后只能执行修改密码的操作,其它任何操作是不能执行的,使用以下命令修改密码
Kevin song
2022/11/19
3.3K0
麒麟系统V10 SP2  编译安装  Zabbix 6.0.8  +MySQL 8.0.30 + PHP 7.4.30
zabbix-web切换为nginx及https
zabbix使用了很久,安装的时候并没有选择复杂的源码编译安装,所以默认采用了apache的httpd提供web服务。由于对httpd并没有深入研究,而且个人对httpd的配置文件格式很不感冒,怎么办?当然是换nginx呀!顺便加上https证书安全安全。 本文中的环境如下: 系统版本:CentOS Linux release 7.4.1708 (Core) 软件版本: zabbix 4.0.0 nginx 1.16.0 php 5.6.40
仙人技术
2020/04/28
1.4K0
Linux下PHP+Nginx环境搭建
vi打开:/etc/sysconfig/network-scripts/ifcfg-ens33 文件
Mirror王宇阳
2020/11/13
3.1K0
Linux下PHP+Nginx环境搭建
相关推荐
CentOS 7 安装 PHP 7.4.0 正式版
更多 >
LV.1
上海宏时数据系统有限公司
目录
  • 部署背景
  • 一、环境约定
    • 1.1 系统版本
    • 1.2 硬件信息
  • 二、RHEL8安装
    • 2.1 系统初始化
    • 2.2 搭建本地源
    • 2.3 准备离线资源
  • 三、MySQL8安装
    • 3.1 卸载原有版本
    • 3.2 安装当前版本
    • 3.3 如有防火墙
    • 3.4 验证连通性
  • 四、Zabbix安装
    • 4.1 安装依赖
    • 4.2 编译安装
    • 4.3 导入库表
    • 4.4 配置服务
  • 五、Nginx安装
    • 5.1 安装部署
    • 5.2 加载配置
    • 5.3 配置服务
  • 六、PHP8安装
    • 6.1 安装依赖
    • 6.2 编译安装
    • 6.3 配置服务
  • 七、ZBX登录
    • 7.1 加载前端
    • 7.2 配置数据库
    • 7.3 登陆平台
  • 八、部署总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档