MoinMoin のインストール手順、設定項目の解説、カスタマイズ方法。

インストール

このサーバに MoinMoin をインストールした方法。

参考ページ: http://moinmo.in/HelpOnInstalling/ApacheOnLinuxFtp (現在、このページは存在しません)

インストール環境

インストール計画

MoinMoin の URL は http://yourdomain.com/moin/ のように DOCUMENT_ROOT 直下に作成されたディレクトリで動作させる。MoinMoin の cgi を置くサーバー上でのディレクトリは DOCUMENT_ROOT/moin/ のようになる。

MoinMoin では実行用の cgi ファイルをパブリックな領域に設置し、Python モジュールや設定ファイル、作成されたページの保存ディレクトリを任意の場所にインストールして動作させる事ができるので、cgi スクリプトといくつかの必要なファイルのみ DOCUMENT_ROOT/moin/ に置く。

用語の定義

これからの説明に必要な用語を定義しておく。

MOIN_SRC

MoinMoin のソースファイルが納められたディレクトリ。MoinMoin のアーカイブを展開して作成されるディレクトリでもある。

WIKI_DIR

MoinMoin の設定ファイルや作成されたページを保存するためのルートディレクトリ。

サーバー環境調査のスクリプト

DOCUMENT_ROOT 環境変数などのサーバー環境を調査するための cgi スクリプトを設置した。

cgi スクリプト名は explore.cgi とする。設置場所はどこでもよい。今回は http://yourdomain.com/moin/explore.cgi とした。cgi スクリプトは Python スクリプトであり、次のようなコードである。

   1 #!/usr/bin/env python
   2 
   3 import os.path
   4 import os
   5 import sys
   6 
   7 try:
   8     __file__
   9 except NameError:
  10     __file__ = '?'
  11 
  12 print """Content-type: text/html
  13 
  14 <html><head><title>Python Exploration</title></head><body>
  15 <table border=1>
  16 <tr><th colspan=2>1. System Information</th></tr>
  17 <tr><td>Python</td><td>%s</td></tr>
  18 <tr><td>Platform</td><td>%s</td></tr>
  19 <tr><td>Absolute path of this script</td><td>%s</td></tr>
  20 <tr><td>Filename</td><td>%s</td></tr>
  21 """ % (sys.version,
  22        sys.platform,
  23        os.path.abspath('.'),
  24        __file__)
  25 print "<th colspan=2>2. Environment Variables</th>\n"
  26 for variable in os.environ:
  27     print "<tr><td>%s</td><td>%s</td></tr>\n" % (variable, os.environ[variable])
  28 print "</table></body></html>"

インストール開始

htdocs/ のアップロード

MOIN_SRC/wiki/htdocs/ にあるディレクトリとファイルを DOCUMENT_ROOT/moin/ にアップロード。htdocs/ の中身をアップロードするのであって、moin/ の下に htdocs/ をアップロードするのではない。

DOCUMENT_ROOT/moin/{common/, index.html, modern/...}

htdocs/ の中身は 5MB ほどあるのでアップロードには少し時間がかかった。

WIKI_DIR を作成

設定ファイルやページデータを保存するためのディレクトリ、WIKI_DIRDOCUMENT_ROOT より上の階層に作成する。ディレクトリ名は wiki とした。

例:

/home/yourname/wiki/

設定ファイル wikiconfig.py を置くディレクトリを作成

後述する wikiconfig.py を格納するディレクトリを WIKI_DIRconfig/ という名前で作成しておく。

例:

/home/yourname/wiki/config/

underlay/ のアップロード

MOIN_SRC/wiki/underlay/DOCUMENT_ROOT より上位の階層である WIKI_DIR/underlay としてアップロード。

例:

/home/yourname/wiki/underlay/

underlay/ も約 4MB あるのでアップロードに少し時間がかかる。

data/ のアップロード

MOIN_SRC/wiki/data/DOCUMENT_ROOT より上位の階層である WIKI_DIR/data としてアップロード。

例:

/home/yourname/wiki/data/

MoinMoin/ のアップロード

MOIN_SRC/MoinMoin/DOCUMENT_ROOT より上位の階層である wiki/site-packages/MoinMoin/ としてアップロード。 例:

/home/yourname/wiki/site-packages/MoinMoin/

5.8MB あるのでアップロードには時間がかかる。

moin.cgi の設定

パブリック領域に設置する cgi スクリプト、MOIN_SRC/wiki/server/moin.cgi を環境にあわせて編集する。このファイルは Python パスの定義など、システムの設定を行う。

    1行目の Python のパスを変更。レンタルサーバの情報から
    #!/usr/local/bin/python に変更した。

    次の行を自分の環境に合わせて変更する。コメントを外すこと!
    ## sys.path.insert(0, 'PREFIX/lib/python2.3/site-packages')
    アップロードした MoinMoin/ ディレクトリを PYTHONPATH に含める設定なので次のように変更。
    /home/yourname/wiki/site-packages
    
    explore.cgi にある `Absolute path of this script' を参考に絶対パスで設定してやる。
    
    
    次の作業でアップロード予定の wikiconfig.py をアップロードするパスを設定する。
    # YOU NEED TO CHANGE THIS TO MATCH YOUR SETUP.
    sys.path.insert(0, '/home/yourname/wiki/config')

wikiconfig.py の設定とアップロード

MOIN_SRC/wiki/config/wikiconfig.py を編集する。このファイルは wiki の環境設定である。

日本語を使うので
    coding を utf-8 に。

    sitename = u'ウェブサイトの名前'
    data_dir = 'WIKI_DIR/data/'
    data_unserlay_dir = 'WIKI_DIR/underlay/'
    url_prefix = '/moin'

編集した wikiconfig.pyWIKI_DIR/config/ にアップロードする。

例:

/home/yourname/wiki/config/wikiconfig.py

moin.cgi のアップロード

MOIN_SRC/wiki/server/moin.cgiDOCUMENT_ROOT/moin/ へアップロードする。 例:

DOCUMENT_ROOT/moin/moin.cgi

cgi の実行に必要なパーミッションも確認すること!

動作確認

http://yourdomain.com/moin/ へアクセスして動作確認。(moin.cgi へ転送されないなら DirectoryIndex を調整すればよい。この件については自分の環境に合わせて適当に解決してください。)

ここまでの手順通りではおそらく「 wikiconfig.pypage_front_page を設定せよ」などのメッセージが表示されているはず。次章で wikiconfig.py について説明するので詳細はそちらを参照してください。

設定 wikiconfig.py

ページ編集の権限を制御する

acl の設定で、WebMaster というユーザのみページの作成や削除を許可する。他のユーザはページを読む権限しか与えない。

acl_rights_default = u'All:read' 
acl_rights_before  = u'WebMaster:read,write,admin,delete,revert'

もちろんユーザは任意の名前で良い。複数のユーザを設定する場合はユーザ名をカンマ(,)で区切って記入する。

acl_rights_before  = u'WebMaster,SubWebMaster:read,write,admin,delete,revert'

ページの編集を許可したい場合はそのページに権限を付与する設定を書く。

#acl All:read,write

上記の #acl 設定はすべてのユーザに対して読み取り/書き込み権限を与えることになる。

logo の alt 属性にサイト名を入れる

logo_string = u'<img ... alt="%s">' % sitename

meta 要素の変更

検索ロボット用のタグ

html_head_query
クエリ文字列が付いた URL の制御。
html_head_posts
POST メソッド用。
html_head_index
サイトのホームページ用。
html_head_normal
通常のページに適用される要素。

html_head_query = '''<meta name="robots" content="noindex,nofollow">\n'''
html_head_posts = '''<meta name="robots" content="noindex,nofollow">\n'''
html_head_index = '''<meta name="robots" content="index,follow">\n'''
html_head_normal = '''<meta name="robots" content="index,nofollow">\n'''

SEO の観点から html_head_normal は index,follow でも良い?

テーマ

MoinMoin の見た目を変更できます。変更するにはテーマ(Theme)をインストールします。自分で作成することも可能です。

テーマのインストール

A theme "THEMENAME" is made of these components:

テーマを作る 〜 modern のカスタマイズ

デフォルトのテーマ modern をカスタマイズしてみる。(カスタマイズの目的は美しい文書構造を構築するためである。)

テーマのファイル構成

THEMENAME はテーマ名である。他のテーマ名と重複しないように。どうしても重複するなら既存のものを消す。

CSS

CSS ファイル達。CSS ファイルは文字コードを UTF-8 か ASCII で作成する。

保存ディレクトリ
DOCUMENT_ROOT/moin-area/THEMENAME/css/
common.css
名前の通り、media="all" として利用されるCSS。
screen.css
media="screen" 用のCSS。
print.css
media="print" 用のCSS。印刷用。
projection.css
media="projection" 用のCSS。
msie.css
IE6, IE7用のCSS。

画像

画像ファイル達。画像のカスタマイズは行わないので、画像ファイルの保存ディレクトリのみ示す。

保存ディレクトリ
DOCUMENT_ROOT/moin-area/THEMENAME/imb/

画像ファイルの構成は ThemeBase クラスを読めば理解可能。

Python モジュール

HTML を生成するための辞書である。MoinMoin.theme から ThemeBase を継承する。ThemeBase クラスは MoinMoin/theme/init.py で定義されている。

保存ディレクトリ

MoinMoin/theme/THEMENAME.py または自分で設置した WIKI_DIR の data/plugin/theme/THEMENAME.py

メモ

CSS ファイル

CSS ファイルは文字コードを UTF-8 か ASCII で作成する。

Python モジュール

head()

消した(コメントアウトした)メソッド

title(self, d) オーバーライド

ページタイトルを h1 要素にする。

def title(self, d):
  return "<h1>%s</h1>" % wikiutil.escape(d['title_text'])

wikiutil.escape() は 事前に import しておく必要がある。

from MoinMoin import wikiutil

マクロ Macros

MoinMoin にはマクロ機能がある。次の書式にある"マクロ名"がマクロとして展開される。

[[マクロ名]]

http://moinmo.in/HelpOnMacros

このページに表示されている目次はマクロを利用している。

[[TableOfContents(2)]]

(2) は目次で表示する見出しの階層の深さを指定している。無指定だったらすべての階層を表示する。<h>タグの1〜6に対応している(はず)。

コマンドライン ユーティリティ

MOIN_SRC/MoinMoin/script/moin.py はコマンドランで使えるちょっとしたツール。 moin.py を使うには MOIN_SRC/MoinMoinPYTHONPATH に通しておく。moin をシステムへインストールしたのであれば問題ないはず(筆者はインストールしていないので MOIN_SRC に移動してから使っている)。

moin.py の使い方

moin.py の Usage:

 moin [general options] command subcommand [specific options]

general options は必須のオプションだ。

general options:

(--wiki-url は今のところどのように作用しているのかわからない。なんぜ command が cli と export しか使ったことがないから)

command subcommand

moin.py で使えるコマンド。

cli show

特定のページだけを見たいときにつかう。スクリプトの実行結果は標準出力なので1ページだけダンプしたいときにも使える。その他の用途はちょっとわからない。おそらく --wiki-url で指定したページを取得するのに使うんだろう。しかし、wiki-url に適当な URL を指定しても MoinMoin.error.ConfigurationError が出て無理。MoinMoin.request.RequestCLI を読むと --wiki-url でリモートホストをサポートするのは TODO らしい。なので --config-dir から読み込まれる wikiconfig.py の設定にある wiki データが取得される。

cli show のオプション

cli show の使用例

page_front_page を見る:

python MoinMoin/script/moin.py --config-dir=$HOME/Sites/moin/wiki/config cli show 

wiki の page_front_page が出力される。general options にある --wiki-url は任意。

特定のページを見る:

python MoinMoin/script/moin.py --config-dir=$HOME/Sites/moin/wiki/config cli show --page=DocBook

ページ名 DocBook のページを見る。サブページの指定は未確認。

export dump

wiki ページを静的なHTMLページとしてダンプする。自分のマシンにインストールして使っている MoinMoin のデータを静的なHTMLで構築されたサイトにするときに使える。他にも MoinMoin で構築したサイトを CD などに保存して配布することもできる。ただし、css やロゴ画像のパスと名前、カスタム テーマの適用法が異なるので出力されたソースを見て足りないファイルを配置するなど配布には整形を要する。あらかじめ出力先のディレクトリに必要なものを置いておくのも良いだろう。

export dump のオプション

--page では正規表現が使えるようだが挙動がよくわからない。

export dump の使用例

すべてのページをダンプする:

python MoinMoin/script/moin.py --config-dir=$HOME/Sites/moin/wiki/config export dump --target-dir=$HOME/tmp/moindump

$HOME/tmp/moindump に HTML ファイルと添付ファイルが出力される。

特定のページをダンプする:

python MoinMoin/script/moin.py --config-dir=$HOME/Sites/moin/wiki/config export dump --target-dir=$HOME/tmp/moindump --page=DocBook

DocBook.html が出力される。DocBook.html と同じ内容で index.html も書き出される。

Thanks to

このページの編集にご協力いただいた人達。

関連ページ

最終更新日 2010-08-05 14:49:53