这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.
2022 Zabbix中国峰会
2022 Zabbix中国峰会

1 RHEL/CentOS 7 前端安装

概述

从Zabbix 5.0版本开始,Zabbix前端需要PHP 7.2版或更高版本。 非常不幸的是, RHEL/CentOS 7 缺省只提供PHP 5.4版本. 本章节介绍在RHEL/CentOS 7上安装Zabbix前端的建议方法。

使用Red Hat软件集合中的PHP和Nginx

如果你从官方提供的安装包repo.zabbix.com完成了Zabbix 5.0的干净的安装, 使用yum搜索Zabbix时,您可能会注意到缺少前端包。.

zabbix-agent.x86_64 : Old Zabbix Agent
       zabbix-get.x86_64 : Zabbix Get
       zabbix-java-gateway.x86_64 : Zabbix java gateway
       zabbix-js.x86_64 : Zabbix JS
       zabbix-proxy-mysql.x86_64 : Zabbix proxy for MySQL or MariaDB database
       zabbix-proxy-pgsql.x86_64 : Zabbix proxy for PostgreSQL database
       zabbix-proxy-sqlite3.x86_64 : Zabbix proxy for SQLite3 database
       zabbix-release.noarch : Zabbix repository configuration
       zabbix-sender.x86_64 : Zabbix Sender
       zabbix-server-mysql.x86_64 : Zabbix server for MySQL or MariaDB database
       zabbix-server-pgsql.x86_64 : Zabbix server for PostgresSQL database

这是因为前端包被移动到了一个专用的前端子目录 frontend .
然而, Zabbix前端是可以被安装的,前提是PHP 7.2依赖条件已经提供.

为了方便起见,已经从主zabbix-web包中删除了对PHP的任何直接依赖。这为解决PHP7.2依赖关系的方法提供了更大的灵活性。

建议使用Red Hat软件集合中的PHP包。 Red Hat Software Collections.
启用PHP包,执行:

在RHEL环境下

# yum-config-manager --enable rhel-server-rhscl-7-rpms

在CentOS环境下

# sudo yum install centos-release-scl

在Oracle Linux环境下

# yum install scl-utils
       # yum install oraclelinux-release-el7
       # /usr/bin/ol_yum_configure.sh
       # yum-config-manager --enable software_collections
       # yum-config-manager --enable ol7_latest ol7_optional_latest 

此时,执行

# yum list rh-php7\*

会返回显示新的rh-php7*列表.

然后, 编辑 /etc/yum.repos.d/zabbix.repo 文件 (如果没有此文件, 先安装 zabbix-release). 打开 zabbix-frontend 存储库.

[zabbix-frontend]
       ...
       enabled=1
       ...

enabled=0 替代成 enabled=1.

在此阶段,通过yum搜索Zabbix将返回zabbix-web包和四个新包。 这四个包是:

zabbix-nginx-conf-scl.noarch : Nginx的Zabbix前端配置 (scl 版本)
       zabbix-web-deps-scl.noarch : 用于从redhat软件集合安装zabbix-web包所需PHP依赖项的便利包
       zabbix-web-mysql-scl.noarch : 用于MySQL数据库的Zabbix web前端包 (scl 版本)
       zabbix-web-pgsql-scl.noarch : 用于PostgreSQL数据库的Zabbix web前端包(scl 版本)

在安装MySQL数据库所需的zabbix-web-mysql-scl或者 PostgreSQL数据库所需的zabbix-web-pgsql-scl. 取决于Web服务器的需要,也请安装zabbix-apache-conf-scl 或者 zabbix-nginx-conf-scl.

在Zabbix 4.4版本中,已经加入了对Nginx的支持, 但是官方的RHEL/CentOS 7存储库中没有可用的web服务器. 因此, 它必须通过第三方仓库提供, 由用户安装。尤其是 epel. 在Zabbix 5.0, 如果您选择使用Red Hat软件集合, 无需使用任何第三方存储库,因为SCL中提供Nginx. 只需安装zabbix-nginx-conf-scl包.

新包的技术细节

zabbix-web-deps-scl

这个包用于从Red Hat软件集合中提取Zabbix前端的常见PHP依赖项。.

# repoquery --requires zabbix-web-deps-scl
       rh-php72
       rh-php72-php-bcmath
       rh-php72-php-fpm
       rh-php72-php-gd
       rh-php72-php-ldap
       rh-php72-php-mbstring
       rh-php72-php-xml

它还包含用于Zabbix的php fpm池,因为在这种配置中,前端可以通过fastcgi与Apache和Nginx一起工作。
配置文件位于/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf.

zabbix-web-mysql-scl

元软件包用于获取zabbix-web包、PHP对MySQL数据库模块的支持以及常见的PHP依赖项.

# repoquery --requires zabbix-web-mysql-scl
       rh-php72-php-mysqlnd
       zabbix-web
       zabbix-web-deps-scl

zabbix-web-pgsql-scl

元软件包用于获取zabbix-web包、PHP对PostgreSQL数据库模块的支持以及常见的PHP依赖项。

# repoquery --requires zabbix-web-pgsql-scl
       rh-php72-php-pgsql
       zabbix-web
       zabbix-web-deps-scl

zabbix-apache-conf-scl

这个包用于获取apache并包含/etc/httpd/cond.d/zabbix.conf 文件.

# repoquery --requires zabbix-apache-conf-scl
       httpd
       zabbix-web-deps-scl

zabbix-nginx-conf-scl

这个包用于从Red Hat软件集合中提取Nginx.

# repoquery --requires zabbix-nginx-conf-scl
       rh-nginx116-nginx
       zabbix-web

它还包含Nginx服务器所需的Zabbix配置文件,文件在 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf.

使用第三方PHP存储库

如果由于某些原因不能够使用Red Hat软件集合, 可以用以下的替代办法:

  • 使用任何可以提供PHP的第三方存储库。
  • 从源代码构建PHP。

Zabbix前端所需的PHP模块是php-gd, php-bcmath, php-mbstring, php-xml, php-ldapphp-json.

从旧版本Zabbix升级至Zabbix 5.0版本

在旧版本升级至Zabbix 5.0版本时,需要特别注意一些事项。

<note important>请查看通用升级指引. :::

Red Hat软件集合中的包旨在避免与主存储库中的文件冲突.
每一个特定的包都被安装到一个单独的环境中,专门用于它的组.
例如, 来自rh-php72-php*组的 在 /etc/opt/rh/rh-php72/ 目录下会有对应的配置文件, 日志会生成在 /var/opt/rh/rh-php72/log/ 目录下, 等等. 这些包提供的服务具有不寻常的名称,如rh-php72-php-fpm or rh-nginx116-nginx

官方的zabbix5.0前端包将php-fpm与Apache和Nginx结合使用

在Apache环境下的升级进程

本章节提供了有关将Zabbix前端和服务端从4.0版本或4.4版本升级到5.0版本,与Apache相关的特定说明. 与Nginx相关的指引请参见在Nginx环境下的升级进程.
下面的说明是针对已经安装MySQL支持的Zabbix服务。将命令中的“mysql”替换为“pgsql”可以适用于PostgreSQL数据库
下面假设Zabbix前端和Zabbix服务安装在同一台服务器上。如果您的Zabbix相关服务安装与之不同,请根据实际情况调整。
清除旧的Zabbix前端

在升级开始之前,你必须把已有的Zabbix前端清除。 旧的配置文件将会被rpm移动到 /etc/httpd/conf.d/zabbix.conf.rpmsave.

yum remove zabbix-web-*

安装 SCL 存储库

RHEL环境下执行

yum-config-manager --enable rhel-server-rhscl-7-rpms

CentOS环境下执行

yum install centos-release-scl

Oracle Linux环境下执行

yum install scl-utils
       yum install oraclelinux-release-el7
       /usr/bin/ol_yum_configure.sh
       yum-config-manager --enable software_collections
       yum-config-manager --enable ol7_latest ol7_optional_latest

安装Zabbix 5.0发行包并启用Zabbix前端存储库

安装 zabbix-release-5.0 包.

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
       yum clean all

编辑 /etc/yum.repos.d/zabbix.repo file. 把 enabled=0 替换成 enabled=1.

[zabbix-frontend]
       ...
       enabled=1
       ...

安装新的前端包

yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

官方Zabbix 5.0前端包使用php-fpm. 在/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf文件中更新时区.

** 更新剩余的包并重启Zabbix server**

yum update zabbix-*

重启Zabbix server 将会升级数据库. 请确保数据库已经备份.

systemctl restart zabbix-server

** 更新剩余的服务 **

启用并开启php-fpm服务。

systemctl start rh-php72-php-fpm
       systemctl enable rh-php72-php-fpm

重启Apache.

systemctl restart httpd

在Nginx环境下的升级进程

遵循上面描述的apache升级过程,但做一些调整.
以下几个步骤需要执行:

在升级之前,请确保停止并禁用旧的Nginx和php-fpm。执行:

systemctl stop nginx php-fpm
       systemctl disable nginx php-fpm

为php-fpm编辑zabbix.conf 文件时, 添加用户nginxlisten.acl_users

listen.acl_users = apache,nginx

确保zabbix-nginx-conf-scl 包已经被安装,而不是zabbix-apache-conf-scl包被安装.

yum install zabbix-nginx-conf-scl

编辑 /opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf 文件.
Configure listen and server_name directives.

#        listen          80;
       #        server_name     example.com;

启动并启用 Nginx和php-fpm

systemctl start rh-nginx116-nginx rh-php72-php-fpm
       systemctl enable rh-nginx116-nginx rh-php72-php-fpm