MoinMoin -- краткое введение

Пошаговая инструкция по установке и первичной настройке wiki-движка MoinMoin.

31 Aug 2013


...

Что такое MoinMoin

MoinMoin – простой wiki-движок (вики-движок) с файлами в качестве хранилища (не нужна никакая отдельная БД). Также у него довольно удобная разметка и приятно-лаконичный умолчальный дизайн. Написан на Python.

Используется, например, на https://wiki.freebsd.org/

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

Будем устанавливать MoinMoin из архива, под apache с mod_wsgi. Это самый простой и рекомендуемый вариант.

Установку выполним в полностью ручном режиме. Еще есть возможность скачать дистрибутив и сказать sudo python setup.py install ..., но я против выполнения прикладных скриптов под sudo.
Еще под FreeBSD есть собранный пакет с MoinMoin, но все-таке попробуем ручную установку. Потому что она дает возможность “потрогать”, как программа работает, и оставляет больше свободы для обновлений и модификаций.

В примере устанавливается версия 1.9.7, при обновлениях порядок действий скорее всего останется примерно таким же.

За пример взята установка на FreeBSD. На Ubuntu и другие Linux’‘ы должно ставиться вполне аналогично, разве что типичный путь для файлов веб-сервера может быть не /usr/local/www, а /var/www, да пользователь для apache – не www, аwww-data.

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

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

Внешних зависимостей совсем мало: Apache 2 (наверняка уже есть в системе) и mod_wsgi.

mod_wsgi, естественно, подключаем в конфиг apache (в Ubuntu путь к файлу будет другой):

LoadModule wsgi_module        libexec/apache22/mod_wsgi.so

Возможно, при установке пакета эта строчка добавилась в httpd.conf автоматически.

Создаем нужные каталоги

~> 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 будет хранить самое главное – тексты страниц. Поскольку это очень важная информация, строго не рекомендуется помещать этот каталог внутрь DocumentRoot веб-сервера. По-моему, /home – как раз подходящее место: его всегда берегут и при бекапах вспоминают в первую очередь ;)

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

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

~> 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-файла, каталог со статикой, шаблон каталогов для данных.

~/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 выбрать на свое усмотрение):

data_dir = '/home/moin/data'
data_underlay_dir = '/home/moin/underlay'

sitename = u'My New Wiki'
interwikiname = u'MydomainWiki'

/usr/local/www/moin> vim wsgi/moin.wsgi:

sys.path.insert(0, '/usr/local/www/moin/code')
sys.path.insert(0, '/usr/local/www/moin/config')

application = make_application(shared='/usr/local/www/moin/static/htdocs')

В конфиг 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" и подставляем в нее имя страницы, которую хотим видеть при входе на сайт.

Готово!

Все готово, можно начинать создавать страницы.

Типичные задачи администрирования

Умолчальные права на страницы

Редактируем файл /usr/local/www/moin/config/wikiconfig.py, меняем переменную acl_rights_default (или добавляем ее, если не было):

acl_rights_default = u'Known:read,write,delete,revert All:read'

Эта настройка разрешает зарегистрированным пользователям читать, редактировать, удалять страницы и отменять правки, а незарегистрированным – только читать.

См. также http://moinmo.in/SecurityPolicy#Only_allow_editing_for_known_users

Закрываем регистрацию

Если предполагается, что установленной wiki будут пользоваться достаточно ограниченное количество пользователей, то стоит закрыть свободную регистрацию в ней.

http://www.moinmo.in/FeatureRequests/DisableUserCreation – обсуждение целей и способов выключения свободной регистрации.

В версии 1.9.7 работает такой способ:
редактируем файл /usr/local/www/moin/config/wikiconfig.py. В шапку вносим строку

import MoinMoin

внутрь класса Config пишем:

actions_excluded = MoinMoin.config.multiconfig.DefaultConfig.actions_excluded + ['newaccount']

Удаляем пользователя

http://www.moinmo.in/HelpOnUserHandling

~> cd /home/moin

/home/moin> sudo grep name=UserToDelete data/user/*

/home/moin> sudo rm <файл, найденный предыдущей командой>

Осторожно! rm необратим, семь раз отмерь – один отрежь, бекап – друг админа.

Устанавливаем Яндекс.Метрику и Google Analytics

Редактируем файл /usr/local/www/moin/config/wikiconfig.py, добавляем переменные page_header1 и page_footer2:

page_header1 = """
<код счетчика Метрики>
"""

page_footer2 = """
<код счетчика Аналитики>
"""

Идея взята из блог1, блог2.

Справка по переменным, которые подставляются в разные точки html-страниц: http://www.moinmo.in/HelpOnThemes#Modify_wiki_configuration

Завести счетчик Метрики: http://metrika.yandex.ru.

Полируем внешний вид

Проверяем предварительные настройки

Проверяем, что настройки для статических файлов работают так, как задумано: заменяем фавиконку /usr/local/www/moin/static/htdocs/favicon.ico на другую и проверяем, что по адресу moin.mydomain.ru/favicon.ico показывается именно она.

Кладем в /usr/local/www/moin/static/htdocs/common какую-нибудь картинку и смотрим, что она доступна по адресу moin.mydomain.ru/moin_static197/common/myimage.png (url берем от логотипа MoinMoin на любой странице и заменяем имя файла).

Если что-то из этого не сработало – идем разбираться, что не так с настройками. Цель – чтобы все статические файлы MoinMoin брал из каталога /usr/local/www/moin/static/htdocs/.

Меняем скины, темы оформления

http://moinmo.in/HelpOnThemes – справка

http://moinmo.in/ThemeMarket – сборник готовых скинов

Общий порядок: скачиваем архив, распаковываем, копируем файл <имя темы>.py в каталог /home/moin/data/plugin/theme/, а каталог <имя темы> – в /usr/local/www/moin/static/htdocs/.

После этого новую тему можно выбрать на странице настроек (Settings-Preferences-Preferred theme).

Пример для Moniker:

> wget -O moniker19-2.1.1.zip 'http://moinmo.in/ThemeMarket/Moniker?action=AttachFile&do=get&target=moniker19-2.1.1.zip'

> unzip moniker19-2.1.1.zip 

> cd moniker19-2.1.1

> cp moniker19.py /home/moin/data/plugin/theme/ 

> cp -r moniker/ /usr/local/www/moin/static/htdocs/moniker

Важно! Для того, чтобы установить умолчальную тему для незалогиненных пользователей, редактируем файл /usr/local/www/moin/config/wikiconfig.py, добавляем в него строку:

theme_default = 'moniker19'

Если хотим поменять стандартную тему: делаем копию, редактируем ее. Например, сделаем тему my_modernized:

> sudo cp /usr/local/www/moin/code/MoinMoin/theme/modernized.py /home/moin/data/plugin/theme/my_modernized.py

> sudo cp -r /usr/local/www/moin/static/htdocs/modernized /usr/local/www/moin/static/htdocs/my_modernized

Устанавливаем и используем макросы

Выбираем нужный макрос: http://moinmo.in/MacroMarket

Например, выбрали ChildPages – генератор списка “вложенных” страниц у текущей страницы.

Со страницы макроса скачиваем файл-исходник (py-файл).

> wget http://launchpad.net/moin-childpages/trunk/2012.12.29/+download/ChildPages%202012.12.29.py

> ls ChildPages\ 2012.12.29.py 
ChildPages 2012.12.29.py

Помещаем скачанный файл в каталог /home/moin/data/plugin/macro. Важно! Скорее всего, скачанный файл содержит в имени номер версии или дату релиза (в нашем случае 2012.12.29). Их надо удалить, файл должен называться просто <имя макроса>.py.

sudo mv ChildPages\ 2012.12.29.py /home/moin/data/plugin/macro/ChildPages.py

Рестартим apache и пользуемся новым макросом.

Макросы вставляются в текст страницы в двойных угловых скобках: <<ChildPages>>

См. также список стандартных макросов.

Дополнительно читаем