MoinMoinのインストールと運用

(2007.11.21)

組織(会社や団体)の情報共有にWikiは効果的です。

Fedora 8 Linux に、PythonベースのWikiエンジン「MoinMoin」をインストールしてみます。イントラネット内のサーバに設置する前提で、アクセス制御は簡単にします。

入手とインストール

Fedora 8 には、MoinMoin 1.5.8 のパッケージが用意されています。バージョンが違う場合は適宜読み替えてください。

# yum install moin

/usr/share/doc/moin-1.5.8/README-rpm ファイルに導入手順が書いてあります。

まず、次のスクリプトをrootユーザで実行して、必要なファイルをコピーします。/var/www/mywiki の部分は必要に応じて書き換えます。一つのマシンに複数のWikiサイトを作ることもできます。

/usr/share/moin/htdocs ディレクトリ以下にもデータがありますが、これは複数のwikiサイトで共有します。ここにテーマファイル、アプレットファイルを置きます。

#!/bin/sh
DESTDIR=/var/www/mywiki
mkdir -p $DESTDIR/cgi-bin
cp -a /usr/share/moin/{data,underlay} $DESTDIR
cp -a /usr/share/moin/server/moin.cgi $DESTDIR/cgi-bin
cp -a /usr/share/moin/config/wikiconfig.py $DESTDIR/cgi-bin
chown -R apache:apache $DESTDIR/{data,underlay}

次に、Webサーバを設定するため、/etc/httpd/conf.d/mywiki.conf ファイルを用意します。

ScriptAlias /mywiki "/var/www/mywiki/cgi-bin/moin.cgi"
<Directory "/var/www/mywiki/cgi-bin/">
    Options Indexes FollowSymLinks ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Alias /wiki/ "/usr/share/moin/htdocs/"
<Directory "/usr/share/moin/htdocs/">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Webサーバ (httpd) を再起動したら、http://ホスト名/mywiki にアクセスしてみます。

初期設定

トップページ HelpOnLanguages にカスタマイズの手順が書かれています。それに沿ってカスタマイズしていきます。

手順を読みながら、まとめてwikiconfig.py 設定ファイルを更新するのが効率的です。

日本語メッセージを追加する

初期設定だとメッセージが英語です。まぁ別にこのままでもいいですが、日本語化します。

  1. まず最初のWikiユーザを作り、wikiconfig.py ファイルの superuser 項目を編集してサイト管理者にします。
  2. ログインした上で、http://ホスト名/mywiki/SystemPagesSetup にアクセスします。
  3. 各言語の行に install とあるので、それをクリックします。

それから wikiconfig.py の language_default を 'ja' にします。

デフォルトではWebブラウザの言語設定に合わせて出力するようになっているので、Webブラウザによっては、MoinMoinのユーザ設定(プレファレンス)画面で言語を Japanese にしないと日本語にならないこともあります。

スタートページを変更する

HelpOnLanguages ページは、スタートページとしては相応しくありません。wikiconfig.py ファイルの page_front_page で設定します。FrontPageがいいでしょう。

page_front_page = u"FrontPage"

テーマを追加する

標準のテーマは、率直に言って、あまり見栄えがしません。テーマを導入しましょう。公式サイトにテーマ集があります。

例えば、MentalWealth を入れてみました。まず、デフォルトテーマを変更します。

  1. アーカイブを /usr/share/moin/htdocs に展開します。
  2. テーマ名/テーマ名.py ファイルを /var/www/mywiki/data/plugin/theme にコピー。
  3. /var/www/mywiki/cgi-bin/wikiconfig.py ファイルを編集します。theme_default を書き換えます。

これだけです。Wikiユーザは、ユーザ設定画面でデフォルトのテーマ以外にも変更できます。

アクセス制御

MoinMoin は複雑なアクセス制御 (access control) ができますが、組織において部門単位でアクセス制限を掛けるのは関心しません。いったい、本当に部内秘に「しなければならない」ものがどれだけあるでしょうか。財務情報ですら、組織内に対してはオープンであるべきです (open-book management)。

以下では、誰でも見れるけれど、ログインユーザだけが編集できるようにしてみます。詳しくは Wikiサイトの HelpOnAccessControlLists ページを参照してください。

MoinMoinのアクセス制御は、(1) どのような権限を (2) どのユーザ(もしくはグループ)に与えるか、という風にして設定していきます。

wikiconfig.py でサイト共通の設定を決め、さらにページ単位で修正することができます。

まず権限は次のものがあります。

  • read - 読み取り
  • write - 書き込み
  • delete - ページの削除
  • revert - 古い内容(リビジョン)へ巻き戻す
  • admin - ページのアクセス制御を変更

加えて、read, write, deleteのすべてを持つユーザ(グループ)は、ページを rename できます。

権限を付与できる対象は、

  • ユーザ名 - 個々のユーザ
  • グループ名 - グループに属するユーザ。グループ名は SomeGroup の形。
  • Trusted - 特殊グループ。HTTP-Basic認証で認証されたユーザ。
  • Known - 特殊グループ。ログインしているユーザ
  • All - 特殊グループ。すべての利用者(ログインユーザまたはゲスト)

これらを組み合わせて設定を書きます。

wikiconfig.py に書く設定は、サイト全体に適用されます。

acl_rights_before
デフォルト u""

すべての設定に優先して適用されます。サイト全体の管理者や編集者を定めるのに使います。

acl_rights_default
デフォルト u"Trusted:read,write,delete,revert Known:read,write,delete,revert All:read,write"

各ページ独自のアクセス制御の設定がないときに使われます。

acl_rights_after
デフォルト u""

acl_rights_before, 各ページの設定(またはacl_rights_default)の後に適用されます。備忘用。

設定する値は次の形です。

ユーザ名,...:権限,... ユーザ名,...:権限

空白文字で区切るので、カンマの前後、コロンの前後に空白を挟んではいけません。

バックアップ

MoinMoinはすべてのデータをファイルに保存するので、単純にそれを固めればいいです。

TODO: 手順