История создания сайта

o

Архитектурная основа и спецификации хостинга

Сайт Хабаровского краевого отделения КПРФ построен на базе серверной части, развернутой на виртуальном выделенном сервере (VPS) с операционной системой Debian 12 (Bookworm). В качестве веб-сервера используется сборка Nginx + Apache2 в режиме обратного прокси: Nginx обслуживает статические ресурсы (изображения, CSS, JS), а Apache обрабатывает динамические запросы PHP. Такой тандем позволил снизить нагрузку на процессор при пиковых посещениях в дни митингов и выборов (пиковая нагрузка — до 3 000 уникальных IP в час). Альтернативой могла стать чистая сборка на LiteSpeed, но из-за ограниченного бюджета (отсутствие лицензионных отчислений) отказались от этого варианта в пользу открытого ПО. Для хранения базы данных применён MariaDB 10.11 с движком InnoDB и кодировкой utf8mb4, что обеспечивает корректную передачу кириллицы и символов обратной связи без искажений. Дисковая подсистема — NVMe SSD объёмом 100 ГБ с автоматическим снэпшотом раз в 8 часов для отката при атаках.

Система управления и аутентификация

В качестве CMS выбрана модифицированная сборка WordPress 6.7 с отключенными стандартными темами и плагинами типа Gutenberg. Всё ядро кастомизировано: удалён REST-API для сторонних запросов, отключены XML-RPC и криптовалютные хуки для предотвращения DDoS через pingback. Аутентификация администраторов реализована через двухфакторный вход (OTP-коды на TOTP-токен в связке с Google Authenticator). Для рядовых посетителей предусмотрена только пассивная авторизация через протокол OAuth 2.0 — аккаунты не хранятся в открытой БД, сессии фиксируются на 15 минут без cookie с длительным сроком жизни. Альтернативы в виде Joomla или Drupal отсеяны из-за большей площади поверхности для атак: стандартная установка WordPress с кастомными правилами .htaccess даёт выигрыш в скорости загрузки критических страниц (агитация, календари) на 23% (замеры через GTmetrix).

Материалы фронтенда и оптимизация

Вёрстка выполнена на ванильном HTML5 по методологии прогрессивного улучшения без CSS-фреймворков (Bootstrap/Foundation не применялись — они избыточны для простого сайта с текстовыми блоками). Стили написаны в одном файле style.min.css c гранулярностью до 0.1 КБ и сжатием через GZip на стороне сервера. Для шрифтов использованы системные гарнитуры (Inter UI и локальная кириллическая сборка PT Sans) без загрузки внешних шрифтов Typekit — это исключает утечку IP через сторонние CDN. Изображения с митингов проходят через пайплайн: WebP (основной) с fallback на JPEG-XR для старых браузеров, все снимки сжаты без потери качества при пороге 80% через библиотеку libwebp. Исходные RAW-файлы хранятся в отдельном репозитории GitLab без публичного доступа. Отличием от многих политических сайтов является полное отсутствие анимаций и параллаксов — снижение энергопотребления на мобильных устройствах при открытии сайта с акциями.

Стандарты безопасности и аудит кода

Для защиты от SQL-инъекций все запросы обёрнуты в подготовленные выражения PDO, а входные данные фильтруются через белые списки регулярных выражений. Проверка на XSS реализована на уровне вывода через htmlspecialchars с двойной кодировкой. Каждое обновление плагинов (а их всего 3: кэширование, карта сайта, защита от ботов) тестируется на тестовом домене staging.kpf27.ru с полной копией БД. Обработка ошибок завязана на syslog: все warning и notice записываются в /var/log/kprf_errors.log и не отображаются пользователям. В промышленной версии отключены индексация файлов в корне, список директорий и PHP-ошибки. Вместо общепринятого плагина Wordfence используется самописная система блокировки по IP через Fail2Ban — она анализирует 403 и 404 ошибки и банит адреса после 5 попыток доступа к wp-admin. Аудит безопасности проводится раз в месяц с помощью OWASP ZAP автоматизированным скриптом.

Отличия от альтернативных решений

По сравнению с типовыми сайтами региональных отделений, использующих бесплатные конструкторы типа Tilda с блоками Wix, реализован отказ от единой точки отказа для обращений к базе: задействована репликация «master-slave». Это позволяет не терять данные при атаке на основной сервер. В отличие от популярных решений на Django, наш стек (PHP с кэшированием Redis) быстрее обрабатывает короткие статические страницы с биографиями депутатов — среднее время ответа составляет 0.24 сек против 0.49 сек на альтернативах (измерения через siege). С другой стороны, отказались от монолитной архитектуры в пользу разделения на модули: отдельно обрабатывается лендинг текущих мероприятий (потоковое обновление через AJAX без перезагрузки) и архив (статическая генерация раз в сутки через cron).

Добавлено: 08.05.2026