O servidor do wiki moinmoin consegue gerir vários wikis através de uma única instalação, uma única definição dos ficheiros de configuração e um único processamento de servidor. Isto é necessário essencialmente para ambientes persistentes como o twisted, porque este servidor irá ser executado permanentemente num endereço IP e num número porto TCP específicos. Para o alojamento virtual de vários domínios (wikis) no mesmo IP e porto, é necessário que o servidor wiki carregue diversas configurações constante e simultaneamente e que saiba optar pela correcta para gerir um pedido de um URL específico.
Para saber optar pela configuração correcta, o moin utiliza a variável de configuração wikis localizada no ficheiro farmconfig.py - contém uma lista de pares (wikiname, url-regex). Por favor, utilize apenas identificadores de python válidos para wikiname (para ser mais preciso: identifier ::= (letter|"_") (letter | digit | "_")* - tente com uma palavra simples se não tiver percebido essa regra gramatical). Ao processar um pedido de um URL, o moin faz uma pesquisa nesta lista pelo url-regex correspondente ao URL actual. Não não existir correspondência, prossegue para o par seguinte. Se não existir correspondência, o moin carrega um ficheiro de configuração achamado <wikiname>.py (geralmente da mesma directoria) que contém a configuração para esse wiki.
O ficheiro farmconfig.py no arquivo de distribuição tem alguns exemplos para um wiki farm que executa vários wikis. Se quiser executar vários wikis, é necessário adaptá-lo às suas necessidades.
Para simplificação de conceitos nestas páginas de ajuda, identificamos um ficheiro de configuração como o <wikiname>.py como wikiconfig.py. Deve substituir o nome de ficheiro pelo que entender.
Certamente já alterou as definições dos wikis no ficheiro farmconfig.py (ver em cima), por isso vamos dar-lhe apenas algumas dicas no que diz respeito a poupar esforços. Por favor, leia também as dicas de configuração de um wiki único, uma vez que explica o conceito de herança de configurações.
Agora utilizamos a configuração baseada em classes para configurar as definições habituais dos seus wiki num só local: na base config class (ver o ficheiro farmconfig.py para obter um exemplo):
farmconfig.py:
# -*- coding: iso-8859-1 -*- # farmconfig.py: from MoinMoin.multiconfig import DefaultConfig class FarmConfig(DefaultConfig): url_prefix = '/wiki' show_hosts = True underlay_dir = '/where/ever/common/underlay' # ...
- Explicação:
- em primeiro lugar, importamos a configuração por omissão, como se estivéssemos a configurar apenas um wiki
- depois definimos uma nova farm config class - que herda a configuração por omissão
- seguidamente alteramos tudo o que as nossas farm wikis têm em comum, deixando de fora todas as definições em que têm de ser diferentes
esta classe FarmConfig será então utilizada pelos ficheiros de configuração dos wikis, em vez da classe DefaultConfig interna do moin, ver abaixo:
As configurações dos seus wikis individuais mantêm apenas as definições das diferenças (como o logótipo, ou a directoria de dados ou as definições de ACLs). Todas as outras definições são herdadas da classe de configuração básica. Veja um exemplo no ficheiro moinmaster.py.
moinmaster.py:
# -*- coding: iso-8859-1 -*- # moinmaster.py: from farmconfig import FarmConfig class Config(FarmConfig): show_hosts = False sitename = u'MoinMaster' interwikiname = 'MoinMaster' data_dir = '/org/de.wikiwikiweb.moinmaster/data/' # ...
- Explicação:
Veja a configuração de um só wiki. A única diferença é que herda as configurações da FarmConfig (que por sua vez herda da DefaultConfig) em vez de as herdar directamente da DefaultConfig
- Sobrepomos o show_hosts para ser 0 - queremos isto para a maioria dos wikis na nossa farm, mas não para este
- Sobrepomos também o sitename, interwikiname e data_dir (o habitual)