最近將http://wiki.cwowaddon.com/遷移到了Dreamhost的主機上, 由於本人不熟悉Linux和Apache其中遇到了不少問題Google查閱了一些文檔並不盡如人意, 磕磕絆絆終歸是搞定了, 做個總結以供參考. 一些細節問題請先查看我的上一篇Blog MoinMoin Wiki 在IIS下的安裝與升級.
下載Python和最新版的MoinMoin Wiki, 本文樣本中的環境:
主目錄: /home/simonw
Web目錄: /home/simonw /wiki.cwowaddon.com
Python版本2.5
Wiki版本為1.5.7
Wiki解壓安裝檔案目錄: /home/simonw /moin-1.5.7
Wiki安裝目錄: /home/simonw /MoinMoin
Wiki執行個體目錄: /home/simonw /MoinMoin/simonwwiki
再廢話幾句, Dreamhost上預設安裝了Python2.3, 在wiki安裝時會有幾個警告, 所以我自己安裝了Python2.5, 可以參考在DreamHost上安裝python 2.5, 過程很簡單.
tar xzf moin-1.5.7.tar.gzcd moin-1.5.7python setup.py --quiet install --prefix=/home/simonw/MoinMoin --record=install.log
少許安裝完畢後會在/home/simonw /MoinMoin目錄下產生這幾個子目錄lib(主運行程式), share(Wiki執行個體的模板), bin三個子目錄.
將wiki執行個體置於/home/simonw /MoinMoin/simonwwiki而非Web目錄下可以使資料更加安全, 也不用在設定其他的許可權. 建立過程主要就是從share目錄中拷貝data, underlay目錄, 設定檔wikiconfig.py, moin.fcg(入口調用檔案, 此處使用了FastCGI模式, 所以用了這個檔案) 到wiki執行個體目錄中. 同樣可以依據此方式建立多個wiki執行個體.
將/home/simonw /MoinMoin/share/moin/htdocs目錄映射到web目錄, 這不是必須的, 你完全可以拷貝到web目錄, 但這裡存放的是css等skin檔案因此共用比較合適.
cd /home/simonw/wiki.cwowaddon.commdir wikiln -s /home/simonw/MoinMoin/share/moin/htdocs wiki
開啟moin.fcg在頂部添加下面的引用路徑, 以便代碼能夠找到.
#!/home/simonw/bin/python/bin/python# -*- coding: iso-8859-1 -*-import syssys.path.insert(0, '/home/simonw/lib/lib/python2.5')sys.path.insert(0, '/home/simonw/MoinMoin/lib/python2.5/site-packages')sys.path.insert(0, '/home/simonw/MoinMoin/simonwwiki')
配置wikiconfig.py
data_dir = '/home/simonw/MoinMoin/simonwwiki/data/'data_underlay_dir = '/home/simonw/MoinMoin/simonwwiki/underlay/'url_prefix = '/wiki/htdocs'
開啟網站的FastCGI模式, 將比CGI方式快出5倍以上, 把moin.fcg拷貝到/home/simonw/wiki.cwowaddon.com, 並設定為可執行.
chmod +x moin.fcg
建立.htaccess檔案, 配置web目錄.
options +FollowSymLinksoptions -IndexesDirectoryIndex moin.fcgReWriteEngine onRewriteRule ^img/ - [L]RewriteRule ^wiki/htdocs/ - [L]RewriteBase /RewriteRule ^moin\.fcg - [L]RewriteRule ^(.*)$ moin.fcg/$1 [L]
上面Url rewrite很關鍵, Url會變得更加友好http://wiki.cwowaddon.com/simonw 而不是http://wiki.cwowaddon.com/moin.fcg/simonw 還需要最後一步使得頁面輸出的Url也成為這樣. 開啟moin.fcg修改代碼
def handle_request(req, env, form): request = RequestFastCGI(req, env, form, properties = {'script_name': '/'}) request.run()
本文參考了MoinMoinWiki本身的安裝協助文檔, 和http://wiki.dreamhost.com/index.php/MoinMoin, 其中都有一些毛病, 最終修正後, 結果較為完美.