Введение
В данной небольшой заметке разберем установку 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
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;
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
Проверяем 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 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
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;
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
Завершаем установку 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, спасибо за потраченное время на чтение и доброго времени суток!)
Так же вы можете отблагодарить автора материально:
Спасибо! Подскажите, не планируется статья про обновление с более ранних версий на 7?
Лежит уже готовая, надо только оформить)
Спасибо за хорошую инструкцию!
Рад что пригодилось)