Архив метки: moinmoin2

Запуск MoinMoin2.0 под Apache22 на FreeBSD9

Предполагается, что moin2 расположен в /home/ishayahu/moin-2.0
Для начала нам надо установить сам апач и mod_wsgi, чтобы он мог работать с Flask (я использую для этого portmaster (/usr/ports/ports-mgmt/portmaster)):
#portmaster www/apache22 www/mod_wsgi
Далее создаём файл moin-2.0/moinmoin2.wsgi, чтобы апач мог запускать Flask приложение:
#для работы mod_wsgi, так как он блокирует sys.stdout
import sys
sys.stdout=sys.stderr
# Собственно для Flask
from MoinMoin.app import create_app
application = create_app('/home/ishayahu/moin-2.0/wikiconfig.py')

Теперь будем настроивать апач. Создадим конфигурацию виртульного хоста: файл /usr/local/etc/apache22/Includes/wiki.local.conf

    ServerAdmin meoc-it@mail.ru
    DocumentRoot /home/ishayahu/moin-2.0
    ServerName wiki.local
    ServerAlias www.wiki.local
    ErrorLog /home/ishayahu/wiki.local-error_log
    CustomLog /home/ishayahu/wiki.local-access_log combined
    WSGIDaemonProcess moinmoin2 user=ishayahu group=ishayahu threads=5
    WSGIScriptAlias / /home/ishayahu/moin-2.0/moinmoin2.wsgi
   
        WSGIProcessGroup moinmoin2
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
   
Настроиваем запуск вики как сервиса. Создаём файл для запуска апача в виртуальном окружении (нужно виртуальное окнужение для работы moin; не забыть chmod +x /root/start_wiki) /root/start_wiki:
#!/bin/bash
source /home/ishayahu/moin-2.0/env/bin/activate
/usr/local/etc/rc.d/apache22 onestart
Создаём файл для регистрации вики как сервиса /etc/rc.d/wiki (не забыть chmod +x /etc/rc.d/wiki):
#!/bin/sh
#
# PROVIDE: wiki
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name=»wiki»
start_cmd=»${name}_start»
stop_cmd=»/usr/local/etc/rc.d/apache22 stop»

wiki_start()
{
    /bin/bash /root/start_wiki
}

load_rc_config $name
run_rc_command «$1»
И в /etc/rc.conf:
wiki_enable=»YES»

Автор: Ishayahu Lastov

MoinMoin2. Документация. Введение в настройку MoinMoin

Типы конфигурационных файлов

Для изменения того, как moinmoin себя ведёт и выглядит, Вы можете настроить его, редактируя конфигурационные файлы:
  • Конфигурация движка Wiki
    • файл чаще всего называется wikiconfig.py, но может иметь и другое имя
    • в этом файле находятся классы конфига движка вики
    • он написан на Python
  • Конфигурация фреймворка
    • расположена в том же файле, что и конфигурация движка вики
    • содержит некоторые настройки в ВЕРХНЕМ РЕГИСТРЕ в конце файла. Это конфигурация фреймворка (Flask и его расширений)
    • он написан на Python
  • Конфигурация логирования
    • опциональна; если Вы не хотите настраивать логирование — будут использованы встроенные настройки
    • это отдельный файл, назвается чаще всего logging.conf
    • имеет .ini подобный формат файла

Меняйте понемногу и храните резервные копии

Начните с простого конфига, поставляемого с moin и меняйте его понемногу и каждый раз проверяйте работоспособность.
Если Вы не знакомы с форматом файла конфигурации, храните копию последнего работающего конфига на случай, если Вы вдруг сделаете трудно отлавливаемую ошибку.

Редактирование файлов Python

Когда Вы редактируете файлы Python, будьте осторожны с отступами, используйте лишь отступы, кратные 4 пробелам и не используйте табуляцию.
Кроме того, будьте внимательны к синтаксису вообще; это должен быть корректный код на Python, иначе Вы получите ошибку при попытке загрузки конфигурации. В таком случае прочитайте внимательно сообщение об ошибке, в нём скорее всего будет содержаться номер строки и описание проблемы. Если у Вас не получается решить проблему — восстановите из резервной копии последний рабочий конфиг.

Зачем использовать Python для конфигурации?

Вы, конечно, можете удивиться, почему мы используем код Python для конфигурации. Одна из причин в том, что это очень мощный язык. Moinmoin сам по себе разработан на Python и использование чего-либо другого потребовало бы больше времени для введения новой функциональности.

wikiconfig.py

wikiconf.py выглядит таким образом:
# -*- coding: utf-8 -*-
from MoinMoin.config.default import DefaultConfig

class Config(DefaultConfig):
    # некоторый комментарий
    sometext = u'your value'
    somelist = [1, 2, 3]

MOINCFG = Config # Flask любит только верхний регистр
SOMETHING_FLASKY = 'foobar'
Давайте разберём это строка за строкой:
  1.  Мы объявляем кодировку конфигурационного файла; убедитесь, что ваш редактор использует ту же самую кодировку, особенно, если Вы используете не ASCII символы
  2. импортируем класс DefaultConfig из кода moin; в нём содержатся значения по умолчанию для всех настроек, что экономит ваш труд, так как Вы должны указать тут только те параметры, которые Вы хотите переопределить
  3. пустая строка для лучшего восприятия
  4. определяем новый класс Config, дочерний классу DefaultConfig. Это и есть настройки движка вики и он переопределяет значения из DefaultConfig.
  5. знак # указывает на комментарий в вашем конфиге. Эта строка, как и последующие строки в пределах Config имет отступ в 4 пробела, так как Python определяет блоки по отступам
  6. определяем атрибует Config'a c именем sometext и значением u'your value', где «u» указывает на то, что это строка юникода
  7. определяем атрибует Config'a c именем somelist и значением [1, 2, 3], это список с эементами 1, 2 и 3
  8. пустая строка для лучшего восприятия
  9. специальная строка «MOINCFG = Config» должна иметь именно такой вид по техническим причинам
  10. код в верхнем регистре находится в конце файла, вне класса Config и является настройкой фреймворка; обычно это что-то для Flask'a или его расшире

MoinMoin2. Документация. Загрузка и установка

Примечание, курсивом выделены вставки, сделанные мной на личном опыте

 Загрузка

Для moin2 пакеты пока не доступны, так что Вы должны получить его из репозитория. Вы можете использовать один или два URLa репозиториев и либо использовать Mercurial для поддержки кода в актуальном состоянии, или же скачать файлы в архие tar.gz:
  • Использование Mercurial для клонирования одного из репозиториев:
    hg clone http://hg.moinmo.in/moin/2.0 moin-2.0
    или
    hg clone http://bitbucket.org/thomaswaldmann/moin-2.0 moin-2.0
    после этого убедитесь, что ваша рабочая директория использует ветку default:
    cd moin-2.0
    hg up -C default
  • В качестве альтернативы посетите http://hg.moinmo.in/moin/2.0 и скачайте архив (обычно, для ветки default) и распакуйте его

Установка

Перед тем, как Вы запустите moin, Вы должны его установить:

Установка разработчика

Использование стандартной установки Python или каталога  virtualenv

Пожалуйста, убедитесь, что у Вас установлен virtualenv, который включает в себя pip.

Если вы всего лишь хотите запускать moin из рабочего каталога mercurial со стандартной установкой Python, выполните следующую комманду в этом каталоге. Вы не должны выполнять её как администратор машины, используйте стандартный аккаунт пользователя:
./quickinstall # для Linux и других POSIX OS
# или
quickinstall.bat # для Windows
На FreeBSD 9.1 bash не установлен по умолчанию, а он нужен для работы этого скрипта. Так что сперва Вам нужно установить bash:
cd /usr/ports/shells/bash/ && make install clean
после чего надо будет отредактировать первую строку скрипта, указав путь к bash:
#!/usr/local/bin/bash
Эта команда использует virtualenv для создания каталога env/ в текущем рабочем каталоге, создаёт виртуальное окружение для MoinMoin и затем устанавливает moin2 со всеми зависимостями в этот каталог. pip автоматически скачает все зависимости из PyPI и установит их, так что это может занять некоторое время. Кроме того, будут скомпилированы все переводы (файлы *.po) в бинарные файлы *.mo.
Просмотрите вывод скрипта quickinstall  и проверьте отсутствие ошибок.
Если у Вас плохое подключение к сети из-за чего скачивание прерывается, Вы можете попробовать выполнить шаги из quickinstall вручную.
Кроме того, quickinstall создаст скрипт moin для вашей платформы, который Вы сможете использовать для запуска встроенного сервера или команды moin.
После того, как Вы активируете виртуальное окружение (sourcer bin/activate выполненый в bash), встроенный серверный скрипт с именем moin будет находиться в вашем стандартном пути, так что Вы можете просто запустить команду moin из вашей командной строки.
Примечание: в этом специальном режиме MoinMoin код не будет скопирован в каталог env/, всё будет запускаться из вашей рабочей директории, так что Вы можете напрямую править код и смотреть, что получается. Процедуру установки надо выполнить только один раз.

Использование другого Python или другого каталога virtualenv

Например, если Вы хотите использовать PyPy и хотите, чтобы каталог для virtualenv назывался env-pypy, выполните команду:
# для Linux
DIR=env-pypy
PYTHON=/opt/pypy/bin/pypy
Таким образом, Вы можете проверить разные версии Python в разных каталогах вашего рабочего каталога.

Активирование виртуального окружения

ВАЖНО: Вы всегда должны активировать ваше виртуальное окружение перед запуском чего-либо, что будет выполнять код moin! Иначе не будет найдена ни команда moin, ни код moin, ни необходимые библиотеки. Кроме того, если Вы хотите установить дополнительное ПО в виртуальное окружение, активируйте его перед запуском pip!
source env/bin/activete # для Linux или других POSIX OS
# или
envScriptsactivate.bat # для Windows
После того, как Вы активировали виртуальное окружение, команда moin будет в вашем пути, так что Вы сможете выполнить её.

Помогаем moin найти конфигурацию wiki

moin так же должен обнаружить конфигурацию wiki. Если Вы хотите запустить moin самым простым способом, без передачи параметров команде moin, проще всего это будет сделать из каталога с конфигурационными файлами, т.е. wikiconfig.py.
Если Вы работаете в рабочем каталоге репозитория, то Вам нужен каталог верхнего уровня, где есть уже готовый к использованию wikiconfig.py.
В случае, если Вы хотите указать путь к файлу с конфигурацией, используйте абсолютный путь. moin будет искать конфигурационный файл в таком порядке:
  1. аргумент командной строки —config /path/to/wikiconfig.py
  2. переменная окружения MOINCFG=/path/to/wikiconfig.py
  3. текущий каталог, файл wikiconfig_local.py
  4. текущий каталог, файл wikiconfig.py

 Инициализация индекса и/или хранилища

Если у Вас уже есть хранилищи И индекс (для содержимого этого хранилища и для этой версии moin), Вы можете пропустить этот раздел.
Если Вы начинаете с самого начала, то есть ни хранилища ни индекса ещё не создано, то Вам нужно создать пустое хранилище и пустой индекс:
# создаём хранилище и индекс:
moin index-create -s -i

Загружаем некоторые элемента

Если Вы не хотите получить совсем пустую вики, Вы можете, по желанию, загрузить в хранилище некоторые примеры, например:
moin load —file contrib/serialized/items.moin

Строим индекс

Если у Вас уже есть некоторые элементы в хранилище, но индекса ещё нет, то его нужно построить:
moin index-build

Установка PIL

Для некоторых функций обработки изображений, котоыре использует MoinMoin, например, изменение размера или поворот, Вам нужен PIL — Python Imaging Library.
Пользователи Windows, которые хотят установить PIL должны пропустить этот раздел и перейти к Решение проблем — Установка PIL под Windows.
Если Вы устанавливаете PIL при помощи pip, тогда pip постарается найти библиотеку поддержки jpeg  и ассоциированные заголовки разработки в вашей системе, и если у Вас их нет — то Вы не получите поддержки jpeg в PIL. Так что если Вы хотите обеспечить эту поддержку, убедитесь, что у Вас есть jpeg библиотеки и заголовки:
# установка jpeg библиотеки и заголовков разработки
sudo apt-get install libjpeg62-dev # Ubuntu/Debian
yum install libjpeg-turbo-devel #Fedora/Redhat
cd /usr/ports/graphics/jpeg/ && make install clean # FreeBSD
После этого активируйте виртуальное окружение и установите PIL:
pip install pil

Решение проблем

PyPI не работает

Всегда может быть так, что PyPI окажется недоступен. В этом случае можно использовать зеркала b.pypi.python.org, c.pypi.python.org, d.pypi.python.org. Вам только нужно сказать об этом pip:
# разместите это в ~/.pip/pip.conf
[global]
index-url = http://c.pypi.python.org/simple
В случае, если и это не будет работать, попробуйте mini pypi, где должны быть все необходимые для moin пакеты:
# разместите это в ~/.pip/pip.conf
[global]
index-url = http://pypi.moinmo.in/simple

Проблемы с сетью

Если у Вас плохое или ограниченное подключение к сети, у Вас могут возникнуть проблемы с командами, выполняемыми скриптом quickinstall. Вы можете увидеть трассировку pip, ошибки таймаута и т.д. Обратите внимание на эти сообщения.
В этом случае попробуйте сделать это вручную:
# перейдите в виртуальное окружение:
source env/bin/activate
# убедитесь в проблемах, запустив
pip install -e .
После этого установите каждый пакет в ваше виртуальное окружение вручную:
  •  Найдите все нужные пакеты, перечисленные в install_requires из файла setup.py
  • Загрузите все нужные пакеты из http://pypi.python.org/
  • Установите все эти пакеты:
    pip install package.tar
  • Теперь попробуйте ещё раз:
    pip install -e .

Повторите эти шаги, пока не прекратится появление ошибок.

Установка PIP под Windows

PIL версии 1.1.7 не устанавливается корректно командой pip install pil на Windows. Некоторым пользователям удалось сделать это при помощи pip install pillow, установив форк PIL'a, устранающего эту проблему. Другие установили PIL 1.1.6 в каталог установки Python, скачав его с http://www.pythonware.com/products/pil/

Автор: Ishayahu Lastov

MoinMoin2 документация. Требования

MoinMoin требует Python >= 2.6 и < 3.0. Мы обычно тестируем работу на CPython и рекомендуем использовать его. Кроме того, можно попробовать PyPy >= 1.6

Сервера

Для moin можно использовать любой сервер, совместимый с WSGI:
  • встроенный сервер «moin» рекомендуется для однопользовательских wiki, тестирования, отладки, разработки и т.п.
  • Apache c mod_wsgi рекомендуется для больших/популярных вики
  • Другие WSGI совместимые сервера или middleware
  • Для cgi, fastcgi, ajp и т.д. можно использовать middleware flup
  • IIS со шлюзом ISAPI-WSGI тоже можно использовать

Зависимости

Зависимости перечислены в setup.py.

Если Вы используете easy_install, pip или наш скрипт quickinstall, тогда зависимости должны установиться автоматически.

Клиенты

На стороне клиента Вам нужны:
  • приличный веб-браузер, поддерживающий W3C стандарт HTML 5, CSS 2.1 и JavaScript:
    • Любая текущая версия Firefox, Chrome, Opera, Safari, IE (9/10) должны работать
    • Использование более старых версий IE не рекомендуется и не поддерживается
    • Для Windows 7/8 MS предоставляет IE 9/10
  • Java плагин для браузера (опционально, если Вы хотите использовать TWikiDraw или AnyWikiDraw для рисования аплетов)

Автор: Ishayahu Lastov