MoinMoin – простой wiki-движок (вики-движок) с файлами в качестве хранилища (не нужна никакая отдельная БД). Также у него довольно удобная разметка и приятно-лаконичный умолчальный дизайн. Написан на Python.
Используется, например, на https://wiki.freebsd.org/
Будем устанавливать 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
необратим, семь раз отмерь – один отрежь, бекап – друг админа.
Редактируем файл /usr/local/www/moin/config/wikiconfig.py
,
добавляем переменные page_header1
и page_footer2
:
page_header1 = """
<код счетчика Метрики>
"""
page_footer2 = """
<код счетчика Аналитики>
"""
Справка по переменным, которые подставляются в разные точки 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>>
См. также список стандартных макросов.