How to Install Zabbix on RHEL/CentOS and Debian/Ubuntu – Part 1

Zabbix is an Open Source, high-level enterprise software designed to monitor and keep track of networks, servers, and applications in real-time. Build in a server-client model, Zabbix can collect different types of data that are used to create historical graphics and output performance or load trends of the monitored targets.

The server has the ability to check standard networking services (HTTP, FTP, SMTP, IMAP, etc) without the need to install extra software on the monitored hosts.

However, in order to gather data and create statistics about local services or other specific system resources that run on remote instances, such as CPU, disks, internal system process, RAM, etc, you need to install and configure a Zabbix agent.

Following are the 4-article series about the Zabbix Monitoring application:

Part 1: Install Zabbix on Debian/Ubuntu and RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux

This tutorial will focus on how to install the latest version of the Zabbix Server on Debian/Ubuntu and RHEL/CentOS /Fedora/Rocky Linux/AlmaLinux with MySQL/MariaDB backend database to store collected data, PHP and Apache Web Server as the mainly web interface.

Important: The given Zabbix instructions also work on all Debian derivatives and RedHat-based distros like RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux.

Step 1: Install Apache Web Server and PHP

1. First, update the software packages and then install Apache Web Server alongside PHP and its extensions in order to provide the web-backed functionality for Zabbix Server by issuing the following command.

--------------- On Debian/Ubuntu --------------- 
$ sudo apt update && sudo apt upgrade
$ sudo apt install apache2 php php-mysql php-mysqlnd php-ldap php-bcmath php-mbstring php-gd php-pdo php-xml libapache2-mod-php

--------------- On RHEL-based Distros ---------------
# yum update && yum upgrade
# yum -y install epel-release
# yum install httpd php php-mysqlnd php-ldap php-bcmath php-mbstring php-gd php-xml		

2. Next, you need to tune the PHP interpreter and adjust some values in order to run Zabbix Server. So, open Apache php.ini configuration file for editing by issuing the following command:

$ sudo nano /etc/php/7.X/apache2/php.ini 	[On Debian/Ubuntu] 
# vi /etc/php.ini				[On RHEL/CentOS/]

Now, search with CTRL+C and replace the following PHP values as it follows:

post_max_size = 16M
upload_max_filesize = 2M
max_execution_time 300
max_input_time = 300
memory_limit 128M
session.auto_start = 0
mbstring.func_overload = 0
date.timezone = Europe/Bucharest

Replace the date.timezone variable according to your server’s geographical location. A list of PHP-supported Timezones can be found here http://php.net/manual/en/timezones.php.

3. After updating the PHP configuration file, restart Apache daemon to reflect changes by issuing the following command.

$ sudo systemctl restart apache2.service	 [On Debian/Ubuntu] 
# systemctl restart httpd.service		 [On RHEL/CentOS]

Step 2: Install MariaDB Database and Library

4. On the next step install the MariaDB database and MySQL development library from binary packages. As MariaDB installs on your system you will be asked to set a password for the database root user during installation (Only on Debian). Choose a strong password, repeat it and wait for the installation to finish.

$ sudo apt-get install mariadb-server mariadb-client libmysqld-dev	 [On Debian/Ubuntu] 
# yum install mariadb-server mariadb-client mariadb-devel	         [On RHEL/CentOS]
Set MySQL root Password
Set MySQL root Password

5. When the installation of Mariadb finishes, start and secure the database by issuing mysql_secure_installation command with system root privileges ( answer with yes for removing anonymous users, disable root login remotely, remove test database and access to it and apply all changes).

$ sudo systemctl start mariadb
$ sudo mysql_secure_installation
OR
# systemctl start mariadb
# mysql_secure_installation

Use the below screenshot as a guide.

Secure MySQL Installation

6. The next requirement for Zabbix is setting up an RDBMS database. Log in to your LAMP stack database component (MySQL or MariaDB) and create a Zabbix database and the credentials required to manage the database, by issuing the following commands.

Make sure you replace the database name, user, and password to match your own settings.

# mysql -u root -p
MariaDB [(none)]> create database zabbixdb character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbixdb.* to 'zabbixuser'@'localhost' identified by 'password1';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

Step 3: Install Zabbix Server

7. Now, start to install the Zabbix server and Zabbix PHP frontend application by adding the official Zabbix repositories to your system package manager by issuing the following commands with root privileges.

Install Zabbix on Debian

--------------- On Debian 11 --------------- 
$ sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian11_all.deb
$ sudo dpkg -i zabbix-release_5.4-1+debian11_all.deb
$ sudo apt update
$ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

--------------- On Debian 10 --------------- 
$ sudo wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb
$ sudo dpkg -i zabbix-release_5.4-1+debian10_all.deb
$ sudo apt update
$ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

Install Zabbix on Ubuntu

--------------- On Ubuntu 20.04 --------------- 
$ sudo wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu20.04_all.deb
$ sudo dpkg -i zabbix-release_5.4-1+ubuntu20.04_all.deb
$ sudo apt update
$ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

--------------- On Ubuntu 18.04 --------------- 
$ sudo wget https://repo.zabbix.com/zabbix/5.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.4-1+ubuntu18.04_all.deb
$ sudo dpkg -i zabbix-release_5.4-1+ubuntu18.04_all.deb
$ sudo apt update
$ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

Install Zabbix on RHEL-based Distros

--------------- On RHEL/CentOS 8 --------------- 
# rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent

--------------- On RHEL/CentOS 7 ---------------
# rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/7/x86_64/zabbix-release-5.4-1.el7.noarch.rpm
# dnf clean all
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent

If you want to download and compile an older version, please visit Zabbix official Sourceforge repositories.

8. On the next step, restart the Apache HTTP server in order to apply the Zabbix configuration file installed for Apache.

$ sudo systemctl restart apache2   [On Debian/Ubuntu] 
# systemctl restart httpd     [On RHEL/CentOS] 
# setenforce 0                [Disable SELinux on RHEL/CentOS] 

Step 4: Configure Zabbix Server and Agent

9. Before configuring the server, first, import Zabbix’s initial database schema to the MySQL database. Import the schema against the database created for the Zabbix application, by issuing the below command.

$ sudo zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -u zabbixuser zabbixdb -p
OR
# zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -u zabbixuser zabbixdb -p

10. On the next step, set up the Zabbix server by opening the main configuration file for editing with the following command.

$ sudo nano /etc/zabbix/zabbix_server.conf
OR
# nano /etc/zabbix/zabbix_server.conf

In zabbix_server.conf file search and modify the following lines as presented in the below excerpt. Update the variables to reflect your own database settings.

DBHost=localhost
DBName=zabbixdb
DBUser=zabbixuser
DBPassword=password1

11. Finally, save and close the Zabbix server configuration file by pressing Ctrl+o and Ctrl+x file and restarting the Zabbix daemon to apply changes by issuing the below command.

# systemctl restart zabbix-server.service

12. Next, configure the Zabbix Agent configuration file by updating the following lines. First, open the file for editing.

# nano /etc/zabbix/zabbix_agentd.conf 

Zabbix agent configuration file excerpt:

Server=127.0.0.1
ListenPort=10050

13. Save and close the Zabbix agent configuration file and restart Zabbix Agent to reflect changes by issuing the following command.

# systemctl restart zabbix-agent.service 

Step 5: Install and Configure Zabbix Frontend Interface

15. Now it’s time to install the Zabbix Server Frontend web interface. In order to accomplish this step open a browser and navigate to your server IP Address using HTTP or HTTPS protocol and the welcome screen should appear. Hit the Next button to move forward.

http://192.168.1.151/zabbix/setup.php
OR
https://192.168.1.151/zabbix/setup.php

On the first welcome screen, just hit the Next step button to move to the new step of the installation process.

Zabbix Web Installer
Zabbix Web Installer

16. After a series of checks, if all pre-requires values are satisfied, hit the Next button to proceed further.

Zabbix Checks Pre-requisites
Zabbix Checks Pre-requisites

17. On the next step provide the settings for the MySQL database, hit the Test connection button to test MySQL connectivity, and move to the step by pressing the Next button.

Zabbix Database Settings
Zabbix Database Settings

18. Next, supply the Host (or IP Address) and the Port of the Zabbix server (use the host localhost and the port 10051 because Zabbix server is configured to run on the same host as the Zabbix frontend web interface in this tutorial) and a Name for Zabbix frontend installation. When you’re done hit Next to continue.

Zabbix Server Details
Zabbix Server Details

19. Next, check all the configurations parameters.

Zabbix Pre Installation Summary
Zabbix Pre Installation Summary

20. After the installation process completes, a congratulations message will appear in your browser. Hit on the Finish button to exit the Zabbix frontend installer.

Zabbix Installation Complete
Zabbix Installation Complete

21. Finally, navigate to your server IP address or domain name by appending /zabbix URL address and log in to the Zabbix web admin panel with the default credentials presented below.

https://your_domain.tld/zabbix/ 
Username: Admin
Password: zabbix
Zabbix Login
Zabbix Login

22. After you’ve logged in to the Zabbix admin panel, you can start to configure Zabbix and add new network resources to be monitored by the Zabbix server.

Zabbix Dashboard
Zabbix Dashboard

23. To change the Zabbix frontend admin account password, navigate to Administration -> Users –> User and hit on the Change password button and add your new password, as illustrated in the below screenshot. Finally, hit on the bottom Update button in order to save the admin account’s new password.

Zabbix Admin Password Change
Zabbix Admin Password Change

That’ll! The next series concerning the Zabbix monitoring system will discuss how to set up the server further using the web interface and how to install and configure Zabbix agents on different Linux distributions or even Windows systems.

Matei Cezar
I'am a computer addicted guy, a fan of open source and linux based system software, have about 4 years experience with Linux distributions desktop, servers and bash scripting.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.