Drupal — CMS и фреймворк для разработки сложных веб-приложений, входящий в тройку ведущих (наряду с WordPress и Joomla). Drupal 8+ построен на Symfony и Twig — выбор для проектов с высокими требованиями к гибкости структур данных и безопасности.
Архитектура Drupal 10
- Symfony Components — Routing, DependencyInjection, HttpFoundation, EventDispatcher, Console.
- Twig — шаблонизатор с автоэскейпингом (защита от XSS по умолчанию).
- Composer — управление зависимостями;
composer require drupal/ctoolsустанавливает модули. - JSON:API / REST API — встроенный headless-режим без дополнительных модулей.
- Typed Data API — строгая типизация полей контента.
- Configuration Management — вся конфигурация в YAML-файлах для хранения в Git.
Когда выбирают Drupal
- Сложные структуры данных с несколькими типами контента и сложными связями.
- Многосайтовые сети с общей базой (Drupal Multisite).
- Высокие требования к безопасности: NASA, BBC, правительственные сайты ряда стран.
- Headless CMS с выдачей контента через JSON:API на фронтенд (Next.js, React).
- Сложные права доступа: Drupal предоставляет гранулярную ролевую модель с permissions на уровне нод.
История
Drupal создан Дрисом Байтаертом (Dries Buytaert) в 2000 году как форумный движок в Антверпенском университете. Drupal.org запущен в январе 2001 года. Drupal 7 (2011) — самая долгоиграющая версия (EOL февраль 2025). Drupal 8 (2015) — революционная переработка на Symfony. Drupal 10 (декабрь 2022) требует PHP 8.1+ и Symfony 6.
Drupal в хостинге
Системные требования Drupal 10: PHP 8.1+, MySQL/MariaDB 10.3.7+ или PostgreSQL 14+, Apache/Nginx, минимум 256 МБ PHP memory_limit. Для production рекомендован VPS от 2 ГБ RAM — Drupal активно использует кэш. Кэширование: встроенные Internal Page Cache и Dynamic Page Cache, плюс поддержка Redis/Memcached через модули. Управление через ISPmanager или Drush (CLI-инструмент Drupal для управления конфигурацией и базой).
Сравнение Drupal и WordPress
| Параметр | Drupal 10 | WordPress 6.x |
|---|---|---|
| Сложность настройки | Высокая | Низкая |
| Гибкость типов контента | Очень высокая | Средняя (CPT) |
| Безопасность | Высокая (строже стандарты) | Средняя (зависит от плагинов) |
| Headless CMS | JSON:API из коробки | REST API / WPGraphQL плагин |
| Производительность | Хорошая с кэшем | Хорошая с кэшем |
| Экосистема | ~50 000 модулей | ~60 000 плагинов |
Производительность и кэширование
Drupal без кэша медленнее WordPress из-за Symfony overhead. С правильно настроенным кэшем — сопоставимы. Internal Page Cache кэширует страницы для анонимных пользователей в базе данных. Dynamic Page Cache — кэширует части страниц с плейсхолдерами. Для высоких нагрузок: Drupal + Redis как бэкенд кэша + Varnish как reverse proxy для статики.
Drush — CLI для Drupal
Drush (Drupal Shell) — командная строка для управления Drupal без браузера:
drush cr # сбросить все кэши
drush updb # применить обновления БД
drush cim # импортировать конфигурацию из YAML
drush cex # экспортировать конфигурацию в YAML
drush uli # сгенерировать ссылку для входа
Configuration Management в Drupal 8+ — вся конфигурация сайта в YAML-файлах под контролем Git. Изменение типа контента в dev-окружении → drush cex → коммит → drush cim на production. Без ручных правок базы данных через phpMyAdmin.