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' # ...
- 说明:
- 首先导入默认配置
- 现在定义新的农场(farm)配置类 - 继承自默认配置
- 然后我们改变所有维基的通用设置,暂时不修改那些各有不同的设置
这个FarmConfig类将在维基的配置文件中使用,它将代替moin内部的DefaultConfig类
这样一来,每个单独的维基只需要设定各有不同的设置选项即可(比如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/' # ...
- 说明:
请参考单独维基的配置,两者唯一的区别在于: 类继承自FarmConfig (它继承自DefaultConfig),而不是直接继承自DefaultConfig
现在将show_hosts设置为0 - 我们希望农场中大部分维基都有此选项,但这个维基除外
- 还要设置sitename,interwikiname和data_dir(常见设置)