配置多个维基

MoinMoin可以在仅安装一次、单独配置文件、单独服务器进程的情况下,处理多个维基。特别是对像twisted这样的持久运行环境,这个功能是很有必要的,因为twisted服务器可能会在特殊的IP地址和TCP端口长久运行。所以对于一个IP和端口上的多域(维基)的虚拟主机,需要维基引擎持续能够同时加载多个配置并正确处理访问请求。

为了选择正确配置,moin使用配置文件farmconfig.py中的变量wikis - 其包含(wikiname, url-regex)一对对的列表。 wikiname只能使用正确的python语法(确切的说: identifier ::= (letter|"_") (letter | digit | "_")* - 如果你不能理解这个语法,那么使用简单的单词就可以了)。当处理对某个URL的访问请求时,moin搜索这个列表,试图匹配URL。如果不能匹配,则试图匹配下一对。如果匹配,moin加载名为<wikiname>.py的配置文件(通常位于相同目录) 。

发行包中的farmconfig.py文件包含一些维基农场(wiki farm)的配置例子。你应该修改这个文件以适应自身的需要。

/!\ 为了简化帮助文件的编写,我们将这些<wikiname>.py配置文件称为wikiconfig.py,你应该根据自己的需要使用适当的文件名。

既然你已经修改了farmconfig.py中的设置(见上),我们在这里只给一些提示,希望可以节省你的时间。同时请你阅读单独的维基配置提示,因为在那里已经解释了配置继承的原理。

现在我们使用基于类的配置在一个单独的位置设置常用选项,这就是配置基类。(请看farmconfig.py中的例子):

farmconfig.py:

# -*- coding: iso-8859-1 -*-
# farmconfig.py:
from MoinMoin.multiconfig import DefaultConfig
class FarmConfig(DefaultConfig):
    url_prefix = '/wiki'
    show_hosts = 1
    underlay_dir = '/where/ever/common/underlay'
    # ...

这样一来,每个单独的维基只需要设定各有不同的设置选项即可(比如logo,数据目录或者ACL设置)。其他的设置都从基本配置类中继承而来,请看moinmaster.py示例:

moinmaster.py:

# -*- coding: iso-8859-1 -*-
# moinmaster.py:
from farmconfig import FarmConfig
class Config(FarmConfig):
    show_hosts = 0
    sitename = u'MoinMaster'
    interwikiname = 'MoinMaster'
    data_dir = '/org/de.wikiwikiweb.moinmaster/data/'
    # ...