標籤:

Wiki 系統

【遷移】Wiki 系統

公司裡頭共享知識,需要大家合力編輯並整理文檔,非 Wiki 形式莫屬。開源的 Wiki 系統很多,名氣最大的有如下幾個:

  • MediaWiki:PHP 編寫,最出名的使用案例是維基百科了,我沒有實際安裝過,有傳言說維護比較複雜。
  • TWiki:Perl 編寫,由於版權糾紛,現在派生出 Foswiki,很有名氣的「企業級 Wiki」,被很多公司使用,搭配插件,功能相當強悍,比如可以根據標記文本生成日曆,可以生成 HTML 表單,可以內嵌 Bugzilla 查詢結果,方便的標記讓一塊內容顯示或隱藏,支持內嵌 HTML/CSS/JS 可以把頁面定製的非常花哨。TWiki/Foswiki 的內容存儲使用 RCS 版本控制系統,因此存儲格式相當穩定可靠,備份也很方便。TWiki/Foswiki 的缺點是文檔比較雜亂,默認配置的頁面內容和鏈接太多,用戶、組管理,站點、主題等設置直接用 Wiki 標記實現,給人感覺使用稍顯複雜(貌似企業級東西不讓你抓耳撓勺就不好意思說是「企業級」。。。。)

  • MoinMoin:Python 編寫,很多大型開源項目都用它做 Wiki 系統,比如 wiki.debian.org, help.ubuntu.com/communiwiki.python.org/wiki.apache.org/kernelnewbies.org/,默認界面非常的清新,文檔編寫和組織非常好,Category 的設計容易將文檔分類(TWiki 需要裝個 Tag 插件才有類似功能),MoinMoin 還有一些皮膚插件可以把界面模擬成文件管理器的樣子,很方便站點結構的整理。MoinMoin 使用自己設計的基於文件的版本管理,每一次修改都完整保存一份,文件名是遞增的數字,每創建一個頁面會創建三個目錄四五個文件,這種簡單粗暴的存儲方式很讓人崩潰。MoinMoin 還有一個大讚的特性是其 DesktopEdition 運行方式,下載壓縮包後解壓縮,執行裡頭的 wikiserver.py 就會使用內置的 Web 伺服器運行 MoinMoin,無需配置即可享用「桌面版」 Wiki,拿來做個筆記啥的太方便不過了。

  • DokuWiki 和 PmWiki:都是 PHP 編寫並直接使用文件的存儲頁面,特性比較少,貌似不支持所見即所得編輯。

我喜歡 Foswiki 的功能豐富,又喜歡 MoinMoin 的簡潔頁面布局,而且兩者現在都集成了所見即所得編輯器,所以兩個都裝著試驗了下,Debian 沒有打包前者,我之前裝過 Bugzilla,已經裝了一大堆 Perl 模塊,所以 Foswiki 裝起來也挺容易,官網上的 Apache 配置生成器很強大,不過比較悲劇的是安裝文檔組織的有點亂,而且忒長,我利用空餘時間看了好幾天才動手配置。。。。Foswiki 有 FastCGI 插件可以讓 Foswiki 運行於 FastCGI 方式,效率還不錯。認證方面支持 ApacheLogin 方式,可以讓 Apache 處理認證,Foswiki 使用 REMOTE_USER 環境變數獲得用戶名,但又一個悲劇的事情是 GSSAPI Negotiate 認證後得到的用戶名是 dieken@CORP.EXAMPLE.COM,Foswiki 顯示成 "diekenCORPEXAMPLECOM" 了。。。有一個 LDAP 擴展可以處理用戶名,但是我沒打算讓 Foswiki 查詢 LDAP,所以自己琢磨著寫 Foswiki 插件,再看了兩三天個人覺得比較雜亂的官方文檔,折騰了 Foswiki 推薦的插件輔助開發插件後,花了大約十來秒寫了兩行代碼,於是一個去掉 user@REALM 中 @REALM 部分以及把 user 首字母大寫的 Foswiki 插件閃亮登場,順利達成我的期望效果。。。。。

在上面摸索 Foswiki 對用戶名處理邏輯的過程中,掃了下 Foswiki 代碼,感覺代碼質量不是很好,有明顯的開源合作局部修改痕迹(比如上頭判斷一個條件返回了,底下過了幾行,又判斷這個條件),整體設計比較複雜,源碼里注釋夾雜 Foswiki 標記,看的頭暈,但粗略來說,Foswiki 正在重構歷史遺留的 CGI 風格代碼,已經將大量代碼放入單獨模塊,代碼質量有望越來越好。

MoinMoin 的安裝就要簡單的多,以前裝過一次,不過忘記過程了,這次重裝,看文檔就花了個把小時,抄抄現成配置就基本搞定了,使用 mod_wsgi,MoinMoin 作為外部進程持續運行,類似於 FastCGI 模式。MoinMoin 最新版有個 GivenAuth 認證方式,可以利用 Apache 認證的 REMOTE_USER 變數,而且 GivenAuth 直接支持我上面提到的用戶名規範化邏輯,所以很輕鬆就達到了我在 Foswiki 上折騰的用戶名顯示效果(實際上我是後折騰出 Foswiki 那個插件的。。。)


推薦閱讀:

TAG:Linux |