2026-03-13 17:12:26 +05:00
#!/bin/bash
###############################################################################
2026-03-16 12:19:59 +05:00
# Скрипт установки Zabbix 6.0 на Debian 12
# Конфигурация zabbix_server.conf - ТОЛЬКО необходимые правки
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-13 17:30:43 +05:00
set -e
2026-03-13 17:12:26 +05:00
# === КОНФИГУРАЦИЯ ===
DB_PASSWORD = "P@ssw0rd"
DB_NAME = "zabbix"
DB_USER = "zabbix"
ZABBIX_HOSTNAME = "mon.au-team.irpo"
TIMEZONE = "Asia/Yekaterinburg"
ADMIN_PASSWORD = "P@ssw0rd"
RED = '\033[0;31m'
GREEN = '\033[0;32m'
2026-03-13 17:30:43 +05:00
NC = '\033[0m'
2026-03-16 12:19:59 +05:00
log_info( ) { echo -e " ${ GREEN } [INFO] ${ NC } $1 " ; }
log_error( ) { echo -e " ${ RED } [ERROR] ${ NC } $1 " ; }
2026-03-13 17:12:26 +05:00
2026-03-16 12:19:59 +05:00
[ [ $EUID -ne 0 ] ] && { log_error "Запуск от root!" ; exit 1; }
2026-03-13 17:12:26 +05:00
log_info " Начало установки Zabbix на $( hostname) "
###############################################################################
2026-03-16 12:19:59 +05:00
# 1. РЕПОЗИТОРИИ YANDEX
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
log_info "Настройка репозиториев..."
2026-03-13 17:12:26 +05:00
cp /etc/apt/sources.list /etc/apt/sources.list.bak.$( date +%F-%H%M)
2026-03-16 12:19:59 +05:00
cat > /etc/apt/sources.list << 'EOF'
2026-03-13 17:12:26 +05:00
deb https://mirror.yandex.ru/debian bookworm main contrib non-free non-free-firmware
deb https://mirror.yandex.ru/debian bookworm-updates main contrib non-free non-free-firmware
deb https://mirror.yandex.ru/debian bookworm-backports main contrib non-free non-free-firmware
deb https://mirror.yandex.ru/debian-security bookworm-security main contrib non-free non-free-firmware
EOF
apt-get update -qq
###############################################################################
# 2. У С Т А Н О В К А ПАКЕТОВ
###############################################################################
2026-03-16 12:19:59 +05:00
log_info "Установка пакетов..."
2026-03-13 17:12:26 +05:00
DEBIAN_FRONTEND = noninteractive apt-get install -y \
2026-03-16 12:19:59 +05:00
zabbix-server-mysql zabbix-frontend-php zabbix-agent \
mariadb-server mariadb-client apache2 libapache2-mod-php \
php-mysql php-gd php-xml php-mbstring php-bcmath php-ldap wget curl gnupg2
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
# 3. БАЗА ДАННЫХ
2026-03-13 17:12:26 +05:00
###############################################################################
log_info "Настройка MariaDB..."
systemctl enable --now mariadb
2026-03-13 17:30:43 +05:00
for i in { 1..30} ; do
2026-03-16 12:19:59 +05:00
mysql -u root -e "SELECT 1;" & >/dev/null && break || sleep 1
2026-03-13 17:30:43 +05:00
done
2026-03-13 17:12:26 +05:00
mysql -u root << EOF
2026-03-13 17:30:43 +05:00
DROP DATABASE IF EXISTS ${ DB_NAME } ;
CREATE DATABASE ${ DB_NAME } CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
DROP USER IF EXISTS '${DB_USER}' @'localhost' ;
CREATE USER '${DB_USER}' @'localhost' IDENTIFIED BY '${DB_PASSWORD}' ;
2026-03-13 17:12:26 +05:00
GRANT ALL PRIVILEGES ON ${ DB_NAME } .* TO '${DB_USER}' @'localhost' ;
FLUSH PRIVILEGES;
EOF
2026-03-16 12:19:59 +05:00
# Импорт схемы
2026-03-13 17:30:43 +05:00
if [ -d "/usr/share/zabbix-sql-scripts/mysql" ] ; then
SQL_DIR = "/usr/share/zabbix-sql-scripts/mysql"
else
2026-03-13 17:48:18 +05:00
SQL_DIR = "/usr/share/zabbix-server-mysql"
2026-03-13 17:30:43 +05:00
fi
zcat ${ SQL_DIR } /schema.sql.gz | mysql -u ${ DB_USER } -p" ${ DB_PASSWORD } " ${ DB_NAME }
2026-03-13 17:48:18 +05:00
[ -f " ${ SQL_DIR } /images.sql.gz " ] && zcat ${ SQL_DIR } /images.sql.gz | mysql -u ${ DB_USER } -p" ${ DB_PASSWORD } " ${ DB_NAME }
[ -f " ${ SQL_DIR } /data.sql.gz " ] && zcat ${ SQL_DIR } /data.sql.gz | mysql -u ${ DB_USER } -p" ${ DB_PASSWORD } " ${ DB_NAME }
2026-03-13 17:30:43 +05:00
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
# 4. НАСТРОЙКА zabbix_server.conf (МИНИМАЛЬНЫЕ ПРАВКИ!)
2026-03-13 17:12:26 +05:00
###############################################################################
log_info "Настройка zabbix_server.conf..."
2026-03-16 12:19:59 +05:00
CONF = "/etc/zabbix/zabbix_server.conf"
2026-03-13 17:12:26 +05:00
2026-03-16 12:19:59 +05:00
# Правим ТОЛЬКО нужные строки, не трогая остальное:
# 1. Параметры БД (раскомментируем и ставим значения)
sed -i " s|^#*DBName=.*|DBName= ${ DB_NAME } | " " $CONF "
sed -i " s|^#*DBUser=.*|DBUser= ${ DB_USER } | " " $CONF "
sed -i " s|^#*DBPassword=.*|DBPassword= ${ DB_PASSWORD } | " " $CONF "
2026-03-13 17:48:18 +05:00
2026-03-16 12:19:59 +05:00
# 2. LogFile
sed -i "s|^#*LogFile=.*|LogFile=/var/log/zabbix-server/zabbix_server.log|" " $CONF "
# 3. PidFile
sed -i "s|^#*PidFile=.*|PidFile=/run/zabbix/zabbix_server.pid|" " $CONF "
2026-03-13 17:48:18 +05:00
2026-03-16 12:19:59 +05:00
# 4. КРИТИЧНО: AllowUnsupportedDBVersions=1 В САМЫЙ КОНЕЦ файла
echo "AllowUnsupportedDBVersions=1" >> " $CONF "
2026-03-13 17:12:26 +05:00
2026-03-16 12:19:59 +05:00
# Проверка
if tail -1 " $CONF " | grep -q "AllowUnsupportedDBVersions=1" ; then
log_info "✓ Конфиг настроен"
2026-03-13 17:39:54 +05:00
else
2026-03-16 12:19:59 +05:00
log_error "✗ Ошибка настройки конфига"
2026-03-13 17:39:54 +05:00
exit 1
2026-03-13 17:12:26 +05:00
fi
2026-03-16 12:19:59 +05:00
chown root:zabbix " $CONF "
chmod 640 " $CONF "
2026-03-13 17:39:54 +05:00
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
# 5. PHP и Apache
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
log_info "Настройка PHP и Apache..."
2026-03-13 17:12:26 +05:00
PHP_INI = "/etc/php/8.2/apache2/php.ini"
2026-03-16 12:19:59 +05:00
[ -f " $PHP_INI " ] && sed -i " s|^;date.timezone =|date.timezone = ${ TIMEZONE } | " " $PHP_INI "
2026-03-13 17:12:26 +05:00
cat > /etc/apache2/sites-available/zabbix.conf << EOF
<VirtualHost *:80>
ServerName ${ ZABBIX_HOSTNAME }
DocumentRoot /usr/share/zabbix
<Directory /usr/share/zabbix>
Options FollowSymLinks
AllowOverride None
Require all granted
<IfModule mod_php.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value date.timezone ${ TIMEZONE }
</IfModule>
</Directory>
<Directory /usr/share/zabbix/conf>
Require all denied
</Directory>
<Directory /usr/share/zabbix/app>
Require all denied
</Directory>
<Directory /usr/share/zabbix/include>
Require all denied
</Directory>
<Directory /usr/share/zabbix/local>
Require all denied
</Directory>
ErrorLog \$ { APACHE_LOG_DIR} /zabbix-error.log
CustomLog \$ { APACHE_LOG_DIR} /zabbix-access.log combined
</VirtualHost>
EOF
2026-03-16 12:19:59 +05:00
a2ensite zabbix.conf 2>/dev/null || true
2026-03-13 17:12:26 +05:00
systemctl reload apache2
###############################################################################
2026-03-16 12:19:59 +05:00
# 6. Zabbix Agent
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 13:25:35 +05:00
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
# 7. ЗАПУСК
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
log_info "Запуск служб..."
2026-03-13 17:30:43 +05:00
systemctl daemon-reload
2026-03-16 12:19:59 +05:00
systemctl enable --now zabbix-server zabbix-agent
2026-03-13 17:12:26 +05:00
systemctl restart apache2
for i in { 1..30} ; do
2026-03-16 12:19:59 +05:00
systemctl is-active --quiet zabbix-server && { log_info "✓ Server запущен" ; break; }
2026-03-13 17:12:26 +05:00
sleep 1
done
if ! systemctl is-active --quiet zabbix-server; then
2026-03-16 12:19:59 +05:00
log_error "✗ Server не запустился! Лог:"
2026-03-13 17:48:18 +05:00
tail -20 /var/log/zabbix/zabbix_server.log 2>/dev/null || echo "Лог не найден"
2026-03-13 17:12:26 +05:00
exit 1
fi
###############################################################################
2026-03-16 12:19:59 +05:00
# 8. ПАРОЛЬ ADMIN
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
mysql -u root ${ DB_NAME } -e " DELETE FROM users WHERE username='Admin'; INSERT INTO users (userid,username,passwd,name,surname,url,autologin,autologout,lang,refresh,type,theme,failed_attempts,login_attempts) VALUES ('1','Admin',MD5(' ${ ADMIN_PASSWORD } '),'Zabbix','Administrator','',0,900,'en_US','30s',3,'darkblue',0,0); "
2026-03-13 17:12:26 +05:00
###############################################################################
2026-03-16 12:19:59 +05:00
# ФИНАЛ
2026-03-13 17:39:54 +05:00
###############################################################################
echo ""
2026-03-16 12:19:59 +05:00
echo "============================================================"
echo -e " ${ GREEN } ✓ Zabbix установлен! ${ NC } "
echo "============================================================"
echo " URL: http:// ${ ZABBIX_HOSTNAME } / "
echo "Логин: Admin"
echo " Пароль: ${ ADMIN_PASSWORD } "
echo "⚠️ Смените пароль после входа!"
echo "============================================================"