## Please edit system and help pages ONLY in the master wiki!
## For more information, please see MoinMoin:MoinDev/Translation.
##master-page:HelpOnConfiguration
##master-date:2011-01-27T19:39:19Z
#acl -All:write Default
#format wiki
#language ru

= Конфигурирование вики =

<<TableOfContents>>

Данная страница должна помочь в процессе конфигурирования уже установленной вики на базе МойнМойн.

<<Anchor(character-set)>>
== Кодировка ==

МойнМойн использует Юникод для внутреннего представления строк и кодировку UTF-8 для ввода/вывода, в который входят хранение страниц, генерация HTML-страниц и файлы с переводами. Кодировка, используемая для чтения и записи внешних ресурсов, задана в параметре `config.charset` как `utf-8`. Данное значение подходит для любого языка, так как любой символ может быть закодирован в UTF-8. Не рекомендуется менять значение данного параметра, не смотря на то, что технически это возможно.

<!> '''Для использования в значениях параметров строк с символами, не входящими в набор символов ASCII (коды символов 32—127), необходимо указать корректную кодировку у файла конфигурации. Также рекомендуется проверить, что параметры консоли и редактора относительно используемых корректны.'''

Ряд параметров '''обязан''' использовать в значениях строки Юникод. Например, имя сайта может содержать немецкие умляуты, или французские диакритические символы, или быть на русском или иврите. В связи с этим необходимо использовать строки Юникод для задания подобных значений. Строки Юникод задаются путём предварения их символом «u». Примеры использования:
{{{#!highlight python
   # Site name, used by default for wiki name-logo [Unicode]
   sitename = u"Jürgen's Wiki"
   # Ещё один пример:
   sitename = u'Вики-сайт'
}}}

Рекомендуется читать комментарии в конфигурационном файле, так как в ни обычно указано, какие параметры обязаны использовать Юникод.

Примечания:
 * В рамках одного файла невозможно смешивать строковые литералы в различных кодировках. Если в строке кодировки файла указано, что используется кодировка `koi8-r`, то всё содержимое файла должно использовать её.
 * При использовании кодировки UTF-8 (или только ASCII) нет необходимости использовать строки Юникод, МойнМойн может самостоятельно корректно декодировать строки в этом случае.

<<Anchor(intsetup)>>
== Использование различных кодировок в файле конфигурации ==

Конфигурационный файл по умолчанию в составе дистрибутива МойнМойн использует кодировку ISO 8859-1. Это не вызывает проблем в случае использования западноевропейских языков, таких как английский или немецкий, но непригодно для использования способов письма, не использующих латиницу. Необходимо использовать кодировку UTF-8 при использовании в файле конфигурации символов, отличных от латиницы.

Для этого достаточно указать следующую строку первой во всех конфигурационных файлах:
{{{
# -*- coding: utf-8 -*-
}}}

/!\ Для редактирования конфигурационных файлов в кодировке UTF-8 необходим текстовый редактор, который корректно обрабатывает данную кодировку и действительно её использует.

Параметры, значения которых являются строками Юникод, могут быть распознаны по значениям по умолчанию с префиксом «`u"..."`» или «`ur"..."`» (префиксный символ «u» означает «unicode» — Юникод) или в случае, когда в описании явно указано сие.

== Задание шаблонов имён различных видов страниц ==

МойнМойн выделяет несколько видов специальных страниц ([[ПомощьПоГруппам|группы]], [[ПомощьПоСловарям|словари]], [[ПомощьПоКатегориям|категории]], [[ПомощьПоШаблонам|шаблоны]]), которые могут использоваться в различных частях интерфейса (категории доступны для добавления в выпадающем списке в редакторе, список доступных на вики шаблонов показывается при создании страницы, и т. д.) или обрабатываются специальным образом (значения [[ПомощьПоПеременным|переменных]] не подставляются при сохранении страницы-шаблона). Для задания шаблонов имён подобных специальных страниц служит несколько параметров конфигурации — «`page_category_regex`», «`page_dict_regex`», «`page_group_regex`», «`page_template_regex`». Примеры их настройки для различных языков приведены на странице MoinMoin:ConfigMarket. Ниже представлены два варианта конфигурации для русскоязычного вики-сайта:
 * Для вики-сайта только с русскоязычным содержанием и посетителями: {{{#!highlight python numbers=off
    page_category_regex = ur'(?P<all>Категория(?P<key>\S+))'
    page_dict_regex     = ur'(?P<all>(?P<key>\S+)(Словарь|Dict))'
    page_group_regex    = ur'(?P<all>Группа(?P<key>\S+))'
    page_template_regex = ur'(?P<all>Шаблон(?P<key>\S+))'
}}}
 * Для двуязычного (русский, английский) вики-сайта (рекомендуемая конфигруация): {{{#!highlight python numbers=off
    page_category_regex = ur'(?P<all>(Категория|Category)(?P<key>\S+))'
    page_dict_regex     = ur'(?P<all>(?P<key>\S+)(Словарь|Dict))'
    page_group_regex    = ur'(?P<all>((?!.*Group)(?P<ru>Группа))?(?P<key>\S+)(?(ru)|Group))'
    page_template_regex = ur'(?P<all>((?!.*Template)(?P<ru>Шаблон))?(?P<key>\S+)(?(ru)|Template))'
}}}


== Конфигурирование возможностей настройки учётной записи ==

Администратор может жёстко задать, отключить или запретить отдеьные параметры настройки учётной записи, см. КакНастраивать/НастройкиУчётнойЗаписи.

<<Anchor(singlewiki)>>
== Конфигурирование единичного экземпляра вики ==

В случае, если на сервере запускается единичный экземпляр вики, нет необходимости копировать файл `farmconfig.py` в каталог с конфигурационными файлами (удалите этот файл и одноимённый файл с расширением `.pyc` в случае, если они там есть). Если файл конфигурации фермы отсутствует, МойнМойн использует файл `wikiconfig.py`.

Файл `wikiconfig.py` может находиться где угодно, необходима лишь возможность импортирования его МойнМойн — для этого рекомендуется добавить каталог, в котором он находится, первым элементом в `sys.path` (это список путей, в которых Python ищет импортируемые файлы). Задание `sys.path` происходит на раннем этапе запуска сервера, обычно в скрипте-адаптере (например, `moin.cgi` или `moin.wsgi`) — см. комментарии к соответствующему скрипту для подробностей.

Основные замечания по структуре файла конфигурации вики или фермы:
{{{#!python
# -*- coding: utf-8 -*-

from MoinMoin.config.multiconfig import DefaultConfig

class Config(DefaultConfig):

   sitename = u'МояВики'   # префикс «u» означает, что строка будет сконфертирована в юникод 
   interwikiname = 'MyWiki'
   data_dir = '/путь/к/каталогу/data/'
   underlay_dir = '/путь/к/каталогу/underlay/'
   
   # Другие параметры конфигурации располагаются ниже
}}}

 * В начале идёт указание кодировки конфигурационного файла. По умолчанию указана кодировка ISO 8859-1, соответствующая символам в западноевропейских языках. При использовании других языков рекомендуется указать кодировку UTF-8, подробнее см. [[#intsetup|соответствующий раздел]]. Если не определить кодировку, то использование в конфигурационном файле символов, не входящих в набор символов ASCII, невозможно.
 * Далее импортируется модуль с конфигурацией МойнМойн по умолчанию. Конфигурация по умолчанию включает в себя значения для всех необходимых параметров, посему нет необходимости задавать все параметры в конфигурационном файле, только необходимые для подстроки под имеющиеся нужды.
 * После этого определяется новый класс конфигурации с именем «`Config`» и наследующий все параметры конфигурации из конфигурации по умолчанию, которая была импортирована ранее. Важно отметить, что класс обязан иметь имя «`Config`».
 * Далее в классе задаются значения параметров. Необходимо отметить, что каждая строка при этом предваряется отступом в четыре пробела, табуляция не разрешается (в крайнем случае, весь файл должен использовать табуляцию для отступов, но это крайне не рекомендуется). МойнМойн не сможет работать, если в файле конфигурации будут неправильные отступы.
 * Один из настраиваемых в первую очередь параметров это имя сайта, `sitename` — в большинстве случаев значение «u"Untitled Wiki"», укащанное по умолчанию, не используется. Имя вики может быть задано на произвольном языке, но перед этим желательно ознакомится с [[#character-set|разделом о кодировках]]
 * Вики запустится без дополнительных действий в случае, если установка была выполнена согласно инструкции, но, возможно, появится необходимость изменить некоторые параметры, такие как `data_dir`, `data_underlay_dir`, `acl_rights_before` и другие. Для большинства случаев достаточно настройки параметров, уже имеющихся в `wikiconfig.py`.
 * Всё, что не задано в файле конфигурации, будет иметь значения по умолчанию, которые были унаследованы из класса `DefaultConfig`.

<<Anchor(multiwiki)>>
== Конфигурация вики-фермы ==

Вики-сервер МойнМойн позволяет иметь несколько экземпляров вики, использующие одну установку сервера, один набор конфигурационных файлов и один серверный процесс. Это особенно важно для таких запускаемых на постоянной основе (а не на время обработки одного запроса, как в случае с CGI) серверных окружений, как Twisted, так как сервер на базе Twisted постоянно занимает TCP-порт на определённом IP-адресе. Поэтому для виртуального хостинга нескольких вики на одном и том же IP и порту необходим сервер, могущий иметь загруженными несколько конфигураций одновременно и использовать нужную при обработке запроса по определённому URL.

Для выбора нужной конфигурации среди имеющихся МойнМойн переменную конфигурации `wikis`, находящуюся в файле `farmconfig.py` — она содержит список пар вида `(имя вики, префикс URL)`. Для имени вики необходимо использовать только строковые литералы, являющиеся идентификаторами Python (то есть, `идентификатор ::= (буква | "_") (буква | цифра | "_")*`, `буква ::= ("A".."Z" | "a".."z")`, `цифра ::= "0".."9"`; если данный набор правил непонятен, рекомендуется использовать слово, набранное латиницей). При обработке запроса по некоему URL МойнМойн выполняет поиск по данному списку и пытается последовательно применить шаблон `префикс URL` к имеющемуся URL. Если шаблон применяется успешно, то МойнМойн использует конфигурацию из файла `имя_вики.py` (находящегося обычно в том же каталоге; реально используется первое совпадение из `sys.path`).

Файл `farmconfig.py` в составе дистрибутива содержит ряд примеров задания параметров для вики-фермы, содержащей несколько вики. Достаточно адаптировать его соответственно нуждам в случае необходимости использования нескольких вики.

/!\ Для простоты изложения далее конфигурация вики в составе вики-фермы будет называться `wikiconfig.py`. Естественно, на практике нужно использовать имя файла, соответствующее имени вики (`имя_вики.py`).

После настройки параметра `wikis` в файле `farmconfig.py`, как описано выше, необходимо настроить собственно экземпляры вики. Далее даны несколько советов для упрощения процесса администрирования вики-фермы. Рекомендуется предварительно прочитать раздел, относящийся к конфигурированию отдельного экземпляра вики, так как там поясняется механизм наследования.

В МойнМойн используется механизм конфигурирования, основанный на классах Python для возможности задавать общие настройки вики в одном месте — в базовом файле конфигурации (пример конфигурации см. В файле `farmconfig.py`):

'''farmconfig.py''':
{{{#!python
# -*- coding: utf-8 -*-
# farmconfig.py:
from MoinMoin.config.multiconfig import DefaultConfig
class FarmConfig(DefaultConfig):
   url_prefix = '/wiki'
   show_hosts = True
   underlay_dir = '/место/нахождения/общего/underlay'
   # ...
}}}

 Пояснения:
  * В начале импортируется конфигурация по умолчанию, по аналогии с конфигурацией отдельного экземпляра вики.
  * Далее определяется класс конфигурации вики-фермы и наследуется от конфигурации по умолчанию.
  * Далее задаются параметры, общие для всех вики в ферме ,не затрагивая специфичных для отдельных экземпляров настроек.
  * Данный класс (`FarmConfig`) будет использован как базовый в конфигурационных файла экземпляров вики вместо класса (`DefaultConfig`), подробнее см. ниже. 

Конфигурации экземпляров вики в этом случае будут содержать только те настройки, которые должны быть различными (например, логотип, директория с данными, настройки списков доступа). Всё прочее они унаследуют от базового файла конфигурации, см. `moinmaster.py` для примера:

'''moinmaster.py''':
{{{#!python
# -*- coding: utf-8 -*-
# moinmaster.py:
from farmconfig import FarmConfig
class Config(FarmConfig):
   show_hosts = False
   sitename = u'МойнМастер'
   interwikiname = 'MoinMaster'
   data_dir = '/org/de.wikiwikiweb.moinmaster/data/'
   # ...
}}}

 Пояснения:
  * Данная конфигурация аналогична конфигурации отдельного экземпляра вики, единственным отличием является то, что наследование происходит от класса `FarmConfig` (который, в свою очередь, унаследован от `DefaulConfig`) вместо наследования от `DefaultConfig` напрямую.
  * После этого значение параметра `show_hosts` переопределяется в `False` — в данном примере значение по умолчанию предполагается использовать на большинстве вики фермы, но не на этой.
  * Также переопределяются индивидуальные параметры, такие как `sitename`, `interwikiname` и `data_dir`.

<<Anchor(index)>>
== Обзор параметров конфигурации ==

Представленная далее таблица содержит значения по умолчанию и краткие описания для большинства параметров конфигурации. Для большинства из них нет необходимости переопределять значения по умолчанию, параметры, которые необходимо указывать для каждого экземпляра вики, перечислены в примере файла `wikiconfig.py` в составе дистрибутива МойнМойн.

(!) Длинные значения по умолчанию в таблице ниже показаны в виде многоточий. При наведении курсора мыши на эти многоточия они будут показаны во всплывающей подсказке. Также можно изучить файл `MoinMoin/config/multiconfig.py`, класс `DefaultConfig` для дополнительной информации (данный файл содержит конфигурацию по умолчанию).

<<WikiConfigHelp(heading_level=3)>>

Некоторые параметры могут быть заданы только в `MoinMoin/config/__init__.py` (являющемся частью кода сервера и, таким образом, влияющие на поведение всех экземпляров вики, его использующих), и не могут быть заданы в конфигурации отдельных вики — их стоит менять только в случае обоснованной необходимости для таковых действий:

||<rowstyle="bacground-color:#ffffcc"> '''Параметр''' || '''Значение по умолчанию''' || '''Описание''' ||
|| `charset`                                          || `'utf-8'`                   || Кодировка, используемая вики<<BR>> <!> '''Настоятельно не рекомендуется менять параметр `config.charset`. Это не тестировалось и ни коим образом не поддерживается.'''  ||
|| `lowerletters`                                     || ''ucs-2 lowercase letters'' || Символы, считающиеся строчными буквами, используются для определения [[ВикиИмя|ВикиИмени]]. ||
|| `smileys`                                          || `[...]`                     || Список графических иконок, поддерживаемых МойнМойн — изображения и их размеры задаются в коде [[ПомощьПоТемам|темы]]. ||
|| `umask`                                            || `0770`                      || umask, используемая МойнМойн. Значение по умолчанию предоставляет права владельцу и группе, но не другим. ||
|| `upperletters`                                     || ''ucs-2 uppercase letters'' || Символы, считающиеся заглавными буквами, используются для определения [[ВикиИмя|ВикиИмени]]. ||
|| `url_schemas`                                      || `['http', 'ftp', ...]`      || Протоколы URL, которые должны распознаваться в ссылках. ||

== Ссылки ==
 * ПомощьПоСпискамДоступа — как задавать  списки доступа страниц
 * ПомощьПоТемам — как изменить внешний вид вики
 * КакПроверятьПравописание — как настроить функцию проверки орфографии
 * /ПоддержкаПочты — работа с почтой в  МойнМойн
 * ПомощьПоXmlСтраницам (настройка отображения XML и !DocBook)
 * /ПравилаДоступа
 * /ПрикреплённыеФайлы
 * /ЗащитаОтФлуда