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-ldap
和 php-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
.
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
文件时, 添加用户nginx
到listen.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