Найти в Дзене
Денис Шарапов

Установка Zabbix на Ubuntu 24.04 + Русификация + Установка SSL

Стэк:
Сервер: облачный
ОС: Ubuntu 24.04
Zabbix версия: 7.4
БД: MySQL
Web сервер: Apache
Видео с установкой тут
https://dzen.ru/video/watch/6909f0fe89fa38265f43f154
0) Подготовка системы
sudo -s
# входим в root-шелл apt update && apt -y upgrade
# обновляем индекс пакетов и ставим обновления
1) Ставим Apache, PHP и MySQL
apt -y install apache2 mysql-server
# веб-сервер Apache2 и MySQL 8 apt -y install php php-mysql php-xml php-bcmath php-mbstring php-gd php-ldap php-zip php-intl php-cli libapache2-mod-php
# базовый PHP + модули, которые часто просит инсталлятор Zabbix a2enmod php* headers rewrite
# включаем PHP-модуль и полезные модули Apache systemctl enable --now apache2 mysql
# автозапуск и старт Apache/MySQL
2) Подключаем официальный репозиторий Zabbix 7.4 и ставим пакеты
cd /tmp # работаем во временном каталоге wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu24.04_all.deb
# скачиваем .deb с описанием репозитория

Стэк:
Сервер: облачный
ОС: Ubuntu 24.04
Zabbix версия: 7.4
БД: MySQL
Web сервер: Apache

Видео с установкой тут
https://dzen.ru/video/watch/6909f0fe89fa38265f43f154


0) Подготовка системы
sudo -s
# входим в root-шелл

apt update && apt -y upgrade
# обновляем индекс пакетов и ставим обновления

1) Ставим Apache, PHP и MySQL
apt -y install apache2 mysql-server
# веб-сервер Apache2 и MySQL 8

apt -y install php php-mysql php-xml php-bcmath php-mbstring php-gd php-ldap php-zip php-intl php-cli libapache2-mod-php
# базовый PHP + модули, которые часто просит инсталлятор Zabbix

a2enmod php* headers rewrite
# включаем PHP-модуль и полезные модули Apache

systemctl enable --now apache2 mysql
# автозапуск и старт Apache/MySQL


2) Подключаем официальный репозиторий Zabbix 7.4 и ставим пакеты
cd /tmp # работаем во временном каталоге

wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu24.04_all.deb
# скачиваем .deb с описанием репозитория Zabbix 7.4 для Ubuntu 24.04

dpkg -i zabbix-release_latest_7.4+ubuntu24.04_all.deb
# добавляем репозиторий Zabbix в систему

apt update
# подхватываем новые источники пакетов

apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
# ставим сервер Zabbix (MySQL), веб-фронтенд (PHP+Apache), SQL-схемы и агент


3) Отключаем “магический” ! в текущей сессии Bash
set +H # отключаем history expansion (!), чтобы пароли с '!' не ломали команду


4) Создаём БД и пользователя заново (надёжный способ с heredoc)

mysql <<'SQL'

CREATE DATABASE IF NOT EXISTS zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

-- создаём БД zabbix с правильной кодировкой/колляцией; IF NOT EXISTS — не упадёт, если БД уже есть

DROP USER IF EXISTS 'zabbix'@'localhost';

-- на всякий случай удаляем пользователя, если он частично/криво создался

CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'StrongP@ssw0rd!';

-- создаём пользователя zabbix с ТВОИМ паролем (можно оставить тот же); heredoc с кавычками 'SQL' не даст bash трогать '!' в пароле

GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';

-- выдаём все права на БД zabbix пользователю zabbix

FLUSH PRIVILEGES;

-- применяем права немедленно

SQL


Получаем
Database name: zabbix
User: zabbix
Пароль: StrongP@ssw0rd!


5) Включаем переменную MySQL для импорта функций Zabbix
mysql -e "SET GLOBAL log_bin_trust_function_creators=1;"

# временно разрешаем импорт хранимых функций без SUPER (нужно для схемы Zabbix)


6) Импортируем схему Zabbix в MySQL

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

# распаковываем и подаём схему в MySQL; -u/-p — подключаемся пользователем zabbix, БД — zabbix

# при запросе пароля вводим ровно тот, что задавали в CREATE USER в нашем примере пароль: StrongP@ssw0rd!


7) Возвращаем безопасное значение переменной
mysql -e "SET GLOBAL log_bin_trust_function_creators=0;"
# выключаем послабление обратно

8) Проверка (не обязательно)
mysql -e "SELECT User, Host FROM mysql.user WHERE User='zabbix';"
# убеждаемся, что 'zabbix'@'localhost' существует

mysql -e "SHOW GRANTS FOR 'zabbix'@'localhost';"
# смотрим, что у него есть права на zabbix.*

mysql -e "SHOW VARIABLES LIKE 'log_bin_trust_function_creators';"
# проверяем текущее значение (должно быть 0 после шага 5)

-2


9) Настраиваем Zabbix server и PHP/Apache

sed -i "s/^# DBPassword=.*/DBPassword=StrongP@ssw0rd!/; s/^DBPassword=.*/DBPassword=StrongP@ssw0rd!/" /etc/zabbix/zabbix_server.conf
# прописываем пароль DB для Zabbix-сервера (замени на свой если надо)

grep -n 'date.timezone' /etc/apache2/conf-available/zabbix.conf || echo 'php_value date.timezone "Europe/Amsterdam"' >> /etc/apache2/conf-available/zabbix.conf
# гарантируем таймзону PHP для фронтенда Zabbix

a2enconf zabbix # включаем конфиг фронтенда Zabbix в Apache

systemctl reload apache2 # мягкая перезагрузка Apache для применения настроек


10) Запускаем службы Zabbix и включаем автозапуск
systemctl enable --now zabbix-server zabbix-agent # автозапуск и старт сервера Zabbix и агента на этом хосте

systemctl status zabbix-server --no-pager -l # проверяем, что процесс запустился без ошибок

Увидим enabled если все работает и установилось правильно
Увидим enabled если все работает и установилось правильно


11) Открываем порты (если включён UFW)
ufw allow 80/tcp
# HTTP фронтенд

ufw allow 443/tcp
# (опционально) HTTPS, если затем подключишь TLS

ufw allow 10050/tcp
# вход агента (agentd/agent2)

ufw allow 10051/tcp
# (опционально) если планируешь внешние прокси/активные агенты

12) Заходим на сайт http://ваш_ip/zabbix/setup.php

-4

-5
-6
-7
-8
Логин: Admin / Пароль: zabbix
Логин: Admin / Пароль: zabbix

-10

13) Русифицируем
sudo locale -a
cat /usr/share/i18n/SUPPORTED | grep ru_

sudo locale-gen ru_RU
sudo service apache2 restart

-11



Установка SSL сертификата Let’s Encrypt

1) Ставим Certbot с модулем для Apache
sudo apt update
# обновляем индекс пакетов

sudo apt -y install certbot python3-certbot-apache
# ставим certbot и интеграцию с Apache

sudo certbot --apache
# Получаем сертификат интерактивно
# Так же попросит написать имя домена

-12


2) Проверяем, что Zabbix теперь отдаётся по HTTPS
в нашем случаем ставлю SSL на свой тестовый домен it-cube24.ru
curl -I https://it-cub24.ru/zabbix
# запрашиваем только заголовки; ожидаем HTTP/200 (или 302 на /index.php) и протокол HTTPS

curl -I http://it-cub24.ru/zabbix
# проверяем редирект с HTTP на HTTPS; ожидаем 301/302 ->
https://it-cub24.ru/...

или переходим на сайт
https://ваш_домен/zabbix/

посмотреть данные сертификата
openssl s_client -connect it-cub24.ru:443 -servername it-cub24.ru </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -dates


3) Убеждаемся, что фронтенд Zabbix подключён в Apache и таймзона задана
a2enconf zabbix
# включаем конфиг фронтенда Zabbix (если вдруг не включён)

grep -n 'date.timezone' /etc/apache2/conf-available/zabbix.conf || echo 'php_value date.timezone "Europe/Amsterdam"' >> /etc/apache2/conf-available/zabbix.conf
# гарантируем установку таймзоны PHP для корректных графиков/логов

systemctl reload apache2
# мягкая перезагрузка Apache для применения настроек

4) Проверяем автопродление (должно уже стоять таймером)
systemctl status certbot.timer
# убеждаемся, что таймер активен и будет запускать renew

certbot renew --dry-run
# тестовое «пробное» продление без выпуска боевого сертификата — должно пройти без ошибок

-13

Заметка
лежат файлы сертификата тут (в вашем случае другой (свой домен) домен)
/etc/letsencrypt/live/it-cub24.ru/fullchain.pem # цепочка сертификатов
/etc/letsencrypt/live/it-cub24.ru/privkey.pem # приватный ключ