Ответ на вопрос
Drupal
Drupal (произносится «дру́пал»; название происходит от нидерл. druppel — «капля») — свободная система управления содержимым (CMS) и фреймворк управления содержимым (CMF), написанный преимущественно на PHP и распространяемый по GNU General Public License версии 2 или более поздней[1]. Drupal применяется для создания веб-сайтов и веб-приложений, в том числе систем со структурированным содержимым, разграничением прав доступа, редакционными процессами, многоязычностью и веб-API[2][3].
Функциональность Drupal разделена между ядром (Drupal core) и расширениями — модулями и темами оформления. Современные версии используют компоненты Symfony, шаблонизатор Twig, менеджер зависимостей Composer, объектно-ориентированную архитектуру, систему сервисов и унифицированную модель сущностей[4].
По состоянию на сентябрь 2026 года Drupal использовался примерно на 0,6 % обследуемых веб-сайтов и на 0,9 % сайтов с определяемой CMS; среди наиболее посещаемых ресурсов его доля была выше[5]. В 2023 году Drupal был зарегистрирован как цифровое общественное благо (Digital Public Good); в 2025 году этот статус был подтверждён повторной оценкой[6].
Общие сведения
| Drupal | |
|---|---|
| Тип | система управления содержимым, фреймворк управления содержимым |
| Автор | Дрис Бёйтарт |
| Разработчик | сообщество Drupal |
| Написана на | PHP |
| Операционная система | кроссплатформенная |
| Первый выпуск | 15 января 2001 |
| Последняя версия | 11.4.7 (16 сентября 2026) |
| Репозиторий | git.drupalcode.org/proje… |
| Лицензия | GNU GPL 2.0 или более поздняя |
| Сайт | drupal.org |
История
Возникновение и раннее развитие
Разработка Drupal началась в 2000 году, когда студент Антверпенского университета Дрис Бёйтарт создал сайт для обмена сообщениями внутри студенческой сети[7]. Название связано с доменом Drop.org и нидерландским словом druppel («капля»). Первый публичный выпуск Drupal 1.0 состоялся 15 января 2001 года. В последующих версиях развивались модульная архитектура, управление пользователями, таксономия, локализация и административные средства[8].
Drupal 7 и Drupal 8
Drupal 7.0 вышел 5 января 2011 года[9]. В нём получили развитие Field API и Database API, а в ядро вошла поддержка RDF и RDFa. Поддержка ветки завершилась 5 января 2025 года[10].
Drupal 8.0.0 был выпущен 19 ноября 2015 года и стал существенным архитектурным переходом в развитии системы[11]. В ядро были интегрированы компоненты Symfony, PHPTemplate заменён Twig, расширено применение объектно-ориентированного программирования, переработаны Entity API и Field API и введена штатная система управления конфигурацией[12].
Drupal 9—11 и Drupal CMS
Drupal 9.0.0 был выпущен 3 июня 2020 года и в значительной степени продолжал архитектуру Drupal 8: из ядра удалялись устаревшие API и обновлялись внешние зависимости[13]. Такой подход закрепил модель обновления, при которой функциональные изменения преимущественно включаются в минорные версии, а основные релизы используются для удаления устаревших интерфейсов и обновления крупных зависимостей[14].
Drupal 10.0.0 был выпущен в декабре 2022 года, Drupal 11.0.0 — в августе 2024 года[15][16]. В 2025 году была выпущена предварительно настроенная сборка Drupal CMS 1.0[17]. По состоянию на 18 сентября 2026 года актуальным стабильным выпуском ветки 11.4 являлся Drupal 11.4.7 от 16 сентября 2026 года[18]. Первый альфа-выпуск Drupal 12 был опубликован 2 сентября 2026 года; стабильный выпуск запланирован на декабрь 2026 года[19][16].
Основные версии
Основные версии Drupal образуют несколько поколений. Drupal 1.0 был опубликован 15 января 2001 года; в версиях 2—4 развивались базовые механизмы публикации, модульность, управление пользователями и таксономия. Drupal 5.0 (2007) получил веб-установщик и обновлённый административный интерфейс, а Drupal 6.0 (2008) развивал локализацию, темы и механизмы производительности[8].
Drupal 7.0 (2011) расширил Field API и Database API и включил RDF/RDFa. Drupal 8.0 (2015) перешёл к архитектуре на основе Symfony и Twig и получил штатное управление конфигурацией. Drupal 9.0 (2020) продолжил архитектуру Drupal 8 с удалением устаревших API; Drupal 10.0 вышел в 2022 году, а Drupal 11.0 — в 2024 году[9][11][13][15][16].
Начиная с Drupal 8 изменилась модель развития основных версий. Переход к семантическому версионированию позволил включать новые функциональные возможности в минорные выпуски без ожидания следующей основной версии. Поэтому различия между последовательными основными версиями стали в меньшей степени связаны с полной переработкой архитектуры, а в большей — с удалением ранее объявленных устаревшими API и обновлением системных требований и внешних зависимостей[20].
Эта модель проявилась при переходе от Drupal 8 к Drupal 9: Drupal 9.0 был выпущен одновременно с Drupal 8.9 и отличался от него главным образом обновлёнными зависимостями и удалением устаревшего программного кода[13]. В современной схеме основные версии выпускаются приблизительно раз в два года, а минорные функциональные выпуски — примерно раз в шесть месяцев[21].
Архитектура
Ядро, сервисы и расширяемость
Архитектура Drupal основана на разделении ядра и устанавливаемых расширений. Ядро содержит API и подсистемы обработки HTTP-запросов, маршрутизации, управления пользователями и правами доступа, сущностями, конфигурацией, базой данных, представлением и кэшированием. Дополнительная функциональность реализуется модулями, а визуальное представление — темами[4][3].
Начиная с Drupal 8 платформа использует компоненты Symfony, включая инфраструктуру HTTP-запросов, маршрутизацию, контейнер сервисов и диспетчер событий. Общая функциональность во многих случаях оформляется как сервисы, зарегистрированные в контейнере внедрения зависимостей. Это позволяет отделять код, использующий определённую функцию, от её конкретной реализации[22].
Современные модули описывают метаданные и часть конфигурации в YAML-файлах; маршруты, сервисы и другие элементы разделены между специализированными механизмами. Система хуков продолжает использоваться наряду с сервисами и событиями Symfony; с Drupal 11.1 поддерживаются также объектно-ориентированные реализации хуков[23].
Одним из основных механизмов расширяемости является Plugin API. Плагины представляют взаимозаменяемые реализации определённых типов функциональности. На Plugin API основаны блоки, типы и форматтеры полей, виджеты, эффекты обработки изображений и ряд компонентов Views[24].
Сущности, поля и конфигурация
Центральным элементом модели данных современного Drupal является Entity API. Система различает сущности содержимого (content entities) и конфигурационные сущности (configuration entities)[25]. К сущностям содержимого относятся материалы, пользователи, комментарии, файлы и термины таксономии. Они могут иметь типизированные поля, переводы и ревизии. Конфигурационные сущности представляют структуру и настройки приложения.
Field API позволяет добавлять к сущностям текстовые, числовые, файловые, ссылочные и другие поля. Ссылки на сущности используются для построения взаимосвязанных моделей данных. Общая модель позволяет применять к различным объектам сходные механизмы полей, прав доступа, переводов, ревизий и режимов отображения.
Configuration API отделяет переносимые настройки от пользовательского содержимого. Активная конфигурация обычно хранится в базе данных, а экспортированная может представляться YAML-файлами и помещаться под управление системы управления версиями[12]. Например, конкретная публикация является содержимым, тогда как определение её типа, полей и режимов отображения относится к конфигурации.
Drupal предоставляет также Database API — уровень абстракции над поддерживаемыми СУБД, построенный поверх PDO. Он предоставляет единый интерфейс выполнения и построения запросов; для операций с объектами более высокого уровня обычно используется Entity API[26].
Представление, темы и кэширование
Формирование пользовательского интерфейса основано на Render API. Компоненты могут возвращать рендер-массивы (render arrays), описывающие структуру элементов и связанные метаданные; затем они преобразуются в итоговое представление с использованием шаблонов Twig[27]. Темы отвечают преимущественно за визуальное представление. В Drupal 10.3 стабильной частью системы стали Single-Directory Components (SDC), объединяющие шаблон компонента, метаданные и связанные CSS- и JavaScript-файлы[28].
Кэширование тесно связано с Render API. Кэшируемые элементы могут содержать контексты, теги и максимальный срок хранения: контексты учитывают зависимость вывода от языка, URL или пользователя, а теги позволяют инвалидировать кэш после изменения связанных данных. Internal Page Cache предназначен преимущественно для полностью сформированных страниц анонимных пользователей, Dynamic Page Cache позволяет повторно использовать кэшируемые части страниц, а BigPipe — передавать основную часть страницы до завершения формирования отдельных динамических фрагментов[29][30].
Управление содержимым
Типы содержимого, таксономия и Views
Drupal позволяет определять собственные типы содержимого и наборы полей. Материалы могут классифицироваться средствами таксономии: словари и термины используются для тематической и иерархической классификации. Содержимое может иметь разные формы редактирования и режимы отображения; общая модель полей используется не только для материалов, но и для других сущностей[3].
Views — подсистема построения выборок и представлений данных. Она позволяет выбирать материалы, пользователей, термины таксономии и другие сущности, применять фильтрацию, сортировку, связи и различные форматы вывода[31]. Views используется для создания списков, страниц, блоков и административных представлений без непосредственного написания SQL-запросов. Первоначально подсистема развивалась как отдельный модуль, а с Drupal 8 входит в ядро.
Редакционные процессы
Для редакционных процессов используются ревизии, Workflows и Content Moderation. Они позволяют задавать состояния публикации, например черновик, редакционная проверка и опубликованный материал, а также разрешённые переходы между ними. Ревизии сохраняют последовательные состояния сущности и могут использоваться при модерации изменений.
Workspaces предоставляет механизм подготовки группы изменений отдельно от основного опубликованного состояния сайта. Изменения нескольких объектов могут объединяться в рабочее пространство и публиковаться совместно[32].
Многоязычность и доступность
Современный Drupal включает в ядро средства локализации интерфейса и перевода содержимого. Переводимыми могут быть интерфейс, сущности, поля и часть конфигурации; поддерживаются языки с различными направлениями письма. Переводы сущностей используют общие механизмы прав доступа, ревизий и представления. Использование Drupal для многоязычных информационных систем рассматривалось в научной литературе, в том числе применительно к библиотечным веб-системам[33].
В разработке Drupal предусмотрены требования веб-доступности. Стандарты проекта ориентируют публичные интерфейсы на WCAG 2.2 уровня AA, а интерфейсы средств создания содержимого — на ATAG 2.0[34]. Соответствие ядра этим требованиям не означает автоматического соответствия конечного сайта: результат зависит также от тем, модулей, конфигурации и содержимого.
Веб-API и decoupled-архитектура
Drupal может использоваться как традиционная серверная CMS, непосредственно формирующая HTML, либо как система управления структурированным содержимым для внешних клиентских приложений. В последнем случае Drupal выполняет функции хранилища, редакционного интерфейса и уровня доступа к данным, тогда как пользовательский интерфейс создаётся отдельно. Такой подход обычно называют decoupled, или headless CMS.
Ядро предоставляет средства REST, а модуль JSON:API реализует программный интерфейс, интегрированный с системой сущностей, авторизацией, правами доступа и кэшированием[35]. Такая архитектура позволяет использовать один источник структурированного содержимого для различных клиентских приложений.
Расширения и экосистема
Модули, темы и Composer
Модули являются основным способом расширения функциональности Drupal. Они могут предоставлять новые типы сущностей, административные интерфейсы, интеграции с внешними системами, средства поиска, электронной коммерции и другие функции. В официальном каталоге представлены десятки тысяч проектов модулей различных поколений и состояний поддержки[36]. Число зарегистрированных проектов не совпадает с числом расширений, совместимых с текущей версией, поскольку каталог включает также устаревшие и неподдерживаемые проекты.
Темы определяют визуальное представление страниц и компонентов. Composer является стандартным инструментом управления PHP-зависимостями современных версий Drupal и используется для установки ядра и расширений, фиксации версий зависимостей и обновления пакетов[37].
Recipes
Recipes («рецепты») представляют переносимые наборы действий над конфигурацией и расширениями. Рецепт может включать установку модулей, создание типов содержимого, настройку полей, ролей и других параметров[38]. Recipes используются, в частности, при формировании предварительно настроенных возможностей Drupal CMS.
Безопасность
В проекте действует Drupal Security Team, координирующая обработку сообщений об уязвимостях и публикацию бюллетеней безопасности для поддерживаемых веток ядра и расширений, включённых в программу security coverage[39]. В бюллетенях указываются затронутые версии, уровень критичности, условия эксплуатации и рекомендуемые исправленные выпуски.
Одной из наиболее известных уязвимостей стала SA-CORE-2014-005, получившая неофициальное название Drupalgeddon. Ошибка в Database Abstraction API Drupal 7 допускала SQL-инъекцию без предварительной аутентификации и могла привести к компрометации сайта[40]. В 2018 году термин Drupalgeddon2 получил распространение применительно к другой критической уязвимости, допускавшей при определённых условиях удалённое выполнение кода; после публикации исправления наблюдались массовые попытки эксплуатации[41].
В исследованиях безопасности систем управления содержимым к базовым мерам защиты относят своевременное обновление ядра и расширений, сокращение количества необязательных сторонних компонентов, разграничение доступа и регулярное резервное копирование[42]. Безопасность Drupal и других CMS рассматривалась также в сравнительных исследованиях; их результаты относятся к конкретным поколениям программного обеспечения и используемым методикам[43].
Сообщество и управление проектом
Drupal разрабатывается международным распределённым сообществом, в которое входят разработчики ядра и расширений, специалисты по интерфейсам и доступности, переводчики, авторы документации, тестировщики и организаторы мероприятий. Вклад осуществляется как добровольными участниками, так и сотрудниками организаций, использующих или поддерживающих Drupal.
Техническое управление и разработка
Техническое управление Drupal Core основано на распределённых ролях. В проекте существуют core committers, сопровождающие подсистем (subsystem maintainers), тематические сопровождающие и координаторы стратегических инициатив[44]. Core committers отвечают за итоговую интеграцию изменений; сопровождающие участвуют в рецензировании, принятии технических решений и поддержании отдельных частей ядра.
Изменения проходят публичное обсуждение, рецензирование и автоматизированное тестирование. Для крупных направлений создаются стратегические инициативы. В проекте действует система учёта вклада, охватывающая написание кода, тестирование, рецензирование и документацию. В 2026 году начался перевод системы задач проекта в GitLab, где задачи и merge requests размещаются рядом с исходным кодом и результатами непрерывной интеграции[45].
Drupal Association и мероприятия
Drupal Association — некоммерческая организация, поддерживающая инфраструктуру проекта, распространение программного обеспечения и мероприятия сообщества[46]. Её организационное управление отделено от технического управления ядром.
К международным мероприятиям сообщества относится DrupalCon. Кроме него проводятся региональные DrupalCamp, локальные встречи, обучающие мероприятия и сессии по внесению вклада в проект[47].
Распространённость и применение
По состоянию на сентябрь 2026 года Drupal использовался примерно на 0,6 % обследуемых веб-сайтов и на 0,9 % сайтов с определяемой CMS[5]. Среди наиболее посещаемых ресурсов его доля была выше: около 3,6 % среди первого миллиона сайтов с известной CMS, 6,0 % среди первых 100 тысяч и 6,8 % среди первых 10 тысяч. Эти показатели зависят от методики выборки и возможности автоматически определить используемую технологию и не являются полным подсчётом установок.
Drupal применяется в государственных, образовательных, коммерческих и некоммерческих проектах. Одним из примеров централизованного государственного использования является австралийская платформа GovCMS, построенная на Drupal как общая система управления содержимым и веб-хостинга для государственных организаций[48]. Drupal используется также в веб-инфраструктуре Европейской комиссии, в том числе в специализированных информационных платформах[49].
В высшем образовании и библиотечной сфере Drupal применяется для институциональных веб-платформ, многоязычных систем и публикации структурированных данных[50][33][51]. В российской университетской практике также описано применение Drupal как основы институционального сайта с несколькими функциональными подсистемами[52].
В зависимости от задач система может использоваться как традиционная CMS, многосайтовая платформа, backend в decoupled-архитектуре либо основа специализированного дистрибутива.
Рынок в России
Доступные оценки распространённости Drupal в России зависят от выборки и способа определения используемой CMS. В исследовании доменной зоны .RU за январь 2024 года было проверено 5 465 652 домена; CMS удалось определить примерно на 23,2 % обследованных доменов. Drupal был обнаружен примерно на 22,2 тыс. сайтов, что соответствовало 1,75 % сайтов с определённой CMS и 3,10 % сайтов, использовавших бесплатные CMS[53].
Эти показатели характеризуют технически обнаруженные установки в доменной зоне .RU и не эквивалентны доле Drupal в денежном выражении, количеству организаций-пользователей или объёму услуг разработки и сопровождения. Поэтому данные разных рейтингов и исследований рынка CMS непосредственно сопоставимы только при одинаковой методике подсчёта.
Исследования и сравнительные оценки
Drupal рассматривался в научных и профессиональных исследованиях наряду с Joomla! и WordPress. Сравнительные работы анализировали производительность, функциональность, безопасность и сложность использования; их результаты зависят от конкретных версий программного обеспечения, конфигурации серверов, набора расширений и выбранных критериев.
В исследовании 2011 года сравнивалась производительность нескольких CMS; его результаты характеризуют поколения систем начала 2010-х годов и конкретные сценарии тестирования[54]. В исследовании 2018 года были построены сопоставимые сайты на Drupal, WordPress и Joomla и проведено сравнение функциональности, сложности управления и отдельных характеристик безопасности. Использовавшиеся версии относились к предыдущему поколению платформ, поэтому результаты характеризуют состояние систем соответствующего периода[55].
Сравнение Drupal с WordPress, Joomla, MODX и другими способами создания веб-ресурсов проводилось также в российской научной литературе[56]. Отдельные публикации посвящены применению Drupal в многоязычных системах, цифровых библиотеках, проектах связанных данных и исследованиях безопасности[33][51][43][42].
Оценки и ограничения
В сравнительных публикациях среди особенностей Drupal отмечаются развитая модель структурированного содержимого, возможность детальной настройки пользовательских ролей, таксономия и расширяемость посредством модулей и API[55][3]. Эти механизмы позволяют использовать систему в проектах со сложной моделью данных, несколькими редакционными ролями и интеграцией с внешними сервисами.
Вместе с тем сравнительные исследования характеризовали Drupal как более сложную в освоении и администрировании систему по сравнению с некоторыми другими распространёнными CMS; расширение функциональности может требовать учёта зависимостей между модулями и более высокой квалификации разработчиков[55][56]. Такие оценки относятся к конкретным версиям и методикам исследований и не являются универсальной характеристикой всех проектов на Drupal.
Модульная архитектура предоставляет возможности расширения, однако сторонние модули различаются по состоянию поддержки и совместимости с актуальными версиями[36]. Использование ядра не требует покупки лицензии на CMS, однако затраты на разработку, инфраструктуру и сопровождение зависят от масштаба и сложности проекта[1].
Лицензирование
Drupal распространяется по лицензии GNU General Public License версии 2 или любой более поздней версии. Участники сохраняют авторские права на внесённый ими код, предоставляя его в рамках совместимой свободной лицензии проекта[1]. Расширения, распространяемые через инфраструктуру проекта и являющиеся производными работами Drupal, также должны соответствовать лицензионной политике. Использование Drupal как серверного программного обеспечения для предоставления веб-сайта само по себе не является распространением копии программы посетителям сайта.
Примечания
Литература
- Гениатулина Е. В. CMS — системы управления контентом. — Новосибирск: Изд-во НГТУ, 2015. — 63 с. — ISBN 978-5-7782-2696-8.
- Byron, Angela; Berry, Addison; De Bondt, Bruno. Using Drupal (англ.). — 2nd Edition. — O'Reilly Media, 2012. — 494 p. — ISBN 978-1-4493-0554-3.
- Melançon, Benjamin; Luisi, Jacine; Négyesi, Károly et al. The Definitive Guide to Drupal 7 (англ.). — Apress, 2011. — 1112 p. — ISBN 978-1-4302-3135-6. — doi:10.1007/978-1-4302-3136-3.
- Sipos, Daniel. Drupal 8 Module Development (англ.). — Packt, 2017. — 566 p. — ISBN 978-1-78216-877-5.
- Мальцева В. В.; Фролова А. С. Анализ web-технологий для создания онлайн-площадки // Молодой исследователь Дона. — 2020. — № 2 (23). — С. 126—130.
- Васильев Д. А.; Прокопова Н. С. Анализ подходов к повышению безопасности интернет-сайтов, развёрнутых с использованием систем наполнения контентом // Auditorium. Электронный научный журнал Курского государственного университета. — 2017. — № 2 (14). — С. 92—99.
- Thompson, Keri; Richard, Joel. Moving Our Data to the Semantic Web: Leveraging a Content Management System to Create the Linked Open Library (англ.) // Journal of Library Metadata. — 2013. — Vol. 13, no. 2—3. — P. 290—309. — doi:10.1080/19386389.2013.828551.
- Kumar Ray, Aswini; Ramesh, D. B. Multilingual Content Management System using Drupal — A Case Study (англ.) // Journal of Information and Knowledge. — 2017. — Vol. 54, no. 5. — P. 225—235. — doi:10.17821/srels/2017/v54i5/107583.
- Martinez-Caro, Jose-Manuel; Aledo-Hernandez, Antonio-Jose; Guillen-Perez, Antonio; Sanchez-Iborra, Ramon; Cano, Maria-Dolores. A Comparative Study of Web Content Management Systems (англ.) // Information. — 2018. — Vol. 9, no. 2. — P. 27. — doi:10.3390/info9020027.
- Toma, Vlad. A Comparative Study on the Security of Web Content Management Systems (англ.) // The USV Annals of Economics and Public Administration. — 2021. — Vol. 21, no. 1(33). — P. 146—151. — doi:10.4316/aepa.2021.21.1(33).146-151.