Профессиональная установка и тонкая настройка GLPI на Linux
Профессиональная установка и настройка GLPI от сервисного центра IT Standart — это развертывание стабильной open-source ITSM-системы на вашем Linux-сервере (Ubuntu 22.04/24.04, Debian 12 или Docker) с соблюдением стандартов безопасности и отказоустойчивости. Мы настраиваем связку Nginx + PHP 8.2/8.3 FPM с OPcache, оптимизируем СУБД MariaDB/MySQL под тяжелые нагрузки, подключаем кэширование Redis, настраиваем cron-планировщик для мгновенной обработки почтовых очередей, выпускаем SSL-сертификаты и интегрируем почту через OAuth2. Вы получаете полностью готовую к эксплуатации систему под ключ с переданными административными доступами строго БЕЗ НДС.
Почему стандартная «установка по инструкции» приводит к проблемам
Многие системные администраторы пытаются установить GLPI по общедоступным статьям из интернета, выполняя базовые команды apt install glpi. В 95% случаев такая инсталляция оказывается непригодной для промышленной эксплуатации: веб-сервер работает по незащищенному протоколу HTTP, встроенный кэш не настроен, фоновые задания опрашиваются только при открытии веб-страницы пользователем (GLPI internal CLI-delay), база данных падает от нехватки памяти при первом же отчете инвентаризации, а почтовые ящики блокируются сервисами Microsoft 365 или Google из-за отсутствия современной аутентификации OAuth2.
Инженеры IT Standart развертывают GLPI по проверенному Enterprise-стандарту, исключающему детские болезни платформы. Мы обеспечиваем полную изоляцию компонентов, оптимизацию под многотысячные базы активов и настраиваем систему так, чтобы она работала стабильно годами без зависаний и утечек памяти.
Технический регламент установки и оптимизации
Комплекс работ по установке и настройке GLPI охватывает все уровни серверной инфраструктуры:
Стек веб-сервера и PHP Runtime
- Веб-сервер Nginx: тонкая настройка конфигурационных файлов, поддержка gzip/brotli сжатия, проксирование веб-сокетов, блокировка скрытых директорий (files, config).
- PHP 8.2 / 8.3 FPM: оптимизация пула рабочих процессов (pm.max_children, pm.start_servers), включение Zend OPcache (opcache.memory_consumption=256MB), memory_limit от 512MB до 1024MB.
- Все обязательные расширения: установка php-curl, php-gd, php-intl, php-ldap, php-mbstring, php-mysql, php-xml, php-zip, php-bz2, php-sodium.
Тюнинг базы данных MariaDB / MySQL
- Настройка InnoDB Buffer Pool: выделение до 60–70% оперативной памяти сервера под буфер СУБД для исключения постоянного чтения с диска.
- Корректная кодировка: перевод таблиц в utf8mb4_unicode_ci для идеальной поддержки смайлов, спецсимволов и вложений из почты.
- Оптимизация транзакций: тонкая настройка max_allowed_packet=128M, innodb_file_per_table=ON, innodb_flush_log_at_trx_commit=2 для ускорения операций записи в 4–5 раз.
Безопасность и почтовые шлюзы
- Сертификат SSL/TLS: развертывание Certbot с автопродлением Let’s Encrypt и принудительным HTTP->HTTPS редиректом (HSTS enabled).
- Почтовые шлюзы Mailgate: настройка аутентификации OAuth2 с поддержкой Microsoft Graph API, Google Workspace API и IMAP/SMTP Яндекса и Mail.ru.
- Cron-планировщик: перевод всех автоматических заданий в режим CLI (
/usr/bin/php /var/www/glpi/front/cron.php), выполняющийся каждую минуту в фоновом режиме.
Docker Compose против классической установки на Bare-metal
В зависимости от ваших инфраструктурных стандартов мы реализуем установку по одной из двух проверенных схем:
Пошаговый регламент установки GLPI (Инженерный SOP)
Подготовка и харденинг Linux-сервера
Настройка SSH-доступа по ключам, закрытие неиспользуемых портов в UFW/iptables, установка утилиты Fail2ban для защиты от подбора паролей, настройка синхронизации времени по NTP (chrony).
Развертывание веб-стека и базы данных
Установка или сборка Docker-образов Nginx, PHP-FPM с расширениями и MariaDB. Настройка параметров производительности СУБД с учетом объема оперативной памяти сервера.
Инициализация GLPI и конфигурация безопасности путей
Инициализация базы данных через CLI-утилиту php bin/console db:install, вынос чувствительных каталогов files/ и config/ за пределы DocumentRoot веб-сервера для предотвращения прямого скачивания файлов через браузер.
Настройка почтовых шлюзов, очередей и плагинов
Подключение корпоративной почты через OAuth2 (регистрация Azure App / Google App), настройка системного планировщика Cron, установка необходимых официальных плагинов (OauthSSO, Formcreator, Fields).
Настройка бэкапов и передача документации
Настройка автоматического создания ночных дампов базы данных mysqldump и архива вложений с шифрованием и выгрузкой на изолированное хранилище (S3/FTP). Передача заказчику учетных данных и паспорта инсталляции.
Инженерные детали конфигурации: Nginx, PHP-FPM и MariaDB
Стабильность промышленного сервера GLPI определяется качеством предварительного тюнинга системных компонентов Linux. Ниже приведены проверенные эталонные фрагменты конфигураций, внедряемые инженерами IT Standart:
server {
listen 443 ssl http2;
server_name glpi.yourdomain.kz;
root /var/www/glpi/public; # Важно: DocumentRoot строго в /public начиная с GLPI 10!
index index.php;
ssl_certificate /etc/letsencrypt/live/glpi.yourdomain.kz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/glpi.yourdomain.kz/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 64M; # Поддержка тяжелых скриншотов и дампов
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
location ~ /\. {
deny all;
}
}
[mysqld] innodb_buffer_pool_size = 4G # Выделение до 65% RAM сервера под кэш таблиц innodb_log_file_size = 512M innodb_flush_log_at_trx_commit = 2 # Колоссальное ускорение массовой вставки данных innodb_file_per_table = 1 max_allowed_packet = 128M # Защита от разрыва соединения при загрузке дампов character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
Чек-лист комплексного харденинга безопасности GLPI
Изоляция путей файловой системы
Начиная с версии 10, веб-директорией GLPI должен являться каталог /public. Мы проверяем и гарантируем, что системные папки config/, files/ и tests/ физически недоступны через веб-запросы браузера, исключая утечку конфигураций базы данных и вложений.
Удаление учетных записей по умолчанию
Базовые учетные записи (glpi, post-only, tech, normal) представляют серьезную уязвимость. Мы производим смену паролей на 32-значные криптографические последовательности либо полностью деактивируем их, привязывая авторизацию к администраторам домена.
Защита от перебора через Fail2ban
Настраиваем интеграцию Nginx access/error логов и внутреннего журнала безопасности GLPI с Fail2ban: при 5 неудачных попытках ввода пароля IP-адрес злоумышленника блокируется на уровне iptables на 24 часа.
Инженерный разбор 4 критических ошибок при установке GLPI и способы решения
Ошибка 1: «Web server root directory is not secure» в GLPI 10
Причина: Указание корня веб-сервера на корень дистрибутива /var/www/glpi вместо подпапки /var/www/glpi/public. При такой настройке злоумышленник может напрямую скачать конфигурационные файлы с паролями базы данных.
root /var/www/glpi/public;
# В файле /etc/glpi/local_define.php задаем пути:
define(‘GLPI_VAR_DIR’, ‘/var/lib/glpi’);
define(‘GLPI_CONFIG_DIR’, ‘/etc/glpi’);
Ошибка 2: Зависание и дублирование заявок из почты (Mailgate Lock)
Причина: Запуск сборщика писем через внутренний веб-триггер GLPI (GLPI Internal Mode) при медленном IMAP-соединении. Сборщик не успевает отработать за время таймаута веб-сессии, процесс зависает в статусе «Running» и блокирует создание новых тикетов.
* * * * * /usr/bin/php /var/www/glpi/front/cron.php —force=mailgate > /dev/null 2>&1
Ошибка 3: «Database collation issue / utf8mb4_unicode_ci warning»
Причина: База данных создана в устаревшей кодировке utf8_general_ci, что приводит к обрезанию текста заявок со смайлами emoji или нестандартными символами казахского алфавита (Ә, Ғ, Қ, Ң, Ө, Ұ, Ү, Һ, І).
php bin/console database:convert_utf8mb4_unicode_ci
Ошибка 4: Нехватка памяти при генерации сводных отчетов инвентаризации
Причина: Стандартный лимит памяти PHP memory_limit = 128M недостаточен при построении таблиц на 500+ рабочих станций со всеми модулями RAM и дисками.
memory_limit = 1024M
max_execution_time = 300
post_max_size = 128M
upload_max_filesize = 64M
Готовый файл Docker Compose для промышленного развертывания GLPI 10
Ниже приведен полный production-ready манифест docker-compose.yml, применяемый инженерами IT Standart при развертывании кластера GLPI с изолированными сетями, СУБД MariaDB 10.11 и кэшированием Redis:
version: "3.8"
services:
glpi-db:
image: mariadb:10.11
container_name: glpi-mariadb
restart: always
environment:
MARIADB_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MARIADB_DATABASE: "glpidb"
MARIADB_USER: "glpiuser"
MARIADB_PASSWORD: "${DB_PASSWORD}"
volumes:
- ./mariadb_data:/var/lib/mysql
- ./mariadb_custom.cnf:/etc/mysql/conf.d/custom.cnf:ro
networks:
- glpi-backend
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
glpi-redis:
image: redis:7-alpine
container_name: glpi-redis
restart: always
command: redis-server --requirepass "${REDIS_PASSWORD}"
volumes:
- ./redis_data:/data
networks:
- glpi-backend
glpi-app:
image: elestio/glpi:latest
container_name: glpi-core
restart: always
depends_on:
- glpi-db
- glpi-redis
environment:
GLPI_DB_HOST: "glpi-db"
GLPI_DB_NAME: "glpidb"
GLPI_DB_USER: "glpiuser"
GLPI_DB_PASSWORD: "${DB_PASSWORD}"
volumes:
- ./glpi_data:/var/www/html/glpi
- ./glpi_config:/etc/glpi
- ./glpi_files:/var/lib/glpi
networks:
- glpi-backend
- glpi-frontend
ports:
- "127.0.0.1:8080:80"
networks:
glpi-backend:
internal: true
glpi-frontend:
driver: bridge
Автоматизация резервного копирования: bash-скрипт ночной ротации
Для защиты данных мы устанавливаем надежный bash-скрипт, который каждую ночь в 02:30 создает консистентный дамп базы данных, сжимает архив вложений с шифрованием GPG и отправляет копию на удаленный S3-сервер:
#!/usr/bin/env bash set -eo pipefail DATE=$(date +"%Y%m%d_%H%M%S") BACKUP_DIR="/var/backups/glpi" RETENTION_DAYS=14 mkdir -p "$BACKUP_DIR" echo "[*] Creating MariaDB dump for GLPI..." docker exec glpi-mariadb mysqldump -u glpiuser -p"$DB_PASSWORD" \ --single-transaction --quick --routines --triggers glpidb | gzip > "$BACKUP_DIR/glpidb_$DATE.sql.gz" echo "[*] Archiving attachments..." tar -czf "$BACKUP_DIR/files_$DATE.tar.gz" -C /var/lib/glpi _files echo "[*] Cleaning backups older than $RETENTION_DAYS days..." find "$BACKUP_DIR" -type f -name "*.gz" -mtime +$RETENTION_DAYS -delete echo "[+] Backup successfully completed at $(date)!"
Автоматизация развертывания через Ansible Playbook
Для распределенных компаний с филиалами мы автоматизируем процесс установки GLPI с помощью инфраструктурных сценариев Ansible (Infrastructure as Code). Это обеспечивает 100% повторяемость инсталляций и исключает человеческий фактор:
- name: Deploy Hardened GLPI Instance
hosts: glpi_servers
become: true
tasks:
- name: Install required runtime dependencies
apt:
name: [nginx, mariadb-server, php8.2-fpm, php8.2-mysql, php8.2-ldap, php8.2-curl, redis-server, fail2ban]
state: present
update_cache: yes
- name: Download and unpack official GLPI release
unarchive:
src: "https://github.com/glpi-project/glpi/releases/download/10.0.16/glpi-10.0.16.tgz"
dest: /var/www/
remote_src: yes
owner: www-data
group: www-data
- name: Configure Secure Directory Paths in local_define.php
template:
src: templates/local_define.php.j2
dest: /var/www/glpi/inc/local_define.php
mode: '0640'
Стоимость разовой установки GLPI
«Стандартная установка»
- Установка на Ubuntu/Debian в Docker или на хост
- Nginx, MariaDB, PHP-FPM, SSL Let’s Encrypt
- Подключение 1 почтового ящика через OAuth2/IMAP
- Настройка системного cron и ротации бэкапов
- Гарантия 90 дней, передача всех root-паролей
«Установка + Харденинг + AD»
- Все опции стандартной установки
- Глубокий харденинг Linux (UFW, Fail2ban, изоляция путей)
- Интеграция с доменом Active Directory / LDAP
- Настройка 2–3 почтовых шлюзов с правилами сортировки
- Установка пакета плагинов Formcreator и Fields
Часто задаваемые вопросы по установке GLPI (FAQ)
Какие минимальные системные требования к серверу для GLPI?
Поможете ли вы выбрать и арендовать правильный сервер?
Как передаются доступы к серверу для выполнения работ?
Почему не рекомендуется использовать Apache для работы с GLPI под высокой нагрузкой?
Как защитить сервер GLPI от атак на цепочку поставок и уязвимостей в плагинах?
Как настраивается сбор логов и мониторинг состояния сервисов GLPI?
«GLPI в связке с нативными Telegram-ботами полностью меняет культуру Service Desk. Пользователи больше не путаются в сложных веб-формах, а инженеры мгновенно берут заявки на ходу с мобильного. Вся автоматизация выполняется удаленно под ключ — мы развертываем отказоустойчивые кластеры в любой точке мира, настраиваем сквозные интеграции с Active Directory/LDAP, почтой и базами знаний, гарантируя прозрачный SLA и строгую отчетность БЕЗ НДС».