Знакомство с wiki-системой DokuWiki
Программное обеспечение
Статья была опубликована 1 мая 2013 года в 12:00, а последний раз правилась 9 апреля 2015 года в 11:33.
Постоянная ссылка: http://www.nixp.ru/articles/100.html
Обзор свободной вики-системы с веб-интерфейсом DokuWiki, написанной на PHP и использующей файлы в качестве базы данных.
Примечание: эта статья была впервые опубликована в электронном издании «Open Source» от журнала «Системный администратор» и размещена на nixp.ru по согласованию с редакцией.
Выбором движка Wiki я озаботился, когда решил создать собственный сайт, посвященный краеведению Киева. Мне нужен был движок для справочника, который можно разрабатывать коллективно, и трудно представить себе на эту роль технологию, отличную от Wiki.
Но движков Wiki много, хотя, конечно же, у всех на слуху MediaWiki, лежащая в основе Wikipedia и многих других сходных ресурсов. У меня был опыт работы с MediaWiki — казалось, что достаточно взять и установить. Но после инсталляции я решил попробовать что-нибудь другое. Выбор пал на DokuWiki (www.dokuwiki.org), которой впоследствии и было отдано предпочтение. На что способна DokuWiki и почему мне она понравилась, я и расскажу в этой статье.
Первые шаги после установки
Как и MediaWiki, DokuWiki — это PHP-приложение. Оно устанавливается в выбранный каталог сайта, после чего можно начинать работу. А вот существенное отличие от MediaWiki — использование обычных текстовых файлов (вместо СУБД вроде MySQL или PostgreSQL) для хранения данных. Это делает каталог установки DokuWiki полностью самодостаточным. Вы можете просто взять его и перенести в другое место (на другой сайт) или упаковать в архив резервную копию.
При «первом запуске» DokuWiki предлагает установку, настройку разных параметров. Сначала идёт активация ACL (Access Control List) для разграничения прав пользователей. Если ACL выключить, то все посетители wiki смогут без регистрации править её содержимое. С включённым ACL анонимы править не могут, а зарегистрированные пользователи будут иметь те права, которыми вы их наделите. ACL — это еще и графический интерфейс для управления пользователями, но удобнее и быстрее вносить правки в файл настройки /conf/acl.auth/php. В нем отдельным группам или пользователям задаются права доступа для всех или отдельных страниц. Например:
* doom 16
Это значит, что для всех страниц (*) пользователь doom имеет доступ уровня 16. Уровни (или режимы) доступа — это числа от 0 до 16 с определённым шагом. Каждый уровень добавляет к предыдущему одну новую возможность: чтения, записи, создания и так далее. Вот список уровней:
- 0 — ничего;
- 1 — чтение;
- 2 — правка существующих статей;
- 4 — создание новых статей;
- 8 — загрузка файлов (картинок);
- 16 — удаление статей.
Таким образом, уровень 16 — это почти администратор.
Имя пользователя пишется в файле настроек как есть, а название группы надо предварять «@», например: @ALL, @user. Чтобы включить ACL, надо в файле /conf/local.php написать:
$conf['useacl'] = 1;
Добавление пользователей в группам осуществляется в файле /conf/users.auth.php, синтаксис которого очевиден, так что не буду вдаваться в подробности.
Перед началом написания статей в Wiki, надо настроить важную опцию кодировки имен файлов. Это делается либо через веб-интерфейс (Управление -> Параметры DokuWiki -> fnencode), либо в конфигурационном файле /conf/local.php, строкой:
$conf['fnencode'] = 'utf-8';
В последнем случае после правки файла настройки надо будет перезайти в вашу Wiki. Опция fnencode задает кодировку, в которой сохраняются имена файлов в наборе символов, отличном от ASCII. Поскольку названия файлов и названия статей взаимосвязаны, ваши статьи с русскими названиями будут записаны под именами файлов с русскими названиями. Поэтому оптимально выбрать для них UTF-8.
Вообще все настройки можно править через файл настроек. Отличие от графического интерфейса лишь в том, что нет локализованных предупреждений и подсказок. Предупреждения появляются, например, при отключении ACL, т.к. в результате выполнения этой операции из интерфейса «пропадет» администраторское меню.
Из важных параметров, на которые стоит обратить внимание в первую очередь, еще выделю разве что размер загружаемого в wiki файла (в байтах) — fetchsize. Остальное правится по мере необходимости.
Возможности
Вопреки бытующему мнению, что DokuWiki медлительнее, чем MediaWiki, из-за отсутствия взаимодействия с СУБД, DokuWiki всё же быстрее подготавливает страницы для отображения в браузере — это ощущается просто во время работы с вики. Быстро работает поиск по названиям статей. Не так быстро, как при обращении к СУБД, работает поиск по подстроке, неполному слову. (Прим. ред.: Впрочем, очевидно, что скорость работы будет во многом зависеть от размеров базы знаний.)
Для правки статей DokuWiki оснащена приятным редактором с панелью инструментов. Текст в процессе правки время от времени сохраняется автоматически в виде черновика, что весьма удобно. Синтаксис подобен MediaWiki, но с рядом косметических отличий. Например, жирный текст, в DokuWiki отмечается:
**так**
А в MediaWiki:
'''вот так'''
Пустые строки служат отметками новых абзацев. Простой «перевод строки» пропускается. Чтобы сделать жесткий перевод строки в нужном месте, надо написать: «\\» (без кавычек, конечно), после чего сделать новую строку или поставить пробел. Очень просто создавать сноски — заключаем текст в двойные скобки, и он автоматически нумеруется и становится сноской. Например:
DokuWiki поддерживает создание сносок ((Сноска — пояснение внизу страницы)), что позволяет облегчить основной текст.
В этом случае при отображении страницы после слова «сносок» будет поставлено приподнятое по вертикали число, обозначающее номер сноски. Нажав на него мышью, пользователь перенесется в конец страницы, где и увидит текстовое пояснение сноски, а именно, например, «1) Сноска — пояснение внизу страницы».
Ряд функций, присущих MediaWiki внутренне, в DokuWiki реализован через плагины — например, выравнивание текста или «редиректы». Впрочем, то же справедливо и в обратную сторону: движок MediaWiki лишен некоторых функций, встроенных в DokuWiki. Подробное сравнение можно увидеть на сайте www.wikimatrix.org.
Мне очень нравится встроенная в DokuWiki подсветка синтаксиса языков программирования. В самом названии этого wiki-движка очевидна его направленность — разработка документации, в том числе технической. При помощи плагинов можно добавлять в статьи диаграммы, а также формулы, записанные в LaTeX. Картинки вставляются встроенными средствами, для HTML5-видео (ogv) и звука нужны плагины.
Для отображения на странице исходного кода на каком-либо языке программирования, используются теги code и file. Внутри этих тегов сохраняется всё исходное форматирование (пробелы, переносы строк…). Чтобы включить дополнительно подсветку синтаксиса, надо указать язык. Например:
<code php> <?php echo "hello world!"; ?> </code>
Если вы хотите, чтобы над примером исходника была иконка и ссылка для скачивания кода в виде файла, исходник следует оформить примерно так:
<file php example01.php> <?php echo "hello world!"; ?> </file>
При этом, «example01.php» и будет именем файла, с которым будет сформирована ссылка для скачивания.
Подсветка каких языков программирования поддерживается в DokuWiki? Для этого используется движок GeSHi (http://qbnz.com/highlighter/), так что зависит от его способностей, а они впечатляют. Раз уж речь зашла о программировании, замечу, что DokuWiki позволяет вставлять в свои вики-страницы рабочий код на PHP и HTML, тем самым предоставляя возможность неограниченного расширения возможностей вашей Wiki. В целях безопасности такая возможность, однако, отключена. Для включения встроенного PHP в файл надо /conf/local.php поместить:
$conf['phpok'] = 1;
А для встраивания HTML:
$conf['htmlok'] = 1;
В DokuWiki есть поддержка таблиц с весьма простым синтаксисом. Вот красноречивый пример таблицы с двумя рядами по три колонки/ячейки в каждом:
^ Заголовок 1 ^ Заголовок 2 ^ Заголовок 3 ^ | ряд 1 колонка 1 | ряд 1 колонка 2 | ряд 1 колонка 3 | | ряд 2 колонка 1 | ряд 2 колонка 2 | ряд 2 колонка 3 |
Расширение функций
Возможности DokuWiki можно развивать с помощью плагинов и шаблонов. Плагины устанавливаются прямо из веб-интерфейса на странице «Управление плагинами». Настройки же плагинов доступны в том же разделе, что и общие настройки wiki. Физически плагины устанавливаются в каталог /lib/plugins (исходника вашей wiki). А тексты статей хранятся в обычных текстовых файлах в каталоге /data/pages. Плагины расширяют синтаскис DokuWiki и её возможности — например, появляются функции построения диаграмм, вставки видео на HTML5, дискуссий к каждой статье, экспорта в ODT, отображения карт и многого другого.
Есть также скачиваемые шаблоны — их можно рассматривать как темы оформления. Конечно же, любой шаблон или плагин можно править по своему усмотрению после установки (в любом текстовом редакторе). Некоторые плагины требуют дополнительных действий для своей установки — например, правки шаблонов. Это бывает нужно, чтобы поместить на страницу какую-нибудь кнопку, нажатие которой вызывает функции плагина к жизни.
Итоги
Технологиям, подобным DokuWiki, надо давать оценки с двух разных точек зрения: администратора и пользователя. Для пользователя, DokuWiki — это быстрое средство коллективной работы над текстами справочного характера. Интерфейс весьма интуитивен и имеет локализацию на русском языке. Совокупность интерфейса и синтаксиса DokuWiki не вызывает недоумения даже у тех пользователей, которые ранее имели лишь шапочное знакомство с более популярной MediaWiki.
С точки зрения администратора, DokuWiki также весьма удобна, особенно в случаях, когда правка wiki должна осуществляться «группой доверенных лиц», а остальные посетители wiki выступают в роли читателей. Конечно, никто не мешает вам настроить wiki для всеобщей правки безо всяких ограничений. Некоторых администраторов беспокоит «нетрадиционность» движка DokuWiki — использование файлов вместо СУБД. Но мнение о «нетрадиционности» — от незнания технологий, стоящих за wiki-движками помимо MediaWiki: без СУБД успешно работают MoinMoin, TWiki, UseMod, PmWiki… Впрочем, эта тема, скорее, для ведения священной войны, которую я развивать не хочу. Избираемое решение той или иной задачи лежит, мне кажется, больше в области личных предпочтений администратора, нежели в объективных суждениях о той или иной технологии. Всегда полезно собственноручно установить ряд сходных продуктов, протестировать их и сравнить возможности и быстродействие.
-
Популярные в этом разделе:
- «Обзор системы фильтрации спама rspamd: возможности, конфигурация, работа»,
- «Защищаем себя средствами GnuPG»,
- «Своё интернет-радио с Icecast».
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1