Yuan Yijun (bbbush) wrote,
Yuan Yijun
bbbush

安装 moin moin wiki

fedora 使用 moin moin wiki。虽然他们说要换,可是还没有决定。我也觉得 moinmoin 还顺手。今天试装了一下。

首先是 yum install moin 把它装到系统里。默认会把所有文件放到 /usr/share/moin/,也就是说还不是一个可用的状态。然后,读文档,有很多装法,比如多个 instance,多个 wiki 组成 wikifarm 之类,最简单的是 standalone server,次简单的是 cgi,我就选择 cgi 了,因为我的需求是两三个人共同编辑几份文档,规模很小。

无论选择哪种安装方式,有个限制是 /wiki 必须指向 htdocs 目录,也就是占用 httpd 的一个名字空间,我觉得这样做不好。后面还会看到一个限制,就是 underlay 目录必须是可写的,尽管不会真的改变系统页面,这样做也不好。设置 httpd 时,有很多种映射目录的办法,还有 mod_rewrite,而 moinmoin 本身在处理 wikifarm 时也会根据 URL 来选择 wikitree,老实说我比较害怕这种外科手术。

接下来,文档说需要复制 underlay 和 data,其中 underlay 可以在多个 wiki 间共享。这句话把我搞糊涂了,我以为是和 htdocs 一个性质,因此首先用了链接 (后来才发现所有的链接都不能用,大概是httpd的设置问题),后来没办法复制了一份,又折腾了很久才知道,这个目录必须是 apache 可读写的,尽管是不会变化的内容。根据 #moin 的人说,需要在其中建立 cache,可是设置其中任何目录/文件不可写时都会报错,不只是 cache 目录,不知道多个 wiki 时会不会有 race 了,也许 wikifarm 不会而多 instance 会?

整个安装过程中好几次忍不住 setenforce 0,因为疑神疑鬼的觉得是 selinux 作怪,可惜每次都不是——除了使用 mv 的时候。一定要 cp 而不是 mv,要不然就多用 restorecon -R .

再后来就是加了一个 /etc/httpd/conf.d/moin.conf 来映射 /wiki 以及 moin.cgi。文档里的两句话,抄过去就可以了。/wiki 是要映射到 /usr/share/moin/htdocs/ 的;我打算按照文档,将 /var/www/moin/01-wiki/moin.cgi 映射到 /rb,数据目录就指向 /var/www/moin/01-wiki/

在 localhost 调试完毕,要看懂 acl 怎么设置才可以发布。fedora 的做法是只有 EditGroup 列出的用户才可以修改页面,我也想这样。幸好 moinmoin 的文档写得很清楚,还列了几种不同的情境,直接套上去就可以了。

最后就是设置首页,默认的首页是个帮助页面,这个在 wikiconfig.py 里。

后来,又设置了一下 theme。下载了三个 theme,解压缩,复制……用不成。仔细看属性,目录文件许可都是乱七八糟的,而且我又用了 mv... 于是修改 permission 然后 restorecon。这种时候才会觉得 rpm 或者什么软件管理工具的贴心:所有文件都是用 install -m 复制的,保证权限和 se 上下文正确,不会有这种反复几次才搞定的情况。

默认的 Interwiki 是关闭的,而且列表里不包含 fedora wiki。添加自己的 interwiki 也很简单,在帮助文件里提到了。用 interwiki 倒是个指向 http://fedoraproject.org/wiki/zh_CN/ 的好办法。

明天继续尝试其他安装方式,还有 wikifarm 和多 instance 的做法。用 puppet 究竟能做什么?另外,还有两种 wiki,mediawiki 和 trac,用 yum 都可以很容易地安装好。


.. 该死的 gmail,为什么把英文都换行了呢


update:
wikis=[
    ("farm1", r"^[^/]*/farm1(|/.*)$"),
    ("farm2", r"^[^/]*/farm2(|/.*)$"),
]
尝试了 wikifarm,没感觉到有什么差别,部分原因是在 apache 中仍然用了 ScriptAlias,没有用 virtual host,结果 farmconfig.py 的列表怪齐整的。比较 tricky 的地方是首先 farmconfig.py 里的 data_dir 是无效的,只能在单独的 farm1.py, farm2.py ... 中设置。其次是如果希望关联这些 wiki,还是得编辑 intermap.txt,添加
Farm1 /farm1/
Farm2 /farm2/ .. faint 太齐整了。
也就是说,其实这些 wiki 除了所有者是同一个人之外,并无多少关联。可以共用的东西,就是 farmconfig.py 中的配置,例如权限设置。如果权限不一致,那么不要用 wikifarm,而配置的难度其实完全没有差别。

now, I have 5 wikis, 2 of them are in a same farm, others are independent. All are CGI with apache ScriptAlias.

[root@mstar moin]# cat /etc/httpd/conf.d/moin.conf
Alias /wiki/ "/usr/share/moin/htdocs/"
ScriptAlias /rb "/var/www/moin/01-rb-doc/moin.cgi"
ScriptAlias /fedora "/var/www/moin/02-fedora-cn/moin.cgi"
ScriptAlias /lily "/var/www/moin/03-lily-lug/moin.cgi"
ScriptAliasMatch /farm[[:digit:]]+(.*) "/var/www/moin/04-farm/moin.cgi$1"

 * /wiki/ is re-used by all 5 wikis, better remove index.html(?)

[root@mstar moin]# pwd
/var/www/moin
[root@mstar moin]# ls .
01-rb-doc  02-fedora-cn  03-lily-lug  04-farm  underlay

 * underlay is re-used by all 5 wikis (? locking and race)

[root@mstar moin]# tail -5 04-farm/farm1/intermap.txt 
Farm1 /farm1/
Farm2 /farm2/
RBDoc /rb/
Fedora /fedora/
Lily /lily/

# for 4 of them, use public company setting (see moinmoin doc)
    acl_rights_default = u"EditGroup:admin,read,write,delete,revert All:read"
    acl_rights_before  = u"AdminGroup:admin,read,write,delete,revert +EditGroup:admin"

# 1 of them use small CMS setting
    acl_rights_default = u'GuestGroup:read'
    acl_rights_before = u"EditGroup:read,write,delete,revert,admin"






update 20071221

1. 在 windows 中,由于使用 NTFS 分区,需要做类似的事情:复制文件之后,令文件属性为继承,从而 Apache 可以访问。默认的属性不是继承,只有创建者可以访问。
2. apache win32 没有对应 /var/www/ 的目录,在 fedora 中 httpd 可以访问系统所有目录,在 win32 中则必须为每个目录定义访问权限。根据下面提到的新的布局,只要允许 $moin/cgi-bin 目录的访问。
3. 新的文件位置布局:$/moin/cgi-bin/01-xxx/moin.cgi 是入口,用 ScriptAlias;$/moin/01-xxx/ 是数据。根据 moin 的说明,数据不应放在浏览器用户可以直接访问的位置。在 win32 中,$ 指的是安装目录。在 linux 中,$ 应当是 /var/lib(??)
4. win32 中的配置文件 $/conf.d/moin.conf。由于主控的 httpd.conf 默认没有包含 conf.d/* 因此还需要稍加修改。
<Directory "C:/Python25/share/moin/htdocs">
	Order Allow,Deny
	Allow from all
</Directory>

Alias /moin_static160 "C:/Python25/share/moin/htdocs"

<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/moin/cgi-bin">
	Order Allow,Deny
	Allow from all
</Directory>

ScriptAlias /rb "C:/Program Files/Apache Software Foundation/Apache2.2/moin/cgi-bin/01-rb-doc/moin.cgi"
ScriptAlias /rb2 "C:/Program Files/Apache Software Foundation/Apache2.2/moin/cgi-bin/05-rb-doc/moin.cgi"

5. 需要修改 moin.cgi 中,python 解释器的位置为 c:\python25\python






2008-01-03 更新:一句话说清在 fedora 里的设置(将 cgi 和 data 分开放了,所以上面的配置和描述会不太一样):

首先,创建 /var/www/moin/cgi-bin/01/ 目录,把 moin.cgi 和 wikiconfig.py 复制进去。然后 scriptalias 到这个 moin.cgi。然后,把 underlay 复制成 /var/www/moin/underlay,把 data 复制成 /var/www/moin/01/,再修改 wikiconfig.py 指向 ../../01/ 和 ../../underlay。最后,chown apache:apache -R; restorecon -R

(漏了什么吗?:)
Tags: fedora
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments