The current Zabbix frontend requires PHP version 7.2 or higher. Unfortunately, RHEL/CentOS 7 only provides PHP 5.4 by default. This page describes the proposed method of installing Zabbix frontend on RHEL/CentOS 7.
See also: Updating to PHP 7.3
If you do a clean installation of Zabbix 5.0 using official packages from repo.zabbix.com, you may notice that frontend packages are missing when searching for Zabbix with yum.
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
This is due to the fact that frontend packages were moved to a dedicated frontend
sub-repository.
However, they can still be installed, if PHP 7.2 dependencies are provided.
zabbix-web
package. This gives more flexibility in choosing the way to resolve PHP 7.2 dependency.
It is recommended to use PHP packages from Red Hat Software Collections.
To enable them run:
On RHEL
# yum-config-manager --enable rhel-server-rhscl-7-rpms
On CentOS
# sudo yum install centos-release-scl
On 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
At this point
# yum list rh-php7\*
Should return a list of new rh-php7* packages.
Next, edit /etc/yum.repos.d/zabbix.repo
file (if there is no such file, install zabbix-release first).
Enable zabbix-frontend
repository.
[zabbix-frontend] ... enabled=1 ...
Replace enabled=0
with enabled=1
.
At this stage searching for Zabbix
with yum
shall return zabbix-web
package together with four new packages.
These are:
zabbix-nginx-conf-scl.noarch : Zabbix frontend configuration for Nginx (scl version) zabbix-web-deps-scl.noarch : Convenience package for installing PHP dependencies of zabbix-web package from redhat software collections zabbix-web-mysql-scl.noarch : Zabbix web frontend for MySQL (scl version) zabbix-web-pgsql-scl.noarch : Zabbix web frontend for PostgreSQL (scl version)
Install either zabbix-web-mysql-scl
for MySQL or zabbix-web-pgsql-scl
package for PostgreSQL. Also install also zabbix-apache-conf-scl
or zabbix-nginx-conf-scl
package, depending on web server used.
epel
. With Zabbix 5.0, if you choose to use Red Hat Software Collections, there is no need to use any third-party repositories, since Nginx is available in SCL.
Simply install zabbix-nginx-conf-scl
package.
zabbix-web-deps-scl
This package pulls common PHP dependenencies of Zabbix frontend from Red Hat Software Collections.
# 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
It also contains php-fpm pool for Zabbix, since in this configuration frontend works through fastcgi with both Apache and Nginx.
Configuration file is located at /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
.
zabbix-web-mysql-scl
Meta package that pulls zabbix-web
package and MySQL module for PHP, together with common PHP dependencies.
# repoquery --requires zabbix-web-mysql-scl rh-php72-php-mysqlnd zabbix-web zabbix-web-deps-scl
zabbix-web-pgsql-scl
Meta package that pulls zabbix-web
package and PostgreSQL module for PHP, together with common PHP dependencies.
# repoquery --requires zabbix-web-pgsql-scl rh-php72-php-pgsql zabbix-web zabbix-web-deps-scl
zabbix-apache-conf-scl
This package pulls apache and contains /etc/httpd/cond.d/zabbix.conf
file.
# repoquery --requires zabbix-apache-conf-scl httpd zabbix-web-deps-scl
zabbix-nginx-conf-scl
This package pulls Nginx from Red Hat Software Collections.
# repoquery --requires zabbix-nginx-conf-scl rh-nginx116-nginx zabbix-web
It also contains Zabbix configuration file for Nginx server at /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
.
If for some reasons Red Hat Software Collections can not be used, these alternative methods are available:
PHP modules needed for Zabbix frontend are php-gd
, php-bcmath
, php-mbstring
, php-xml
, php-ldap
and php-json
.
Special care must be taken during upgrade to Zabbix 5.0 from previous versions.
Packages from Red Hat Software Collections are designed to avoid conflicts with files from the main repositories.
Every such package is installed into a separate environment dedicated to its group.
For example, packages from rh-php72-php* group have their configuration installed under /etc/opt/rh/rh-php72/
directory, logs are under /var/opt/rh/rh-php72/log/
directory, etc.
Services provided by these packages have unusual names such as rh-php72-php-fpm
or rh-nginx116-nginx
.
Official Zabbix 5.0 frontend packages use php-fpm with both Apache and Nginx.
This section provides Apache-specific instructions for upgrading Zabbix frontend and server from version 4.0 or 4.4 to 5.0. For Nginx-specific instructions see Upgrade process with Nginx.
Instructions below are for installing Zabbix with MySQL support. Substitute 'mysql' in the commands with 'pgsql' to use PostgreSQL
It is assumed that both frontend and server run on the same box. If you have different setup, make adjustments accordingly.
Remove old frontend
Existing Zabbix frontend must be removed before starting an upgrade.
Old configuration file will be moved to /etc/httpd/conf.d/zabbix.conf.rpmsave
by rpm.
yum remove zabbix-web-*
Install SCL repository
On RHEL
run
yum-config-manager --enable rhel-server-rhscl-7-rpms
On CentOS
run
yum install centos-release-scl
On Oracle Linux
run
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
Install Zabbix 5.0 release package and enable zabbix-frontend repository
Install zabbix-release-5.0
package.
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all
Edit /etc/yum.repos.d/zabbix.repo
file.
Replace enabled=0
with enabled=1
.
[zabbix-frontend] ... enabled=1 ...
Install new frontend packages
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
Official Zabbix 5.0 frontend packages use php-fpm. Update timezone in /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
file.
Update remaining packages and restart Zabbix server
yum update zabbix-*
systemctl restart zabbix-server
Update remaining services
Start and enable php-fpm service.
systemctl start rh-php72-php-fpm systemctl enable rh-php72-php-fpm
Restart Apache.
systemctl restart httpd
Follow upgrade procedure for apache, described above, but make some adjustments.
A few more steps have to be performed:
Make sure to stop and disable old Nginx and php-fpm before upgrading. To do this, run:
systemctl stop nginx php-fpm systemctl disable nginx php-fpm
When editing zabbix.conf
file for php-fpm, add user nginx
to listen.acl_users
directive
listen.acl_users = apache,nginx
Make sure zabbix-nginx-conf-scl
package is installed instead of zabbix-apache-conf-scl
package.
yum install zabbix-nginx-conf-scl
Edit /opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
file.
Configure listen
and server_name
directives.
# listen 80; # server_name example.com;
Start and enable Nginx and php-fpm
systemctl start rh-nginx116-nginx rh-php72-php-fpm systemctl enable rh-nginx116-nginx rh-php72-php-fpm