2007年7月6日 星期五

MoinMoin Wiki心得

簡介

MoinMoin官網

聽老光頭說,在他接觸的open source project裡,用MoinMoin當Wiki的居多,看到Fedora官網做得如此精緻,想來試看看MoinMoin,適合的話可以用來做lab首頁。

MoinMoin是用Python寫的CGI,由於用到CGI的緣故,裝起來比PHP寫的Wiki麻煩一些,由於安全考量,通常各目錄預設都是不能執行CGI,所以apache要多做設定。雖然沒有PmWiki或DokuWiki這麼好裝(1 ~ 5 mins即可裝好),但相較Twiki來說,MoinMoin Wiki好裝許多。

安裝

官網的安裝教學頗為散亂,我大概和MoinMoin Wiki的文件不合,有時寧願自己試也懶得翻文件,總覺得文件的脈絡沒有整理清楚。相較之下PmWiki和DokuWiki清楚多了。

  1. 從官網下載
  2. 解開後,參照Basic Installation執行安裝的script:

    python setup.py install --install-data='/usr/local'

  3. 參照Wiki Instance Creation新增Wiki base,直接用網上提供的script較快。
  4. 從網頁上按 login -> UserPreferences 註冊account,修改wikiconfig.py:

    superuser = [u"YourAccount", ]

    設定permission:

    acl_rights_before = u'YourAccount:read,write,delete,revert,admin Known:read All:read'

    Known表示已註冊使用者,All表示所有人(包含未登入者),這樣設完包含註冊的人和guest在內,預設權限都是唯讀,需要其它權限的話再改acl_rights_before。

(待修,改天再補完整點)

過程裡有錯誤發生時,可以參照web page的回應,或是看/var/log/http-error.log,error message寫得很清楚。可能會遇到的問題像CGI不能執行、Python版本不對或缺Python module,或是改config檔時沒照Python規定的縮排,懂一點Python有助於除錯。

Plugin

對我來說,一個Wiki的好處,除了安裝容易、Wiki code好寫、權限設定完整外,最重要的是plugin的質和量,這裡簡記一些plugin相關的心得。

對MoinMoin來說,

wiki code: [[XXX(args)]]

parser讀到這行wiki code後,會呼叫data/plugin/macro/XXX.py內的procudure “execute(macro, args)“。

相當簡單易懂的plugin做法,把plugin的python code放到data/plugin/macro/下,即可使用(CGI每次都會重讀,但standalone server可能要重跑server),因此史上最簡單也最有威力的plugin:in-line HTML,只要這麼寫:

in data/plugin/macro/HTML.py:

def execute(macro, args): return args or " "

wiki code example,貼flickr的圖(兩行合一):

[[HTML(<a href="http://www.flickr.com/photos/12203797@N00/287454598/" title="Photo Sharing"> <img src="http://farm1.static.flickr.com/112/287454598_d5c67feb2a_o.png" width="555" height="376" alt="couplet" /></a>)]]

表格

MoinMoin的table可以做到rowspans和colspans,而DokuWiki和PmWiki做不到colspans。使用table必備的plugin:MiniPage

雖然code有點醜,但透過MiniPage可以在table cell裡塞wiki code,做到像是table內的list,table中的table應該也OK,我沒試就是了,因為wiki code必需寫成一行,可讀性接近於 0,詳細介紹參照MiniPage上的說明。

surge protection

原意是避免被DoS,讓使用者各項操作到限定數量後,禁止對方的操作,但在我反覆測試編輯的情況下,反而是我一直被封,要等一會才能用。雖然可以調高限定數量,但還是很麻煩,後來發生狀況後我就直接砍surge log ( data/cache/surgeprotect/surge-log )。

ps.

有機會的話,再來寫篇三個Wiki的試用心得,現在是覺得各有好處,不見得那一個比較好或比較不好。

沒有留言:

張貼留言