Drupal ( / ˈ d r uː p əl / ) [5] — это бесплатная система управления веб- контентом (CMS) с открытым исходным кодом, написанная на PHP и распространяемая по лицензии GNU General Public License . [4] [6] [7] Drupal предоставляет среду с открытым исходным кодом для не менее 14% из 10 000 лучших веб-сайтов по всему миру [8] и 1,2% из 10 миллионов лучших веб-сайтов [9] — от личных блогов до корпоративных, политических и правительственных сайтов. [10] Drupal также можно использовать для управления знаниями и делового сотрудничества. [11]
По состоянию на март 2022 года [обновлять]сообщество Drupal насчитывало более 1,39 миллиона участников, [12] [13] [14] включая 124 000 пользователей, активно вносящих свой вклад, [15] что привело к появлению более 50 000 бесплатных модулей, расширяющих и настраивающих функциональность Drupal, [16] более 3000 бесплатных тем, изменяющих внешний вид и поведение Drupal, [17] и не менее 1400 бесплатных дистрибутивов, которые позволяют пользователям быстро и легко настраивать сложный, специфичный для конкретного использования Drupal за меньшее количество шагов. [18]
Стандартный выпуск Drupal, известный как ядро Drupal , содержит основные функции, общие для систем управления контентом . К ним относятся регистрация и обслуживание учетных записей пользователей, управление меню, RSS- каналы, таксономия, настройка макета страницы и системное администрирование. Установка ядра Drupal может служить простым веб-сайтом, одно- или многопользовательским блогом, интернет-форумом или веб-сайтом сообщества, предоставляющим контент, создаваемый пользователями .
Drupal также описывает себя как фреймворк веб-приложений . [19] По сравнению с известными фреймворками, Drupal соответствует большинству общепринятых требований к функциям для таких веб-фреймворков. [20] [21]
Хотя Drupal предлагает сложный API для разработчиков, базовая установка веб-сайта и администрирование фреймворка не требуют навыков программирования. [22]
Drupal работает на любой вычислительной платформе , которая поддерживает как веб-сервер , способный работать с PHP, так и базу данных для хранения контента и конфигурации.
В 2023/2024 году Drupal получил более 250 000 евро от Немецкого государственного технологического фонда . [23]
Drupal изначально был написан Дрисом Байтаертом как доска объявлений для общения его друзей в общежитиях во время работы над магистерской диссертацией в Университете Антверпена . [34] [35] После окончания университета Байтаерт перенес сайт в общедоступный интернет и назвал его Drop.org. [34] В период с 2003 по 2008 год Дрис Байтаерт работал над получением степени доктора философии в Университете Гента . [36]
Название Drupal представляет собой английскую интерпретацию голландского слова druppel , что означает «капля» (как в капле воды). [37] Название произошло от ныне несуществующего Drop.org, код которого медленно эволюционировал в Drupal. Байтаерт хотел назвать сайт «dorp» (по-голландски «деревня») из-за его общественных аспектов, но допустил ошибку при проверке доменного имени и подумал, что ошибка звучит лучше. [38]
Drupal стал проектом с открытым исходным кодом в 2001 году. [38] Интерес к Drupal значительно возрос в 2003 году, когда он помог создать «DeanSpace» для Говарда Дина , одного из кандидатов в основной кампании Демократической партии США на президентских выборах 2004 года в США . DeanSpace использовал открытый исходный код Drupal для поддержки децентрализованной сети из примерно 50 разрозненных неофициальных веб-сайтов в поддержку Дина, которые позволяли пользователям напрямую общаться друг с другом, а также с кампанией. [39] После того, как Дин закончил свою кампанию, члены его веб-команды продолжили преследовать свой интерес к разработке веб-платформы, которая могла бы помочь политическому активизму, запустив CivicSpace Labs в июле 2004 года, «...первую компанию с постоянными сотрудниками, которая разрабатывала и распространяла технологию Drupal». [40] Другие компании также начали специализироваться на разработке Drupal. [41] [42]
К 2013 году на сайте Drupal были перечислены сотни поставщиков, предлагающих услуги, связанные с Drupal. [43]
По состоянию на 2014 год [обновлять]Drupal разрабатывается сообществом. [44] [ требуется обновление ] С июля 2007 года по июнь 2008 года сайт Drupal.org обеспечил более 1,4 миллиона загрузок программного обеспечения Drupal, что примерно на 125% больше, чем в предыдущем году. [45] [46]
По состоянию на январь 2017 года [обновлять]более 1 180 000 сайтов используют Drupal. [47] В их число входят сотни известных организаций, [48] включая корпорации, медиа и издательские компании, правительства, некоммерческие организации, [49] школы и частных лиц. Drupal выиграл несколько премий Packt Open Source CMS Awards [50] и три раза подряд выиграл Webware 100 [ требуется разъяснение ] . [51] [52]
Drupal 6 был выпущен 13 февраля 2008 года, [53] 5 марта 2009 года Байтаерт объявил о заморозке кода для Drupal 7 до 1 сентября 2009 года . [54] Drupal 7 был выпущен 5 января 2011 года, с вечеринками по случаю релиза в нескольких странах. [55] После этого поддержка Drupal 5 прекратилась, поддерживались только Drupal 7 и Drupal 6. [56]
Окончание поддержки Drupal 7 было запланировано на ноябрь 2021 года, но, учитывая влияние COVID-19 и продолжающееся широкое использование, окончание поддержки было отложено до 1 ноября 2023 года, и будет пересматриваться ежегодно. [57] Окончание поддержки Drupal 7 было продлено еще раз с июня 2023 года. Теперь оно назначено на 5 января 2025 года. Ожидается, что это будет последнее продление для Drupal 7. [58]
В октябре 2022 года Drupal выпустил ускоритель CMS с открытым исходным кодом , позволяющий управлять интерфейсом вне основной системы. [59] [60]
В сообществе Drupal «ядро» относится к совместно созданной кодовой базе, которая может быть расширена с помощью дополнительных модулей и — для версий до Drupal 8 — хранится вне папки «sites» установки Drupal. [61] (Начиная с версии 8, ядро хранится в своем собственном подкаталоге «core».) Ядро Drupal является стандартным элементом Drupal. Общие библиотеки, специфичные для Drupal, а также процесс начальной загрузки определяются как ядро Drupal; вся остальная функциональность определяется как модули Drupal, включая сам системный модуль.
В конфигурации сайта Drupal по умолчанию авторы могут добавлять контент как зарегистрированные или анонимные пользователи (по усмотрению администратора). Этот контент доступен посетителям веб-сайта с помощью различных выбираемых критериев. Начиная с Drupal 8, Drupal адаптировал некоторые библиотеки Symfony в ядро Drupal.
Основные модули также включают иерархическую систему таксономии , которая позволяет разработчикам категоризировать контент или помечать его ключевыми словами для более легкого доступа. [22]
Ядро Drupal включает модули, которые администратор может включить для расширения функциональности основного веб-сайта. [62] [63]
Основной дистрибутив Drupal предоставляет ряд функций, в том числе: [62]
Drupal включает в себя основные темы, которые настраивают «внешний вид» сайтов Drupal, [65] например, Garland и Bartik.
Модуль Color, представленный в ядре Drupal 5.0, позволяет администраторам изменять цветовую схему определенных тем через интерфейс браузера. [66]
По состоянию на сентябрь 2022 года Drupal доступен на 100 языках, включая английский (по умолчанию). [67] [68] Включена поддержка языков с письмом справа налево, таких как арабский , персидский и иврит . [69]
Локализация Drupal построена на основе gettext , библиотеки интернационализации и локализации GNU (i18n).
Drupal может автоматически уведомлять администратора о новых версиях модулей, тем или ядра Drupal. [69] Важно быстро обновляться после выпуска обновлений безопасности.
Перед обновлением настоятельно рекомендуется сделать резервную копию ядра, модулей, темы, файлов и базы данных. Если после обновления отображается какая-либо ошибка или новое обновление несовместимо с модулем, его можно быстро заменить резервной копией. В Drupal доступно несколько модулей резервного копирования.
15 октября 2014 года было объявлено об уязвимости SQL-инъекции и выпущено обновление. [70] Две недели спустя команда безопасности Drupal выпустила рекомендацию, в которой разъяснялось, что все должны действовать исходя из предположения, что любой сайт, не обновленный в течение 7 часов после объявления, был скомпрометирован автоматизированными атаками. [71] Таким образом, может быть чрезвычайно важно быстро применить эти обновления, и настоятельно рекомендуется использовать такой инструмент, как drush, чтобы упростить этот процесс.
До версии 7 в Drupal были функции, которые выполняли задачи, связанные с базами данных, такие как очистка SQL-запросов, префикс имен таблиц на нескольких сайтах и генерация правильных SQL-запросов. В частности, в Drupal 6 был представлен уровень абстракции, который позволял программистам создавать SQL-запросы без написания SQL.
Drupal 9 расширяет уровень абстракции данных, так что программисту больше не нужно писать SQL-запросы в виде текстовых строк. Он использует PHP Data Objects для абстрагирования базы данных. Microsoft написала драйвер базы данных для своего SQL Server . Drupal 7 поддерживает файловый движок базы данных SQLite , который является частью стандартного дистрибутива PHP.
Благодаря новому уровню абстракции базы данных Drupal 9 и возможности работы на веб-сервере Windows IIS разработчикам Windows теперь стало проще участвовать в сообществе Drupal.
Группа на Drupal.org посвящена вопросам Windows. [72]
С момента выпуска Drupal 7 доступность веб- сайтов в сообществе Drupal постоянно улучшается. [73] Drupal — это хорошая среда для создания сайтов, доступных для людей с ограниченными возможностями, поскольку многие из лучших практик были включены в Drupal Core.
В Drupal 8 было внесено множество улучшений по сравнению с рекомендациями Authoring Tool Accessibility Guidelines (ATAG) 2.0, которые поддерживают как доступную среду разработки, так и поддержку авторов в создании более доступного контента.
Команда по обеспечению доступности продолжает работу по выявлению и устранению барьеров доступности, а также по повышению осведомленности в сообществе.
Drupal 8 имеет хорошую семантическую поддержку для насыщенных веб-приложений через WAI-ARIA . Было сделано много улучшений как для посетителей, так и для администраторов Drupal, особенно:
Сообщество также добавило шлюз доступности для основных проблем в Drupal 8. [75]
Ядро Drupal является модульным , определяющим систему хуков и обратных вызовов , доступ к которым осуществляется изнутри через API . [76] Такая конструкция позволяет сторонним модулям и темам расширять или переопределять поведение Drupal по умолчанию без изменения кода ядра Drupal.
Drupal изолирует файлы ядра от дополнительных модулей и тем. Это повышает гибкость и безопасность и позволяет администраторам чисто обновляться до новых версий, не перезаписывая настройки своего сайта. [77] В сообществе Drupal есть поговорка: «Никогда не взламывайте ядро», — настоятельная рекомендация разработчикам сайтов не менять файлы ядра. [61]
Внесенные модули предлагают такие дополнительные или альтернативные функции, как галереи изображений, пользовательские типы контента и списки контента, редакторы WYSIWYG , личные сообщения, сторонние инструменты интеграции, [78] интеграция с порталами BPM, [79] и многое другое. По состоянию на декабрь 2019 года [обновлять]на сайте Drupal перечислено более 44 000 бесплатных модулей . [16]
Некоторые из наиболее часто используемых дополнительных модулей включают в себя: [80]
По состоянию на декабрь 2019 года [обновлять]существует более 2800 бесплатных тем, созданных сообществом . [17] Темы адаптируют или заменяют стандартный внешний вид и поведение сайта Drupal.
Темы Drupal используют стандартизированные форматы, которые могут быть сгенерированы обычными сторонними движками дизайна тем. Многие написаны на движке PHPTemplate [84] или, в меньшей степени, на движке XTemplate. [85] Некоторые шаблоны используют жестко закодированный PHP . Drupal 8 и будущие версии Drupal интегрируют движок шаблонов Twig . [86]
Включение движков PHPTemplate и XTemplate в Drupal решило проблемы пользователей по поводу гибкости и сложности. [87] Система тем Drupal использует шаблонизатор для дальнейшего разделения HTML / CSS от PHP. Популярный модуль Drupal, вносимый в проект, под названием «Devel», предоставляет разработчикам и тематорам информацию о GUI-сводке страницы.
Темы, созданные сообществом на сайте Drupal, выпускаются под бесплатной лицензией GPL . [88] [89]
Раньше тем, кто хотел полностью настроенную установку Drupal, приходилось загружать предварительно настроенную версию отдельно от официального ядра Drupal. Сегодня, однако, дистрибутив определяет упакованную версию Drupal, которая после установки предоставляет веб-сайт или приложение, созданное для определенной цели.
Дистрибутивы предлагают преимущества нового сайта Drupal без необходимости вручную искать и устанавливать сторонние модули или настраивать параметры конфигурации. [90] Они представляют собой наборы модулей, тем и связанных параметров конфигурации, которые подготавливают Drupal для пользовательской работы. Например, дистрибутив может настроить Drupal как сайт-"брошюру", а не новостной сайт или интернет-магазин .
Drupal основан на архитектуре Presentation Abstraction Control (PAC).
Система меню действует как Контроллер. Она принимает ввод через один источник ( HTTP GET и POST ), направляет запросы соответствующим вспомогательным функциям, извлекает данные из Абстракции (узлы и, начиная с Drupal 5, формы), а затем пропускает их через фильтр, чтобы получить их Представление (система тем).
Он даже имеет несколько параллельных агентов PAC в форме блоков, которые выталкивают данные на общий холст (page.tpl.php). [91]
Drupal.org имеет большое сообщество пользователей и разработчиков, которые оказывают активную поддержку сообществу , предлагая новые обновления для улучшения функциональности Drupal. [92] По состоянию на январь 2017 года [обновлять]более 105 400 пользователей активно вносят свой вклад. [15] Полугодовая конференция DrupalCon попеременно проводится в Северной Америке, Европе и Азии. [93] Посещаемость DrupalCon выросла с 500 человек в Сегеде в августе 2008 года до более 3700 человек в Остине, штат Техас, в июне 2014 года.
Менее масштабные мероприятия, известные как «Drupal Camps» или DrupalCamp, проводятся в течение года по всему миру. [94] Ежегодный Florida DrupalCamp объединяет пользователей для Coding for a Cause, который приносит пользу местной некоммерческой организации, как и ежегодное мероприятие GLADCamp (Greater Los Angeles Drupal Camp) — Coders with a Cause.
Сообщество Drupal также организует профессиональные и полупрофессиональные встречи, называемые митапами, на многочисленных площадках по всему миру.
На drupal.org существует более 30 национальных сообществ [95], предлагающих поддержку на разных языках.
Существует несколько специфических для Drupal форм Media. Наиболее популярными являются подкасты. DrupalEasy, TalkingDrupal и Lullabot Podcast имеют сотни эпизодов и тысячи постоянных слушателей.
Недавно The Drop Times [96] стал средством массовой информации, посвященным Drupal, освещающим истории, имеющие значение для сообщества Drupal.
Известные пользователи Drupal:
Политика Drupal заключается в том, чтобы объявлять о характере каждой уязвимости безопасности после выпуска исправления. [104] [105]
Администраторы сайтов Drupal могут автоматически уведомляться об этих новых релизах через модуль статуса обновления (Drupal 6) или через менеджер обновлений (Drupal 7). [106]
Drupal поддерживает список рассылки объявлений по безопасности, историю всех рекомендаций по безопасности, домашнюю страницу команды по безопасности и RSS-канал с последними рекомендациями по безопасности. [107] [108] [109]
В середине октября 2014 года Drupal выпустил «крайне критическую» рекомендацию по безопасности относительно ошибки SQL-инъекции в Drupal 7, также известной как Drupageddon. [110] [111] [112] Загрузка и установка обновления до Drupal 7.32 устраняет уязвимость, но не удаляет бэкдор, установленный хакерами, если сайт уже был скомпрометирован . [113] Атаки начались вскоре после объявления об уязвимости. По словам команды безопасности Drupal, если сайт не был исправлен в течение нескольких часов после объявления, его следует считать скомпрометированным и переводить в автономный режим, заменяя его статической HTML-страницей, в то время как администратор его сервера должен быть проинформирован о том, что другие сайты на том же сервере также могли быть скомпрометированы. Чтобы решить эту проблему, сайт необходимо восстановить с помощью резервных копий, созданных до 15 октября, исправить и обновить вручную, а все, что было объединено с сайта, должно быть проверено. [114]
В конце марта 2018 года был выпущен патч для уязвимости CVE-2018-7600, также названной Drupalgeddon2 . Основная ошибка позволяет удаленным злоумышленникам без специальных ролей или разрешений получить полный контроль над сайтами Drupal 6, 7 и 8. [115] [116] Drupal 6 достиг конца жизненного цикла 24 февраля 2016 года и не получает официальных обновлений безопасности (расширенная поддержка доступна от двух платных поставщиков долгосрочных услуг). [117] Начиная с начала апреля были замечены крупномасштабные автоматизированные атаки на уязвимые сайты, а 20 апреля был зарегистрирован высокий уровень проникновения на неисправленные сайты. [118]
23 декабря 2019 года Drupal исправил ошибку произвольной загрузки файлов. Ошибка загрузки файлов затрагивает Drupal 8.8.x до 8.8.1 и 8.7.x до 8.7.11, и уязвимость указана Drupal как умеренно критичная. [119] [120]
В сентябре 2022 года Drupal объявил о двух рекомендациях по безопасности для серьезной уязвимости в Twig для пользователей Drupal 9.3 и 9.4. [121] На той же неделе Drupal также объявил о выпуске исправления для файловой системы S3, устраняющего проблему обхода доступа. [86]
В январе 2023 года Drupal анонсировал обновления программного обеспечения для устранения четырех уязвимостей в ядре Drupal и трех плагинах. [122]
Будущее направление Drupal все больше охватывает архитектуру headless CMS, преобразуя ландшафт систем управления контентом. Этот подход отделяет frontend (презентацию и публикацию) от backend (контент), обеспечивая большую гибкость и инновации в доставке контента. Примечательно, что Drupal, давний конкурент WordPress, вложил значительные средства в этот headless подход. Создатель Drupal Драйс Байтаерт обсудил новый headless starter kit Acquia с открытым исходным кодом, который является неотъемлемой частью Acquia CMS на основе Drupal. Этот комплект позволяет организациям доставлять контент за пределами традиционных веб-браузеров, обслуживая ряд цифровых носителей, таких как цифровые вывески, носимые устройства, чат-боты, мобильные приложения и киоски. [123]
{{cite web}}
: CS1 maint: numeric names: authors list (link)Drupal.org Activity
Вам следует исходить из предположения, что все веб-сайты Drupal 7 были скомпрометированы, если только они не были обновлены или исправлены до 15 октября 23:00 по всемирному координированному времени, то есть через 7 часов после объявления.
Простое обновление до Drupal 7.32 не удалит бэкдоры ... обновление до версии 7.32 или применение патча устраняет уязвимость, но не исправляет уже скомпрометированный веб-сайт. Если вы обнаружите, что ваш сайт уже пропатчен, но вы этого не сделали, это может быть признаком того, что сайт был скомпрометирован - некоторые атаки применяли патч, чтобы гарантировать, что они являются единственным злоумышленником, контролирующим сайт.
{{cite book}}
: CS1 maint: location missing publisher (link)