DokuWiki
DokuWiki — это свободное программное обеспечение для создания вики-сайтов, написанное на языке программирования PHP и распространяемое под лицензией GNU GPL. Относится к классу движков вики (wiki-движков), предназначенных для совместного создания, редактирования и хранения структурированной информации. Ключевой особенностью DokuWiki является отсутствие необходимости в реляционной базе данных: все данные хранятся в текстовых файлах (обычно в формате UTF-8), что делает систему лёгкой, портативной и не требующей сложной настройки сервера.
История
Проект DokuWiki был начат в 2004 году немецким разработчиком Андреасом Гохом (Andreas Gohr). Первая публичная версия (0.0.1) вышла в июне 2004 года. Основной мотивацией создания было желание получить вики-движок, который был бы прост в установке, не требовал базы данных (как, например, MediaWiki) и мог работать на дешёвом хостинге с поддержкой PHP. Название «DokuWiki» происходит от немецкого слова «Dokumentation» (документация), так как изначально проект позиционировался как инструмент для ведения документации разработчиками.
Ключевые вехи развития:
- 2005 год: выход версии 2005-07-01, которая стала первой стабильной и получила широкое распространение.
- 2006 год: появление поддержки плагинов, что кардинально расширило функциональность.
- 2008 год: введение системы управления версиями (интеграция с Git).
- 2010 год: версия 2010-11-07 («Angua») с улучшенным интерфейсом и поддержкой кэширования.
- 2013 год: версия 2013-05-10 («Binky») с переработанной системой шаблонов.
- 2018 год: версия 2018-04-22c («Greebo») с поддержкой PHP 7, улучшенной безопасностью и новым редактором.
- 2023 год: версия 2023-04-04a («Jack Jackrum») с поддержкой PHP 8.x и обновлённым интерфейсом.
По состоянию на 2024 год DokuWiki остаётся одним из самых популярных лёгких вики-движков, особенно в среде разработчиков, системных администраторов и малых предприятий.
Архитектура и принципы работы
Хранение данных
В отличие от большинства современных вики-движков (MediaWiki, Confluence), DokuWiki не использует базу данных. Все страницы, их ревизии, медиафайлы и метаданные хранятся в файловой системе сервера в виде текстовых файлов.
- Страницы: хранятся в каталоге
pages/в виде текстовых файлов с расширением.txt. Имя файла соответствует имени страницы (например,start.txtдля главной страницы). - Ревизии: старые версии страниц сохраняются в каталоге
attic/с отметкой времени. - Медиафайлы: изображения, PDF, архивы и другие файлы хранятся в каталоге
media/. - Метаданные: информация о правах доступа, датах изменения, ссылках хранится в каталоге
meta (организация признана экстремистской, деятельность запрещена в РФ)/в формате сериализованного PHP.
Такая архитектура делает DokuWiki чрезвычайно простой в установке и резервном копировании (достаточно скопировать файлы), но накладывает ограничения на производительность при очень больших объёмах данных (сотни тысяч страниц).
Синтаксис разметки
DokuWiki использует собственный упрощённый язык разметки, который значительно проще HTML и похож на разметку других вики-систем. Основные элементы:
- Заголовки:
====== Заголовок ======(уровень 1),===== Заголовок =====(уровень 2) и т.д. - Жирный текст:
текст - Курсив:
//текст// - Ссылки:
[[имя_страницы]](внутренние),[[http://example.com|текст]]` (внешние) - Списки:
*для маркированных,-для нумерованных - Таблицы:
| ячейка1 | ячейка2 | - Изображения:
{{:путь_к_файлу.png}}
Синтаксис поддерживает также вложенные разделы, примечания, сноски, математические формулы (через плагин) и другие элементы.
Плагины и шаблоны
Ключевым преимуществом DokuWiki является модульная архитектура. Функциональность расширяется через плагины, которые могут добавлять:
- Новые синтаксические конструкции (например, диаграммы, графики, формулы LaTeX).
- Интеграцию с внешними сервисами (GitHub, Slack, LDAP).
- Улучшенные редакторы (WYSIWYG, Markdown).
- Дополнительные инструменты безопасности (двухфакторная аутентификация).
- Расширенные средства поиска и навигации.
Официальный репозиторий плагинов содержит более 1000 расширений. Шаблоны (темы оформления) позволяют полностью изменить внешний вид вики. Наиболее популярные шаблоны: «Arctic», «Bootstrap3», «Dokuwiki Template».
Основные возможности
Совместная работа
DokuWiki поддерживает все стандартные функции вики-систем:
- Редактирование страниц: любой авторизованный пользователь может редактировать содержимое.
- История изменений: каждая правка сохраняется, доступна для просмотра и отката.
- Дискуссии: к каждой странице можно прикрепить страницу обсуждения.
- Уведомления: система может отправлять email-уведомления об изменениях.
Управление доступом
DokuWiki имеет встроенную систему управления доступом (ACL — Access Control Lists), которая позволяет гибко настраивать права для пользователей и групп:
- Чтение, редактирование, создание, удаление страниц.
- Загрузка и удаление медиафайлов.
- Управление пользователями и группами.
Права могут быть назначены как на отдельные страницы, так и на целые пространства имён (категории).
Поиск и навигация
- Полнотекстовый поиск: поиск по содержимому всех страниц (без базы данных выполняется через индексацию файлов).
- Дерево страниц: автоматическое построение иерархии на основе пространств имён.
- Индексы: страницы могут быть помечены тегами (через плагин) для облегчения навигации.
- Карта сайта: генерируется автоматически.
Экспорт и интероперабельность
DokuWiki поддерживает экспорт содержимого в различные форматы:
- HTML: статическая копия сайта.
- PDF: через плагин «dw2pdf» (с использованием библиотеки mPDF).
- Plain Text: чистый текст без разметки.
- XML: для интеграции с другими системами.
Также возможен импорт из других вики-систем (MediaWiki, PmWiki) с помощью специализированных плагинов.
Применение
DokuWiki используется в различных сферах благодаря своей простоте и гибкости:
- Корпоративная документация: малые и средние компании часто используют DokuWiki для ведения внутренней документации, баз знаний, инструкций.
- Образовательные проекты: школы, университеты и онлайн-курсы для создания учебных материалов.
- Личные проекты: ведение заметок, дневников, личных баз знаний.
- Разработка ПО: команды разработчиков используют DokuWiki для документирования API, архитектуры, процессов.
- Научные исследования: для коллективного написания статей, ведения лабораторных журналов.
Примеры известных проектов, использующих DokuWiki: документация к некоторым дистрибутивам Linux (например, OpenWrt), вики-сайты сообществ (например, вики по настольным играм), внутренние порталы компаний.
Преимущества и недостатки
Преимущества
- Простота установки: не требуется база данных, достаточно PHP и веб-сервера.
- Портативность: можно запустить с USB-накопителя или на дешёвом хостинге.
- Безопасность: файловая система менее уязвима для SQL-инъекций.
- Гибкость: тысячи плагинов и шаблонов.
- Совместимость: работает на всех основных веб-серверах (Apache, Nginx, IIS) и операционных системах (Linux, Windows, macOS).
- Низкие требования: минимальные системные ресурсы.
Недостатки
- Производительность: при большом количестве страниц (более 10 000) поиск и загрузка могут замедляться.
- Отсутствие WYSIWYG по умолчанию: встроенный редактор — текстовый, что может быть неудобно для неопытных пользователей (хотя есть плагины, добавляющие визуальный редактор).
- Ограниченная мультимедиа: встроенная поддержка только базовых форматов изображений и файлов.
- Сложность масштабирования: для крупных проектов (сотни тысяч страниц) требуется оптимизация сервера и кэширования.
Сравнение с аналогами
| Параметр | DokuWiki | MediaWiki | Confluence (проприетарный) |
|---|---|---|---|
| База данных | Нет (файлы) | MySQL/MariaDB | PostgreSQL/MySQL |
| Сложность установки | Низкая | Средняя | Высокая |
| Производительность | Средняя (до 10 000 стр.) | Высокая | Высокая |
| Расширяемость | Плагины | Расширения | Плагины (платные) |
| Лицензия | GNU GPL | GNU GPL | Проприетарная |
| Основное применение | Малые/средние проекты | Крупные энциклопедии | Корпоративные базы знаний |
Безопасность
DokuWiki имеет встроенные механизмы защиты:
- Защита от CSRF: использование токенов в формах.
- Защита от XSS: экранирование HTML-тегов в пользовательском вводе.
- Управление сессиями: поддержка HTTP-only cookies.
- Аудит прав: ACL-система предотвращает несанкционированный доступ.
Однако, как и любое PHP-приложение, DokuWiki требует своевременного обновления для закрытия уязвимостей. Разработчики регулярно выпускают патчи безопасности.
Интересные факты
- Название «DokuWiki» происходит от немецкого «Dokumentation», а не от «Doku» как сокращения от «документация» в английском.
- DokuWiki поддерживает интервики (связи между разными вики-сайтами) по умолчанию.
- В состав DokuWiki входит встроенный кэш страниц, который ускоряет загрузку для анонимных пользователей.
- Система может работать на PHP версии 5.6 и выше, включая PHP 8.x.
- DokuWiki имеет встроенную поддержку UTF-8, что делает её пригодной для многоязычных проектов.
Источники
- Официальный сайт DokuWiki: dokuwiki.org
- Документация DokuWiki: «DokuWiki Manual»
- Репозиторий плагинов: «DokuWiki Plugin Repository»
- Статья «DokuWiki» в Википедии (английская версия)
- Книга «The DokuWiki Cookbook» (Andreas Gohr, 2010)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →