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时,您可能会注意到缺少前端包。.

  1. zabbix-agent.x86_64 : Old Zabbix Agent
  2. zabbix-get.x86_64 : Zabbix Get
  3. zabbix-java-gateway.x86_64 : Zabbix java gateway
  4. zabbix-js.x86_64 : Zabbix JS
  5. zabbix-proxy-mysql.x86_64 : Zabbix proxy for MySQL or MariaDB database
  6. zabbix-proxy-pgsql.x86_64 : Zabbix proxy for PostgreSQL database
  7. zabbix-proxy-sqlite3.x86_64 : Zabbix proxy for SQLite3 database
  8. zabbix-release.noarch : Zabbix repository configuration
  9. zabbix-sender.x86_64 : Zabbix Sender
  10. zabbix-server-mysql.x86_64 : Zabbix server for MySQL or MariaDB database
  11. 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环境下

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

在CentOS环境下

  1. # sudo yum install centos-release-scl

在Oracle Linux环境下

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

此时,执行

  1. # yum list rh-php7\*

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

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

  1. [zabbix-frontend]
  2. ...
  3. enabled=1
  4. ...

enabled=0 替代成 enabled=1.

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

  1. zabbix-nginx-conf-scl.noarch : NginxZabbix前端配置 (scl 版本)
  2. zabbix-web-deps-scl.noarch : 用于从redhat软件集合安装zabbix-web包所需PHP依赖项的便利包
  3. zabbix-web-mysql-scl.noarch : 用于MySQL数据库的Zabbix web前端包 (scl 版本)
  4. 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依赖项。.

  1. # repoquery --requires zabbix-web-deps-scl
  2. rh-php72
  3. rh-php72-php-bcmath
  4. rh-php72-php-fpm
  5. rh-php72-php-gd
  6. rh-php72-php-ldap
  7. rh-php72-php-mbstring
  8. 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依赖项.

  1. # repoquery --requires zabbix-web-mysql-scl
  2. rh-php72-php-mysqlnd
  3. zabbix-web
  4. zabbix-web-deps-scl

zabbix-web-pgsql-scl

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

  1. # repoquery --requires zabbix-web-pgsql-scl
  2. rh-php72-php-pgsql
  3. zabbix-web
  4. zabbix-web-deps-scl

zabbix-apache-conf-scl

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

  1. # repoquery --requires zabbix-apache-conf-scl
  2. httpd
  3. zabbix-web-deps-scl

zabbix-nginx-conf-scl

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

  1. # repoquery --requires zabbix-nginx-conf-scl
  2. rh-nginx116-nginx
  3. 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版本时,需要特别注意一些事项。

请查看通用升级指引.

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.

  1. yum remove zabbix-web-*

安装 SCL 存储库

RHEL环境下执行

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

CentOS环境下执行

  1. yum install centos-release-scl

Oracle Linux环境下执行

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

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

安装 zabbix-release-5.0 包.

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

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

  1. [zabbix-frontend]
  2. ...
  3. enabled=1
  4. ...

安装新的前端包

  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

  1. yum update zabbix-*

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

  1. systemctl restart zabbix-server

更新剩余的服务

启用并开启php-fpm服务。

  1. systemctl start rh-php72-php-fpm
  2. systemctl enable rh-php72-php-fpm

重启Apache.

  1. systemctl restart httpd

在Nginx环境下的升级进程

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

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

  1. systemctl stop nginx php-fpm
  2. systemctl disable nginx php-fpm

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

  1. listen.acl_users = apache,nginx

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

  1. yum install zabbix-nginx-conf-scl

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

  1. # listen 80;
  2. # server_name example.com;

启动并启用 Nginx和php-fpm

  1. systemctl start rh-nginx116-nginx rh-php72-php-fpm
  2. systemctl enable rh-nginx116-nginx rh-php72-php-fpm