Дата последнего релиза: | 2015/11/19 |
Технологии: | CMS - Системы управления контентом |
Drupal (Друпал) — система управления сайтом (CMS), написанная на языке PHP и использующая в качестве хранилища данных реляционную базу данных (поддерживаются MySQL, PostgreSQL и другие). Drupal является свободным программным обеспечением защищённым лицензией GPL и развивается усилиями энтузиастов со всего мира.
Система управления содержимым (CMS) Drupal – свободное программное обеспечение, модульная архитектура которого позволяет применять его для построения различных типов сайтов — от блогов и новостных сайтов до информационных архивов, социальных сетей и корпоративных приложений.
На базе Drupal работают миллионы веб-сайтов и приложений, включая WhiteHouse.gov и InfoWorld.com. На базе Drupal Gardens сегодня работает около 30 тыс. сайтов.
Drupal 6
Компания VASCO Data Security International, разработчик систем и сервисов для строгой аутентификации, и специалисты Drupal осенью 2012 года закончили работу над модулем для CMS DRUPAL v6, который позволит веб-разработчикам обеспечить безопасность доступа к сайтам и приложениям за счет интеграции сервиса одноразовых паролей MYDIGIPASS.COM.
Благодаря модулю MYDIGIPASS.COM для DRUPAL v6 интеграция двухфакторной аутентификации на веб-сайтах DRUPAL становится вопросом нескольких настроек. Веб-разработчики, которые используют Drupal v6, могут добавить новый уровень безопасности с помощью строгой двухфакторной аутентификации очень просто, быстро и без дополнительных затрат, в то же время обеспечив высокий уровень защиты доступа конечных пользователей к внутреннему контенту и данным учетных записей при максимальном удобстве.
Drupal 7
По сравнению с шестой версией Drupal 7 должна лучше масштабироваться при работе на больших сайтах с несколькими серверами. Не исключено, однако, что при установке лишь на одном сервере производительность окажется несколько ниже. Drupal используют многие крупные организации. На ней работают сайты Best Buy, Infoworld и американского Белого дома. Система отличается улучшенной поддержкой СУБД, включая добавление нового слоя абстрации СУБД. Усовершенствованы также средства работы с Postgres, обеспечивается поддержка SQLIte.
Drupal 7 позволяет подключаться к архитектуре на базе модулей расширения, что дает, например, возможность использовать значительно более быстродействующие базы данных, такие как MongoDB. Разработчики системы исходили из того, что новое программное обеспечение поступит в распоряжение корпоративных пользователей.
Модернизация Drupal 6 до Drupal 7 требует исполнения скрипта модернизации. Пользователям может потребоваться переписать коды некоторых адаптированных к конкретной версии модулей, а также обновить пользовательские интерфейсы.
К октябрю 2010 года вышло семь альфа-версий Drupal 7 и две бета-версии, первая из которых появилась 7 октября. Авторы рассчитывают выпустить финальную версию в течение ближайших двух месяцев, но перед этим может быть сделано несколько кандидатских версий.
2014: Опасная уязвимость в Drupal 7
20 октября 2014 года компания Digital Security сообщила о необходимости обратить внимание на факт обнаружения опасной уязвимости в Drupal 7. Уязвимость обнаружена почти года назад, однако известно о ней стало недавно.
15 октября 2014 года германская компания SektionEins, специализирующаяся на поиске уязвимостей в веб-продуктах, опубликовала подробности критической уязвимости, позволяющей неаутентифицированному пользователю без каких-либо прав выполнить произвольный SQL-запрос к базе данных на сервере под управлением Drupal 7. Практически сразу в сети начали появляться эксплоиты для применения данной уязвимости, которые позволяли злоумышленнику незаметно изменить пароль администратора Drupal, не имея на это прав в системе.
Опасность уязвимости в том, что она не оставляет никаких следов в системе — выполненные таким способом запросы не регистрируются в файлах регистрации (логах). Кроме того, отключение сайта штатными средствами Drupal (режим техобслуживания) не ограничивает использование вышеописанного бага. Злоумышленник получает прямой доступ к базе данных, что может стать причиной утечки информации.
Уязвимость устранили в Drupal 7.32.
- Официальная информация об уязвимости - https://www.drupal.org/SA-CORE-2014-005
- На русском языке - http://www.opennet.ru/opennews/art.shtml?num=40844
2015: Drupal 8
19 ноября 2015 года вышел релиз свободной системы управления веб-контентом Drupal 8[1].
Система подходит для создания различных категорий веб-проектов - от блогов и персональных страниц до крупных новостных порталов и социальных сетей.
Основные изменения в Drupal 8:
- поддержка предпросмотра и редактирования макетов страниц "на лету". Встроенный полноценный WYSIWYG-редактор на платформе CKEditor;
- средства комплексного моделирования контента с объектами, полями и представлениями. Новые типы полей для почтовых адресов, ссылок, телефонов, и других типов данных;
- полноценные средства для создания и поддержания представлений сайтов на нескольких языках;
- появление в интерфейсе администрирования новых инструментов для адаптации под свои предпочтения как страниц с содержимым и форм, так и служебных административных страниц;
- средства управления конфигурацией. Применение единого универсального хранилища конфигурации, в котором размещаются все типы настроек и данные о том как и где хранятся данные. Возможен экспорт конфигурации в формате YAML для использования в системах контроля версий;
- инструменты для распространения изменений между сайтами в разных серверных средах;
- адаптация страниц для мобильных устройств, а также применение методов адаптивного веб-дизайна и формирование вывода HTML5;
- встроенная поддержка средств для создания веб-сервисов RESTful и доступа к контенту через API на базе форматов JSON или XML;
- улучшенные средства для людей с ограниченными возможностями;
- поддержка применения современных техник программирования на PHP и интеграция с такими популярными библиотеками, как Composer, Symfony2, Guzzle, и Twig;
- существенное повышение производительности фронт-энда;
- расширенные средства кэширования страниц, возможности для интеграции с системами доставки контента (CDN) и веб-акселераторами;
- полная совместимость с PHP 7;
- полноценная поддержка СУБД PostgreSQL и SQLite.
2020: Платформа Drupal запустила свою программу bug bounty=
У системы управления контентом Drupal появилась собственная программа вознаграждения за найденные уязвимости для обеспечения максимальной безопасности и конфиденциальности сайтов. Каждый пользователь имеет право участвовать в программе при условии соблюдения установленных условий и требований Drupal[2][3].
История проекта
Начал разработку в 2000 году голландец Дрис Байтаерт (Dries Buytaert), который и поныне является руководителем проекта. Название drupal является искажённым произношением голландского слова druppel (капля) и появилось в результате забавной ошибки. В 2000 году несколько студентов антверпенского университета использовали общий ADSL-модем для доступа в интернет и для общения пользователей этой маленькой локальной сети Дрис создал внутренний сайт. Программа, на которой работал сайт, не имела имени, пока Дрис не собрался регистрировать доменное имя для нового сайта и в результате опечатки вместо dorp.org (от голландского dorp — деревня, вполне уместное имя для небольшого сообщества) был зарегистрирован drop.org (drop на английском — капля). Аудитория нового сайта со временем сменилась на интересующихся развитием новых веб-технологий и новый сайт постепенно перешёл из любительского эксперимента в проект по обсуждениям идей веб-программирования. В 2001 году Дрис опубликовал исходные коды drop.org под именем «Drupal», с тех пор разработка переместилась на зарегистрированный позднее сайт drupal.org, который приобрёл статус официального сайта проекта[4].
Со времени создания в процесс разработки были вовлечены сотни людей. Официальные разработчики ядра сейчас — это десятки человек, но много людей присылают свои патчи, включаемые в код системы, также функциональность движка расширяется дополнительными модулями, которые создают сторонние разработчики. Например в релизе 4.6 приняли участие 50 человек, приславших 338 поправок к коду, а в релизе 4.7 приняли участие уже 338 разработчиков приславших примерно 1500 поправок. За пять лет существования проекта (к 2006 году) вышло 13 релизов, было разработано более 300 дополнительных модулей, расширяющих базовые функции CMS и по примерной статистике Drupal использовали более 55 тыс. сайтов в Интернете.
В 2007 году Дрис Байтаерт создал фирму Acquia направленную на коммерческую поддержку проектов и сервисов, основанных на Drupal, вдохновленный успехами Canonical и Red Hat, построивших бизнес на поддержке открытых проектов. В 2008 Байтаерт получил учёную степень и теперь собирается полностью сконцентрироваться на развитии своего детища.
Со временем вокруг международного сайта появились национальные сообщества. Первым национальным доменом стал в 2003 году drupal.ru — сообщество пользователей и разработчиков, говорящих на русском языке. Сейчас работают более 20 национальных сайтов поддержки на разных языках. Полный список национальных сообществ можно найти на странице Сообществ Drupal.
Логотип
После того, как Друпал был создан, очевидным вопросом был выбор и создание логотипа. Участники сообщества считали, что он должен быть связан с каплей или водой. И первоначально логотип Друпала изображался как капля в круге. Со временем пришла идея сделать логотип в виде карикатурной капли с лицом. Стивен Виттенс (Steven Wittens) создал трёхмерную каплю, но идея не пошла в массы главным образом потому, что трёхмерный объект трудно печатать, редактировать и т. д.
Текущий логотип Друпала придуман Кристианом Дженсеном (Kristjan Jansen). Он представляет собой каплю, изображающую лицо. Глаза показываются как две соединённые капли в виде знака бесконечности и выражают в символической форме бесконечные возможности Друпала. Дополняют лицо полукруглый нос и озорная улыбка.
Технические особенности
Архитектура Drupal позволяет применять его для построения различных типов сайтов — от блогов и форумов, до информационных архивов или сайтов новостей. Функциональность обеспечивается подключаемыми модулями, обращающимися к общему API Drupal. Стандартный набор модулей включает, например, такие функции как новостная лента, блог, форум, загрузка файлов, сборщик новостей, голосования, поиск и др. Большое количество дополнительных модулей, значительно расширяющих базовые функции можно скачать с официального сайта.
Наиболее важные функции предоставляемые модулями входящими в поставку Drupal:
- единая категоризация всех видов содержимого (таксономия) — от форумных сообщений до блогов и новостных статей
- широкий набор свойств при построении рубрикаторов: плоские списки, иерархии, иерархии с общими предками, синонимы, родственные категории
- вложенность категорий любой глубины
- поиск по содержимому сайта, в том числе поиск по таксономии и пользователям
- разграничение доступа пользователей к документам (ролевая модель)
- динамическое построение меню
- поддержка XML-форматов:
- вывод документов в RDF/RSS
- аггрегация материалов с других сайтов
- BlogAPI для публикации материалов с помощью внешних приложений
- авторизация через OpenID
- короткие URL (иначе «человеко-понятные» — ЧПУ)
- поддержка сменных тем оформления сайта с предоставлением нескольких готовых вариантов
- переводы интерфейса сайта на разные языки, а также поддержка ведения разноязычного контента
- возможность создания сайтов с пересекающимся содержимым (например общей базой пользователей или общими настройками)
- раздельные конфигурации сайта для различных виртуальных хостов (в том числе собственные наборы модулей и тем оформления для каждого подсайта)
- механизм для ограничения нагрузки на сайт (автоматическое отключение при высокой посещаемости части информационных блоков и модулей)
- уведомления о выходящих обновлениях модулей
Поддержка локализации
Система поддерживает локализацию интерфейса для различных языков. Drupal 5 имеет переводы интерфейса на 33 языка (однако не все переводы являются полными). Имеется поддержка русского языка. В Drupal используется собственный механизм для локализации с хранением переводов в базе данных, наравне с остальным содержимым сайта. При этом несложной является адаптация к работе со стандартной библиотекой gettext. Импорт и экспорт переводов сайта также осуществляется в виде po-файлов (формат используемый библиотекой gettext).
Полная локализация содержимого поддерживается сторонними модулями (не входят в поставку Drupal, но могут быть скачаны с сайта разработчиков).
В Drupal 6 планируется обновление механизма локализации, для полноценной работы с многоязычным содержимым. Также планируется адаптация к формату XLIFF для хранения переводов (совместимость с gettext сохранится).
Методы структуризации содержимого
В Drupal предлагается гибкая схема организации структуры сайта на основе таксономии. Таксономия — механизм, позволяющий создавать произвольное количество тематических категорий для содержимого сайта и ассоциировать их с модулями, обеспечивающими ввод и вывод информации. Категории могут представлять плоские или иерархические списки, либо сложные структуры, где элемент может иметь несколько «родителей» и несколько дочерних элементов. С помощью подобной схемы одними и теми же модулями возможна организация различных вариантов структуризации содержимого. Например, легко создаётся сквозной список «ключевых слов» для всех документов сайта и т. п.
Темы оформления
Дизайн сайта на Drupal строится на основе сменных тем оформления. Как таковой нет единственной схемы построения дизайна, взамен Drupal даёт возможность использовать различные «движки тем», использующие шаблоны, удобные для редактирования (шаблоны XML в движках xtemplate и Smarty или шаблоны на HTML+встроенный PHP в движке phptemplate и т. п.), либо создавать темы оформления напрямую обращающиеся к API Drupal. В комплект поставки Drupal включён движок тем на основе phptemplate и несколько примеров тем. Другие движки тем можно скачать на сайте проекта.
Начиная с версии 4.7 Drupal поддерживает технологию Ajax, для динамической подгрузки содержимого без полного обновления страниц. В версии 5 для работы с JavaScript добавлена библиотека JQuery. C версии 6.0 появилось создание форм посредством AHAH (без полной перезагрузки страниц сайта).
Примеры модулей
Дополнительные модули, размещённые в репозитории на drupal.org, позволяют значительно расширить функциональность системы. Несколько примеров (приведены модули для версии Drupal 4.6, не всегда модули доступны для всех версий системы):
- Banner — баннерная система
- Captcha — защитный механизм картинок «CAPTCHA», используемый при регистрации
- Ecommerce, Ubercart — системы электронной коммерции
- Fckeditor, Tinymce — визуальные редакторы для ввода контента
- Gallery — интеграция с галереей изображений Gallery2
- LDAP integration — интеграция с LDAP
- listhandler — интеграция с почтовыми рассылками
- Project — ведение проектов и багтрекер
- SPAM — блокировка спама на основе алгоритма Байеса
- Swish — интеграция с системой поиска Swish
- Полный список модулей на drupal.org
К несомненным достоинствам Drupal следует отнести весьма полную документацию по различным аспектам системы (однако только на английском языке).
Системные требования
Drupal в первую очередь ориентирован на платформу LAMP, но возможны варианты использования другого системного ПО.
- Операционная система: семейство Unix (в том числе FreeBSD, Mac OS X), Windows (любые ОС, на которых может работать интерпретатор PHP)
- Веб-сервер: Apache, Lighttpd (теоретически любой веб-сервер, допускающий исполнение PHP-кода)
- СУБД: MySQL, PostgreSQL (в принципе несложна адаптация к другим реляционным СУБД, например IBM DB2
- PHP версии 4.3.3 и выше
Недостатки
- Критики Drupal ставят в упрёк разработчикам слабое использование объектных возможностей PHP. Действительно, API Drupal практически не использует имеющихся в PHP возможностей ООП. Разработчики аргументируют это слабой реализацией ООП в языке (особенно до версии PHP 5). Объектная модель в Drupal присутствует, но в несколько нетрадиционном для PHP виде.
- Ввиду активного использования базы данных Drupal может быть слишком тяжёл для ресурсов предоставляемых на дешёвых тарифных планах хостинг-провайдеров, хотя для небольших сайтов с посещаемостью в несколько сотен или тысяч посетителей в сутки этих ресурсов будет достаточно.
- В некоторых случаях, особенно при большой посещаемости, использование встроенного механизма кэширования (основанного на использовании БД) может привести к повреждению таблиц в БД
- К недостаткам (но одновременно и к достоинствам) Drupal можно отнести достаточно высокую динамику разработки проекта. Практически в каждом релизе происходят изменения API, когда наряду с добавлением новых функций убираются некоторые старые или изменяются параметры вызова функций. Это приводит к необходимости разработчикам сторонних модулей адаптировать их для работы с новыми версиями Drupal. Однако изменения API и процедура адаптации модулей к новым версиям описываются в документации для каждого релиза, также всегда предлагается механизм автоматизированного апгрейда ядра системы на новую версию.
- Сложная для понимания неподготовленными пользователями система классификации содержимого — таксономия.
- Не очень хорошая поддержка мультиязычных сайтов.
Примеры реализации сайтов на Drupal
Приведены примеры нескольких сайтов с высокой посещаемостью (десятки тысяч посетителей в сутки и выше), работающие на Drupal:
Литература
Полный список вышедших на разных языках книг можно найти на странице drupal.org/node/42200.
Книги на русском языке
- Джон Вандюк, Мэтт Вестгейт «CMS Drupal: руководство по разработке системы управления сайтом», 400 стр., с ил.; ISBN 978-5-8459-1356-2, 978-1-5905-9755-2
Книги на английском языке
- Robert T. Douglass, Mike Little, Jared W. Smith «Building Online Communities with Drupal, phpBB, and WordPress». Apress, ISBN 1-59059-562-9
- David Mercer «Drupal: Creating Blogs, Forums, Portals, and Community Websites», ISBN 1-904811-80-9
- John K. VanDyk, Matt Westgate «Pro Drupal Development», ISBN 139781590597552, ISBN 101590597559
- Matt Butcher «Learning Drupal 6 Module Development», ISBN 1847194443, ISBN 13 978-1-847194-44-2
Ссылки
Со временем вокруг международного сайта появились национальные сообщества. Первым национальным доменом стал в 2003 году drupal.ru — сообщество пользователей и разработчиков говорящих на русском языке. Сейчас работают более 20 национальных сайтов поддержки на разных языках. Полный список национальных сообществ можно найти на странице www.drupal.org/language-specific-communities.
Примечания
Подрядчики-лидеры по количеству проектов
Системы КлиК (ранее BMicro, БМикро) (107)
Extyl (Экстил) (95)
Факт (ЦИТ Факт, Центр интернет-технологий Факт) (47)
Корус Консалтинг (23)
Qsoft (Кьюсофт) (15)
Другие (284)
Extyl (Экстил) (22)
Факт (ЦИТ Факт, Центр интернет-технологий Факт) (7)
Корус Консалтинг (2)
Норбит (2)
Контек (Conteq) (1)
Другие (9)
Extyl (Экстил) (14)
Areal, Ареал (ранее Arealidea) (5)
Корус Консалтинг (3)
Факт (ЦИТ Факт, Центр интернет-технологий Факт) (3)
1С-Битрикс (2)
Другие (10)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
1С-Битрикс (8, 270)
Системы КлиК (ранее BMicro, БМикро) (1, 111)
Microsoft (8, 70)
IBM (4, 29)
БизнесАвтоматика НПЦ (1, 12)
Другие (175, 71)
1С-Битрикс (3, 36)
Liqvid (Ликвид Рус) (1, 1)
Pimcore Company (1, 1)
БизнесАвтоматика НПЦ (1, 1)
Clipr (1, 1)
Другие (3, 3)
1С-Битрикс (3, 30)
Квант (МТ-Технологии) (1, 2)
БизнесАвтоматика НПЦ (1, 2)
Министерство цифрового развития, связи и массовых коммуникаций РФ (Минцифры) (1, 2)
Oracle (1, 1)
Другие (0, 0)
1С-Битрикс (2, 21)
Форктек (Fork-Tech) (1, 1)
БизнесАвтоматика НПЦ (1, 1)
VK (ранее Mail.ru Group) (1, 1)
Другие (0, 0)
Распределение базовых систем по количеству проектов, включая партнерские решения (проекты, партнерские проекты)
1С-Битрикс24 - 166 (166, 0)
Клиент-Коммуникатор (КлиК) - 111 (111, 0)
1С-Битрикс: Управление сайтом - 100 (98, 2)
Microsoft SharePoint - 66 (62, 4)
IBM Content Foundation (ранее IBM FileNet) - 28 (28, 0)
Другие 88
1С-Битрикс24 - 19 (19, 0)
1С-Битрикс: Управление сайтом - 16 (16, 0)
Microsoft SharePoint - 1 (1, 0)
Clipr платформа для анализа и управления видеоданными - 1 (1, 0)
SiteFinity - 1 (1, 0)
Другие 4
1С-Битрикс: Управление сайтом - 17 (17, 0)
1С-Битрикс24 - 12 (12, 0)
Visary CMS - 2 (2, 0)
Визуальный конструктор услуг - 2 (2, 0)
Квант: DOOH DSP Programmatic - 2 (2, 0)
Другие 1
1С-Битрикс24 - 21 (21, 0)
1С-Битрикс: Управление сайтом - 16 (16, 0)
Sellty Конструктор интернет-магазина - 3 (3, 0)
SiteFinity - 2 (2, 0)
Другие 0
1С-Битрикс24 - 18 (18, 0)
1С-Битрикс: Управление сайтом - 4 (4, 0)
VK CDN - 1 (1, 0)
Visary CMS - 1 (1, 0)
Другие 0