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

Введение

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

Что добавили нового можно почитать тут.


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

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

wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb
dpkg -i zabbix-release_7.0-1+debian12_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
Установка Zabbix на Debian 11 c Nginx и Mysql
Запускаем 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 на Debian 12 c Nginx и Mysql
Создаем базу данных, пользователя и пароль, даем все привилегии на базу пользователю 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 на Debian 12 c Nginx и Mysql
Настраиваем zabbix_server.conf

Проверяем DBNameDBUser, раскомментируем строку 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 php8.2-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.2-fpm

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

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

apt install certbot python3-certbot-nginx

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

certbot run --nginx
Установка Zabbix на Debian 11 c Nginx и Mysql
Выпускаем сертификат, вводим свою почту, принимаем пользовательские соглашения, соглашаемся или нет с рассылками, выбираем наш домен и жмем 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 или имя:

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

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

nano /etc/zabbix/nginx.conf
server {
    listen          80;
    server_name     zabbix.local;
    return          301 https://$host$request_uri;
}


server {
    listen          443 ssl;
    server_name     zabbix.local;
    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

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

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

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

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

Admin
zabbix

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

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

Вывод

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

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

Так же вы можете отблагодарить автора материально:

4 комментария к “Установка Zabbix 7 LTS в Debian 12 в связке с Nginx и Mysql”

  1. Спасибо! Подскажите, не планируется статья про обновление с более ранних версий на 7?

    Ответить

Оставьте комментарий