MoinMoin

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:56, 8 ноября 2017.
MoinMoin
Moinmoin logo.png
Moinmoinsdf1.jpg
Скриншот сайта moinmo.in, работающего под управлением MoinMoin
Постоянный выпуск: 1.9.9[1] (стабильная) (24 сентября 2012) / 31 октября 2014
Написана на: Python
Операционная система: Кросс-платформенное
Локализация: более 30 языков, в том числе и русский язык
Тип ПО: Wiki
Лицензия: GNU GPL
Веб-сайт moinmo.in

MoinMoin — мощный, простой в использовании и расширяемый вики-движок, написанный на языке Python; свободное программное обеспечение, распространяемое по лицензии GNU GPL. Используется, например, на https://wiki.freebsd.org/ Название происходит от приветствия «Moin» во фризском языке. Для хранения информации MoinMoin использует файловую систему. Может работать практически с любым веб-сервером, поддерживающим CGI/FastCGI[2]/WSGI[3], или без него (со встроенным веб-сервером на базе Werkzeug[Источник 1].

История

MoinMoin появился в районе 2000 года. Изначально проект разрабатывался Юргеном Херманном (Jürgen Hermann), на данный момент он покинул проект и разработка ведётся командой людей, возглавляемой Томасом Вальдманном (Thomas Waldmann). В качестве основы для MoinMoin был использован движок PikiPiki, и MoinMoin сильно эволюционировал с того времени. На данный момент MoinMoin используется на ряде сайтов, а также в качестве корпоративной и персональной вики в множестве мест.

Архитектура

MoinMoin имеет достаточно гибкую архитектуру, следствием чего является богатый набор встроенных функций и простота расширяемости. Ключевыми компонентами вики-сервера MoinMoin являются:

  • Сервер. Обрабатывает запросы и вызывает соответствующие обработчики.
  • Обработчики-действия (actions). На основании параметров запроса и конфигурации реализуют различную функциональность вики.
  • Хранилище и кэш процессора. Позволяют хранить различные виды данных (в первую очередь, страницы вики и прикреплённые к ним файлы, также там содержатся другие виды объектов, такие, как словари и группы), и предоставляют возможности по кэшированию (основной способ кэширования — pickle[4]).
  • Механизм аутентификации. Позволяют аутентифицироваться пользователям различными способами (HTTP (Hypertext Transfer Protocol) auth, LDAP[5], PHP cookie, …), подробнее см. http://master19.moinmo.in/ПомощьПоАутентификации
  • Механизм авторизации и разграничения прав доступа (security policy). Обеспечивают различные методы разграничения доступа, в первую очередь,ACL (Access Control List). См. также http://master19.moinmo.in/ПомощьПоСпискамДоступа и http://master19.moinmo.in/КакНастраивать/ПравилаДоступа.
  • Механизмы оповещения. Реализуют поддержку различных видов оповещений при возникновении различных событий, см. http://master19.moinmo.in/ПомощьПоОповещению.
  • Обработчики входных форматов (parsers, парсеры). Вызываются для обработки страницы или блока текста в некоем входном формате. Могут дополняться пользовательскими парсерами.
  • Обработчики выходных форматов (formatters, форматтеры). Вызываются парсерами для генерации текста в выходном формате.
  • Макрокоманды (macro). Могут использоваться в теле страницы для генерации произвольного содержимого и расширения синтаксиса, таким образом.

Каждая из описанных систем реализована в виде основного ядра и модулей, реализующих конкретную функциональность, посему каждая из них может быть дополнена сторонними модулями, что и обеспечивает определённую гибкость.[Источник 2]

Преимущества и функциональные особенности

MoinMoin хранит последние изменения страниц, позволяя пользователям легко сравнить их.

Может работать практически на любой операционной системе и со многими веб-серверами (Apache, IIS (Internet Information Services), WebLogic, Lighttpd и др.). Не требует установки дополнительного программного обеспечения, такого, как система управления базами данных или система управления версиями Благодаря наличию встроенного веб-сервера может использоваться как кросс-платформенный переносимый вики-движок (Вики, которая всегда с тобой, вне зависимости от установленной ОС). Имеет встроенный полноценный WYS/WYG-редактор (интегрированный FCKeditor), который позволяет редактировать wiki-разметку привычным для простых пользователей способом Может использовать поисковой движок Xapian[6], что предоставляет такие возможности, как индексация различных видов содержимого (в том числе различных форматов прикреплённых файлов; на данный момент поддерживается индексирование файлов в форматe Open Document Format, MS Office, PDF, различных текстовых форматов, мета-данных EXIF[7] в изображениях JPEG (Joint Photographic Experts Group) и текстовых строк в бинарных файлах), морфологический поиск, поиск файлов по типу MIME и ряд других Имеет встроенную поддержку Java-апплетов для создания иллюстраций на вики — AnyWikiDraw и TWikiDraw Поддержка механизмов обработчиков входного и выходного форматов («parser» и «formatter») позволяет использовать на вики различные синтаксисы разметки в теле страниц (на данный момент поддерживаются, помимо собственного синтаксиса, синтаксис Creole, формат reStructured Text, XML-страницы с использованием XSLT[8], отображение в виде таблиц CSV[9], подсветка синтаксиса для различных текстовых форматов, подробнее см. http://master19.moinmo.in/ПомощьПоПарсерам) и экспортировать страницы в различных форматах (помимо HTML, возможен экспорт в plain text и DocBook). Кроме того, существуют репозитории сторонних парсеров и форматтеров, позволяющих поддерживать другие форматы на вики. Как интерфейс, так и системные страницы и страницы помощи переведены на большое количество языков (более 30). Кроме того, MoinMoin имеет поддержку многоязычных вики (вики, на которых используется несколько языков для страниц). В версиях 1.8.6 и 1.9 русская локализация была обновлена. Поддержка списков доступа и различных политик безопасности на их основе. Поддержка как свободного синтаксиса ссылок, так и ссылок в CamelCase[10]. Поддержка встраивания различных форматов файлов (изображения, аудио, видео, SWF, других страниц) в тело страницы (подробнее см. http://master19.moinmo.in/КакСвязыватьСтраницы). Механизмы защиты от спама: как на основе чёрных списков (централизованно обновляемых), так и с использованием текстовой капчи. Механизм защиты от флуда: имеется возможность ограничить количество запросов определённых действий в определённый момент времени для одного IP или пользователя. Поддержка синхронизации содержимого частей нескольких вики посредством механизма XML RPC. Возможность подписываться на уведомления о различных действиях, производимых со страницами (правка, переименование, прикрепление файла, удаление, …) по почте или по XMPP[11].

Недостатки

Поскольку информация хранится в файлах, MoinMoin ориентирован на сравнительно небольшое количество страниц (по утверждению разработчиков, не более 10 000 страниц). Также, в связи со способом отображения имён страниц в имена директорий для их хранения, существуют ограничения на длину имён страниц, накладываемые используемой файловой системой.Не поддерживает редактирование секций.Отсутствует поддержка системы версий для прикреплённых файлов.

MoinMoin 2.0

Начиная с 2007 года ведётся работа над кардинальным изменением архитектуры движка, этот проект получил кодовое имя MoinMoin 2.0. Ветка 1.9, по заявлениям разработчиков, является последней среди 1.x. Версия 2.0 изначально планировалась к выходу в 2010—2011 году, но на ноябрь 2014 дата релиза всё ещё неизвестна.

Ключевые особенности версии 2.0

  • Изменённый способ хранения страниц: каждый элемент (страница или прикреплённый файл) хранится в общем хранилище унифицировано, с каждым элементом (Item) связана история версий и метаданные.
  • Поддержка различных способов хранения содержимого вики: на данный момент заявлена поддержка hg, различных SQL БД посредством SQLAlchemy, файловое хранилище 1.x и новый формат файлового хранилища.
  • Преобразование элементов из входного формата в формат представления посредством wiki DOM.
  • Темы внешнего вида на основе Jinja2.
  • Миграция на CKEditor в качестве WYSIWYG-редактора.
  • Переработка системы модулей и XML-RPC (Extensible Markup Language Remote Procedure Call).

На сайте http://test.moinmo.in/ развёрнута тестовая установка MoinMoin 2.0.

Установка MoinMoin на сервер с FreeBSD или Ubuntu

Будем устанавливать MoinMoin из архива, под apache с mod_wsgi. Это самый простой и рекомендуемый вариант. Установку выполним в полностью ручном режиме. Еще есть возможность скачать дистрибутив и сказать sudo python setup.py install ... Еще под FreeBSD есть собранный пакет с MoinMoin, но все-таке попробуем ручную установку. Потому что она дает возможность “потрогать”, как программа работает, и оставляет больше свободы для обновлений и модификаций. В примере устанавливается версия 1.9.7, при обновлениях порядок действий скорее всего останется примерно таким же. За пример взята установка на FreeBSD. На Ubuntu и другие Linux’‘ы должно ставиться вполне аналогично, разве что типичный путь для файлов веб-сервера может быть не /usr/local/www, а /var/www, да пользователь для apache – не www, аwww-data.[Источник 3]

Обеспечение зависимостей

Внешних зависимостей совсем мало: Apache 2 (наверняка уже есть в системе) и mod_wsgi. mod_wsgi, естественно, подключаем в конфиг apache (в Ubuntu путь к файлу будет другой):

 LoadModule wsgi_module        libexec/apache22/mod_wsgi.so

Установку выполняем под root’‘ом (sudo -s).

Создание необходимых каталогов

//sudo -s
mkdir -p /usr/local/www/moin/code 
mkdir -p /usr/local/www/moin/config
mkdir -p /usr/local/www/moin/wsgi  
mkdir -p /usr/local/www/moin/static
  mkdir -p /home/moin 

В /usr/local/www/moin/code будет находиться код. Строго не рекомендуется менять вручную какие-либо файлы в этом каталоге, потому что при обновлении изменения потерялись бы.

В /usr/local/www/moin/config будут храниться настройки, их будем редактировать руками.

В /usr/local/www/moin/wsgi положим wsgi-файл, его тоже отредактируем.

В /usr/local/www/moin/static скопируем статические файлы. Это не обязательно, но так будет проще менять оформление и не трогать при этом основной код.

В /home/moin MoinMoin будет хранить самое главное – тексты страниц.

Скачивание дистрибутива

Со странцы http://moinmo.in/MoinMoinDownload берем ссылку на архив со свежей версией (http://static.moinmo.in/files/moin-1.9.7.tar.gz)

//sudo -s
wget http://static.moinmo.in/files/moin-1.9.7.tar.gz
tar -xzf moin-1.9.7.tar.gz
cd moin-1.9.7
~/moin-1.9.7> lynx docs/INSTALL.html 

С дистрибутивом поставляется инструкция по установке: docs/INSTALL.html. Можно обратиться к ней, если требуется более сложная конфигурация.

Раскладывание необходимых данных

По порядку: основной код, шаблон конфига, шаблон wsgi-файла, каталог со статикой, шаблон каталогов для данных.

//sudo -s
~/moin-1.9.7> sudo cp -r . /usr/local/www/moin/code
~/moin-1.9.7> cd /usr/local/www/moin
/usr/local/www/moin> cp code/wiki/config/wikiconfig.py config
/usr/local/www/moin> cp code/wiki/server/moin.wsgi wsgi
/usr/local/www/moin> cp -r code/MoinMoin/web/static/htdocs static
/usr/local/www/moin> cp -r code/wiki/data /home/moin
/usr/local/www/moin> cp -r code/wiki/underlay /home/moin
/usr/local/www/moin> sudo chown -R root:wheel /usr/local/www/moin
/usr/local/www/moin> sudo chown -R www:www /home/moin 

Настройки

/usr/local/www/moin> vim config/wikiconfig.py Надо отредактировать или внести следующие строки (sitename и interwikiname выбрать на свое усмотрение):

//sudo -s
data_dir = '/home/moin/data'
data_underlay_dir = '/home/moin/underlay'
sitename = u'My New Wiki'
interwikiname = u'MydomainWiki'

В конфиг apache добавляем настройки VirtualHost:

<VirtualHost *:80>
DocumentRoot "/usr/local/www/moin/"
 ServerName moin.mydomain.ru
 ErrorLog "/var/log/moin_error_log"
 CustomLog "/var/log/moin_access_log" common
 <Directory "/usr/local/www/moin/">
 Order allow,deny
 Allow from all
 </Directory>
 WSGIScriptAlias / /usr/local/www/moin/wsgi/moin.wsgi
 <Directory /usr/local/www/moin/wsgi>
 Order allow,deny
 Allow from all
 </Directory>
</VirtualHost>

Рестартим apache, идем браузером на moin.mydomain.ru. Если все было сделано правильно, должна открыться страница LanguageSetup.

Создание логина

Вверху страницы есть ссылка Login, на открывающейстя странице предлагают создать логин. Создаем. Снова идем редактировать настройки: sudo vim /usr/local/www/moin/config/wikiconfig.py, раскомментируем строку #superuser = [u"YourName", ] и подставляем в нее свой новосозданный логин.

Установка стартовой страницы

sudo vim /usr/local/www/moin/config/wikiconfig.py, раскомментируем строку page_front_page = u"FrontPage" и подставляем в нее имя страницы, которую хотим видеть при входе на сайт.

Использование платформы MoinMoin Wiki

Примечания

  1. http://moinmo.in/MoinMoinDownload
  2. Клиент-серверный FastCGI https://ru.wikipedia.org/wiki/FastCGI
  3. Стандарт WSGI (англ. Web Server Gateway Interface) https://ru.wikipedia.org/wiki/WSGI
  4. Модуль pickle https://pythonworld.ru/moduli/modul-pickle.html
  5. LDAP (англ. Lightweight Directory Access Protocol) https://ru.wikipedia.org/wiki/LDAP
  6. Библиотека Xapian https://ru.wikipedia.org/wiki/Xapian
  7. Стандарт EXIF https://ru.wikipedia.org/wiki/EXIF
  8. Язык программирования XML-документов XSLT (eXtensible Stylesheet Language Transformations) https://ru.wikipedia.org/wiki/XSLT
  9. Текстовый формат для таблиц CSV (от англ. Comma-Separated Values — значения, разделённые запятыми) https://ru.wikipedia.org/wiki/CSV
  10. Стиль написания слов CamelCase https://ru.wikipedia.org/wiki/CamelCase
  11. Протокол обмена сообщениями XMPP (Extensible Messaging and Presence Protocol) https://ru.wikipedia.org/wiki/XMPP

Источники

  1. MoinMoin//Академик.[2000-2017]. Дата обновления:01.02.17 URL: https://dic.academic.ru/dic.nsf/ruwiki/287991 (Дата обращения:31.10.17)
  2. Вики-движок MoinMoin //Wikipedia.[2000-2017]. Дата обновления:09.04.17 URL: https://ru.wikipedia.org/wiki/MoinMoin (Дата обращения:31.10.17)
  3. MoinMoin (краткое введение) // Wikipedia.[2000-2017]. Дата обновления:09.04.17 URL: http://blog.liruoko.ru/ru/2013-08/welcome-to-moinmoin/#section (Дата обращения:31.10.17)