Установка 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
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 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
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 завершаем установку:
Дефолтный логин пароль от Zabbix сервера:
Admin zabbix
Сразу изменим пароль администратора на более безопасный:
Users=>Users=>Выбираем пользователя Admin=>Жмем Change Password=>Жмем Update
Вывод
В данной заметке разобрали как за небольшое количество времени развернуть Zabbix Server 6.4 на Debian 11 в связке с Nginx и Mysql, выпустили бесплатный SSL сертификат для вашего домена и сгенерировали SSL сертификат для локального использования.
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT или посетить мой сайт, от куда и взята заметка, спасибо за потраченное время на чтение и доброго времени суток!)