Стэк:
Сервер: облачный
ОС: 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)
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 # проверяем, что процесс запустился без ошибок
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
13) Русифицируем
sudo locale -a
cat /usr/share/i18n/SUPPORTED | grep ru_
sudo locale-gen ru_RU
sudo service apache2 restart
Установка SSL сертификата Let’s Encrypt
1) Ставим Certbot с модулем для Apache
sudo apt update
# обновляем индекс пакетов
sudo apt -y install certbot python3-certbot-apache
# ставим certbot и интеграцию с Apache
sudo certbot --apache
# Получаем сертификат интерактивно
# Так же попросит написать имя домена
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
# тестовое «пробное» продление без выпуска боевого сертификата — должно пройти без ошибок
Заметка
лежат файлы сертификата тут (в вашем случае другой (свой домен) домен)
/etc/letsencrypt/live/it-cub24.ru/fullchain.pem # цепочка сертификатов
/etc/letsencrypt/live/it-cub24.ru/privkey.pem # приватный ключ