PukiWikiの代わり - MoinMoinを試す
目次: 自宅サーバー
長いこと開発が停滞しているPukiWikiに鞭打って使ってきました(※)が、そろそろ置き換えようかと思います。置き換え候補としてはWikipediaでお馴染みMediaWiki、TWiki、MoinMoin辺りが割と活発なプロジェクトのようです。
(※)と思ってたら、開発が再開して7月に1.5.0がリリースされました。6年ぶり?くらい?
MoinMoin
MediaWikiはPukiWikiと同じくPHPで書かれているのは良いのですが、データベースを使うらしく面倒だったので、Python以外に何も要らないMoinMoinを試してみました。環境はApache 2.2 + WSGI + Python 2.7.3です。
MoinMoinのセットアップは初見殺しが多くてわかりづらいです。私は下記の手順で設定しました。とりあえず動きましたが、合ってるのかなあ、これ。
- tar xzvf moin-1.9.7.tar.gz
-
tarballの展開です。でも展開しただけではダメで、インストールが必要です。
- setup.py install --prefix=/home/username/public_html/wiki
-
インストールです。せっかくスクリプト言語なのに、コンパイルだのインストールだの面倒です…。
- mv /home/username/public_html/wiki/share/moin/* /home/username/public_html/wiki/
-
MoinMoin本体ファイル、その他の依存ファイルを全て移動します。
ここでファイルを移動させるかWebサーバ側でshare/moinに向けてAliasを設定しないと、WikiのURLにshare/moinが入ってしまいダサいです。
- mv /home/username/public_html/wiki/share/lib /home/username/public_html/
-
ライブラリのディレクトリを移動させます。移動させなくても動くと思いますが、後で設定ファイル書く際にパスが無意味に長くなってしまいダサいです。
- cp /home/username/public_html/wiki/server/moin.wsgi /home/username/public_html/
-
MoinMoinのWSGIスクリプトであるmoin.wsgiのひな形をコピーします。
もし必要なら .htaccessにてDirectoryIndex moin.wsgiとすると、WikiのURLからmoin.wsgiを省略できます。
- vi moin.wsgi
-
WSGIスクリプトはそのままでは何一つ動きません。書き足すべきは2つです。
(その1) MoinMoinのライブラリパス
sys.path.insert(0, '/home/username/public_html/wiki/lib/python2.7/site-packages')
(その2) コンフィグ(wikiconfig.py)のパス
sys.path.insert(0, '/home/username/public_html/wiki')
- ln -s lib/python2.7/site-packages/MoinMoin/web/static/htdocs moin_static197
-
CSSとかJavaScriptの入ったディレクトリへのリンクを張ります。これを忘れるとCSSも画像も全く参照できなくなってページのデザインが崩壊し、白地に文字だけが出る悲しい有様になります。
ディレクトリ名はmoin_staticXYZという名前で、XYZにはバージョンが入ります。今回使ったのは1.9.7なのでXYZ = 197となっています。今日一番の「そんなの知らないよ…」ポイントでした。
- cp /home/username/public_html/wiki/config/wikiconfig.py ./
-
設定ファイルのひな形をコピーしてきます。
- vi wikiconfig.py
-
設定ファイルもデフォルトの設定ファイルのままでは動きません。書き足すべきは2つです。
(その1) CSSやJavaScriptの位置(url_prefix_staticにはmoin_static197が最初から入っています)
url_prefix_static = '/~username/wiki' + url_prefix_static
(その2) スタートページ
page_front_page = u"MyStartingPage"
とりあえず使ってみた感想としては、閲覧は速いですが、編集は異様に遅いです。遅すぎてイライラする。これを常用するのは厳しいぞ…。
蛇足
Pythonで書かれたCGIはライブラリの位置(site-modules)を設定ファイルに書く必要があって面倒です。私の場合、メインのSakuraのサーバと、サブの自宅サーバとで、パスを書き換えねばならず面倒くさいです。
今使っているMercurialのWebフロントエンド(hgwebdir.cgi)もPythonで書かれていて、ライブラリの位置を設定ファイルに書く必要があります。CGIをバージョンアップする度に、設定を上書きして潰してしまいInternal Server Errorに遭遇して、そういえば設定が要るんだった、と思い出します。
Python自体は簡潔で良い言語だと思いますが、CGIになると面倒くさくてイマイチというか…、単に私の管理方法が悪いだけなのか…。とにかく、あまり好きになれません。