Системный администратор
May 31, 2023

Установка Zabbix на Debian 11 в связке с Nginx и Mysql

Введение

В данной небольшой заметке разберем установку Zabbix 6.4 в Debian 11 в связке с Nginx и Mysql


Установка Zabbix Server и нужный пакетов

1. Добавим официальный репозиторий Zabbix для Debian 11 (в данном случае будем ставить версию 6.4):

wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian11_all.deb
dpkg -i zabbix-release_6.4-1+debian11_all.deb
apt update && apt upgrade -y

2. Установим Zabbix Server, Nginx, Mysql и Zabbix agent:

apt install zabbix-server-mysql mariadb-server zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

Настройка Mysql

1. Запускаем mysql secure installation скрипт:

mysql_secure_installation
Запускаем mysql secure installation скрипт
Enter current password for root (enter for none):
OK, successfully used password, moving on... Жмем ENTER так как у нас пока не задан пароль

Switch to unix_socket authentication [Y/n] n

Change the root password? [Y/n] y

СОЗДАЕМ ПАРОЛЬ ДЛЯ ROOT в Mysql

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

2. Создаем базу данных, пользователя и пароль, даем все привилегии на базу пользователю zabbix:

mysql -uroot -p
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'ПАРОЛЬ';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
Создаем базу данных, пользователя и пароль, даем все привилегии на базу пользователю zabbix

3. Импортируем начальную схему и данные (вводим недавно созданный пароль в Mysql для нашего пользователя zabbix):

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

4. Выключаем опцию log_bin_trust_function_creators после импорта схемы базы данных:

mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

5. Настраиваем конфигурационный файл zabbix_server.conf :

nano /etc/zabbix/zabbix_server.conf
Настраиваем zabbix_server.conf

Проверяем DBName, DBUser, раскомментируем строку DBPassword и введем там пароль для пользователя zabbix, который мы сделали выше в mysql
(Для поиска по файлу в nano можно воспользоваться сочетанием Ctrl+W):

DBName=zabbix
DBUser=zabbix
DBPassword=ВАШ ПАРОЛЬ

Настройка PHP-FPM

Установим Timezone в /etc/zabbix/php-fpm.conf:

nano /etc/zabbix/php-fpm.conf

php_value[date.timezone] = Europe/Moscow

Настройка Nginx

Откроем файл конфигурации /etc/zabbix/nginx.conf, раскомментируем и отредактируем директивы listen (можно указать любой порт) и server_name, в последнее вводим ваш домен или IP адрес сервера:

nano /etc/zabbix/nginx.conf
server {
        listen          80;
        server_name     zabbix.domain.ru;

Перезапускаем наши службы и добавляем в автозагрузку:

systemctl restart zabbix-server zabbix-agent nginx php7.4-fpm
systemctl enable zabbix-server zabbix-agent nginx php7.4-fpm

Получаем SSL сертификат для домена с помощью Certbot: (пропускаем если производите установку без своего домена)

1. Установим Certbot и Nginx плагин в Debian 11:

apt install certbot python3-certbot-nginx

2. Выпускаем сертификат, вводим свою почту, принимаем пользовательские соглашения, соглашаемся или нет с рассылками, выбираем наш домен и жмем Enter:

certbot run --nginx
Выпускаем сертификат, вводим свою почту, принимаем пользовательские соглашения, соглашаемся или нет с рассылками, выбираем наш домен и жмем Enter

3. Перезагружаем Nginx:

service nginx restart

Генерируем самоподписанный SSL сертификат для Zabbix с помощью OpenSSL для локального пользования

Генерируем сертификат с помощью OpenSSL на один год (можете указать любое количество времени в ключе -days):

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/zabbix.key -out /etc/ssl/certs/zabbix.crt

Данные можно указывать любые, кроме Common Name, там укажите свой ip или имя:

Далее приведем конфиг /etc/zabbix/nginx.conf к такому виду (можно просто заменить весь конфиг этим, не забудьте заменить директиву server_name на свой ip или имя):

nano /etc/zabbix/nginx.conf
server {
    listen          80;
    server_name     zabbix.local; #ip или имя
    return          301 https://$host$request_uri;
}


server {
    listen          443 ssl;
    server_name     zabbix.local; #ip или имя
    root            /usr/share/zabbix;

    index           index.php;

    ssl_certificate /etc/ssl/certs/zabbix.crt; # путь к сертификату
    ssl_certificate_key /etc/ssl/private/zabbix.key; # путь к приватному ключу
    ssl_protocols   TLSv1.2; # минимальный уровень протокола

    location = /favicon.ico {
        log_not_found   off;
    }

    location / {
        try_files       $uri $uri/ =404;
    }

    location /assets {
        access_log      off;
        expires         10d;
    }

    location ~ /\.ht {
        deny            all;
    }

    location ~ /(api\/|conf[^\.]|include|locale) {
        deny            all;
        return          404;
    }

    location /vendor {
        deny            all;
        return          404;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass    unix:/var/run/php/zabbix.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index   index.php;

        fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
        fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
        fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

        include fastcgi_params;
        fastcgi_param   QUERY_STRING    $query_string;
        fastcgi_param   REQUEST_METHOD  $request_method;
        fastcgi_param   CONTENT_TYPE    $content_type;
        fastcgi_param   CONTENT_LENGTH  $content_length;

        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout         60;
        fastcgi_send_timeout            180;
        fastcgi_read_timeout            180;
        fastcgi_buffer_size             128k;
        fastcgi_buffers                 4 256k;
        fastcgi_busy_buffers_size       256k;
        fastcgi_temp_file_write_size    256k;
    }
}

Готово, теперь наше соединение защищено протоколом https


Завершаем установку Zabbix Server

Переходим в браузер по http://вашip или https://домену_который_вы_указали.ru завершаем установку:

Выбираем язык, в дальнейшем его можно будет сменить и жмем Next step
Прокрутим вниз и проверим что везде стоит ОК и жмем Next step
Вводим пароль от нашей базы zabbix которую создали выше и жмем Next step
Выбираем имя для нашего Zabbix сервера, часовой пояс и цвет темы и жмем Next step
Жмем Next step для продолжения установки Zabbix сервера
Поздравляю, на этом установка Zabbix на Debian 11 окончена

Дефолтный логин пароль от Zabbix сервера:

Admin
zabbix

Сразу изменим пароль администратора на более безопасный:

Users=>Users=>Выбираем пользователя Admin=>Жмем Change Password=>Жмем Update

Вывод

В данной заметке разобрали как за небольшое количество времени развернуть Zabbix Server 6.4 на Debian 11 в связке с Nginx и Mysql, выпустили бесплатный SSL сертификат для вашего домена и сгенерировали SSL сертификат для локального использования.

Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT или посетить мой сайт, от куда и взята заметка, спасибо за потраченное время на чтение и доброго времени суток!)