一、简介
Moinmoin是一个高级,易用,可扩展的Wiki引擎,并且拥有比较大的用户群。Moinmoin是由Python编写的开源Wiki,详细的介绍请参考http://moinmo.in/
二、安装
Moinmoin有多种服务器配置方式,下面描述Moinmoin使用FastCGI的安装流程。
- 从http://moinmo.in/下载Moinmoin的安装包(示例使用的是1.8.5版 本),并解压出来,会看到有”setup.py”,”/wiki”,”/MoinMoin”等文件和目录。在Moinmoin中创建一个wiki实际是创 建了一个wiki的实例,也就是说对于一些静态的文件,如js,css,html等静态的内容,会被所有的wiki实例所共用,而每个wiki所特有的是 该wiki实例的数据文件和相关的配置文件等。把安装包解压之后,在解压的目录下运行”python setup.py install”把Moinmoin的库安装到本机的Python库中。
- 在解压出来的内容中,有一个wiki的目录,这个目录的内容就是Moinmoin的wiki所包含的所有文件了,其子目录如下:
- data: 包含了wiki page和user data,只有Moinmoin才能访问;
- underlay: 包含了Moinmoin默认的帮助页面和模板,只有Moinmoin才能访问;
- htdocs: 包括了Moinmoin的静态支持文件,如js和css,Web服务器需要有权限访问此目录;
- server: Moinmoin的一些示例启动文件;
- config: Moinmoin的一些示例配置文件。
新建一个目录存放wiki的data和underlay目录的文件(mkdir mywiki),然后把data和underlay两个目录拷到新创建的目录中(mywiki)。至于htdocs,存放的位置随意,但要保证Web服务器可以访问。
- 在mywiki目录新建一个目录用于存放Moinmoin的起动脚本(mkdir cgi-bin),并把server目录中的moin.cgi拷贝到cgi-bin目录,同时也把config目录中的wikiconfig.py文件拷 贝到mywiki的目录下,操作之后mywiki的目录结构如下:
-/mywiki
–/cgi-bin/moin.cgi
–/data/
–/underlay/
–wikiconfig.py - 设置目录的权限。先从apache的配置文件中找到apache运行的用户和用户组(nobody,nogroup),然后执行下列命令(其实这个主要保证apache有rwx即可):
- chown –R nobody.nogroup mywiki #拥有者更新为apache的用户和其用户组
- chmod –R ug+rwX mywiki #nobody和nogroup可读可写
- chmod –R o-rwx mywiki #其他人则拒绝访问
- 在apache的配置文件为mywiki进行相关的访问配置,在配置的设置中要注意添加两个指令为:
- Alias /moin_static185/ /path/to/moin/htdocs/ #静态文件路径,前面的moin_static185是随每个版本不同的,185则是当前的版本号(1.8.5)
- ScriptAlias / /path/to/mywiki/cgi-bin/moin.cgi/ #所有的请求传递给moin.cgi处理,注意moin.cgi后面的斜杆不能忽略
- 对mywiki目录的相关文件进行配置。首先需要在cgi-bin目录的moin.cgi文件中加上” sys.path.insert(0, ‘/path/to/mywiki/’)”让python能够在搜寻路径中找到wikiconfig.py文件。接着就配置mywiki目录下的 wikiconfig.py文件,把data_dir的值赋予data目录的绝对路径,把data_underlay_dir赋予underlay目录的 绝对路径,把url_prefix_static赋予”/moin_static185”,这是设置静态文件的url过滤,”185”是版本号。 wikconfig.py的默认编码是iso-8859-1的,可根据需要转换成utf-8。
通过以上的安装和配置,就可以通过浏览器对Moinmoin的wiki进行访问了。
Moinmoin的帮助文档HelpContents这个页面上,直接在浏览器输入已经搭建好的Moinmoin的wiki,http://mywiki.url/HelpContents就可以访问
三、基本配置
基本的配置可参考http://mywiki.url/HelpOnConfiguration页面上关于wikiconfig.py的介绍,较为普通和常用的有:
- sitename:设置wiki的名字,这个一般会在页面的banner上显示的;
- logo_string:wiki的logo,也是会在banner上显示的,注意这里是img标签的内容;
- page_front_page:首页的地址,如果赋值为”首页”,则通过”http://mywiki.url/首页”可以访问wiki的一级域名;
- theme_default:默认的主题;
- editor_default:默认的编辑器类型,包括gui和text;
- language_default:用户界面和内容的默认语言,默认为en,可改成zh;
- language_ignore_browser:是否忽略用户浏览器的语言设置;
- page_iconbar:页面的操作栏,包括edit, print等等;
- navi_bar:页面默认的导航栏,包括了最新更新、搜索、帮助等等;
- ……
除了上面较为基本的设置,还有很多关于header和footer以及其他更为细致的设置,具体可参考HelpOnConfiguration页面。
四、权限管理
Moinmoin主要是通过访问控制列表的方式来管理每个页面的操作权限,具体介绍在http://mywiki.url/HelpOnAccessControlLists。Moinmoin没有专门用来管理页面和权限的后台,所有都是配置文件和页面来进行管理和设置的。但是Moinmoin的ACL提供非常灵活的权限设置管理。
在wiki的安装目录下的wikiconfig.py文件中,有一个superuser的属性设置,这个属性是List类型,以unicode的字符串 类型记录着管理员的用户名和群组,也就是说wiki的后台管理员就是通过设置superuser(属于Trusted群组)属性来设定的。
Moinmoin通过在wikiconfig.py的acl_rights_before、acl_rights_after、acl_rights_default和在页面上设置ACL来设定访问者的对页面的操作权限。在wikiconfig.py设置示例如下:
acl_rights_before = u”admin:read,write,delete,revert,admin All:read”
acl_rights_after=u”admin:read,write,delete,revert,admin All:read”
格式为user/group:read,write,delete…的方式对用户和组进行权限管理。同时,可以在每个页面的顶部添加”#acl SomeUser:read,write All:read”的方式对页面进行特别的配置。单个页面的权限检测流程为acl_rights_before->页面ACL(如果页面不存在 ACL,但检测acl_rights_default,否则跳过acl_rights_default)->acl_rights_after。当 检测流程找到了第一个可以确定访问者是否拥有当前能够操作的权限时,则停止检测并直接应用首次检测到的权限设置。
由于添加管理员需要在wikiconfig.py中设置,也意味着每次更改管理员都需要重启Web服务器,那么有没有更方便的方法呢?答案就是群组,Group。关于设置Group的页面在http://mywiki.url/HelpOnAccessControlLists#Groups。简单地说,要创建一个AdminGroup,先创建一个AdminGroup地址的页面,然后在该页面上添加AdminGroup的成员就可以了。这样就可以通过AdminGroup这样的方式来灵活管理admin了。
假如有这样的一个需求,只有AdminGroup的人才能阅读和操作页面,其他的所有人都不能阅读。那么只要在wikiconfig.py上设置:
acl_rights_before=u”AdminGroup:read,write,delete,revert,admin”
acl_rights_default=u”All:”
如果其他人有阅读的权限,只要设置acl_rights_default=u”All:read”就好了。
五、主题管理
官方http://moinmo.in/ThemeMarket提供了一些主题包下载,要注意版本是否匹配。把主题下载下来并解压后的目录结构如下:
-themename/
–css/
–img/
–themename.py
把themename整个目录拷到静态文件的共享目录htdocs下,然后再把themename.py移到data/plugin/theme,注意 data目录是wiki实例的目录下(mywiki/data)。最后在wikiconfig.py上设置 theme_default=themename就可以了,要注意themename目录包含的所有文件都有权限让Web服务器访问。
六、其他
Moinmoin提供了一些宏可以嵌入到编辑器中提供一些其他的系统和页面的信息,具体可参考http://moinmo.in/HelpOnMacros。
对于gui的编辑器,在google的chrome浏览器下提交内容会出现异常,用IE和FF均正常。gui所能提供的格式比较有限,具体可参考http://moinmo.in/HelpOnEditing。