(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < Moinmoinを複数個設置する(サブディレクトリ編)

(ヽ'ω`) < 1つじゃ足りない

Moinmoinを単体で設置する方法を解説したが、時には複数個必要になる時もあるかもしれない。

参考:(ヽ'ω`) < MoinmoinをCentOS6にインストール - (ヽ´ω`) < *****

また、上記の解説ではホストのドキュメントルートに設置する場合の説明だったが、既にコンテンツを配置してあるホストの場合、サブディレクトリ運用を行いたいという要望は当然出てくると思う。

複数個のMoinmoin Wikiを設置するときの形態としては、

  • サブディレクトリ運用で複数
  • VirtualHost運用で複数

の2通りが考えられるので、それぞれについて解説を行う。

(ヽ'ω`) < 今回のシナリオ

今回は例として、Python, Ruby, JavaScriptそれぞれに関するMoinmoin Wikiを設置するシナリオを考えていく。

(ヽ'ω`) < まずはサブディレクトリ運用

サブディレクトリ運用は、Moinmoin側の設定がメインになる。

/usr/share/moinをテンプレートとしてコピー

Moinmoinをインストールした際に、

  1. /usr/bin/moin
  2. /usr/lib/python-/site-packages/***
  3. /usr/share/moin/***

と3つのファイル・ディレクトリがインストールされるが、この中でWikiの設定やデータを保持するのは、3のディレクトリとなる。(逆に言うと1と2は全てのMoinmoin Wikiで共有されるので、今回の手順では考慮しなくていい)

単体のMoinmoin Wikiを設置した際には、3のディレクトリの中身をそのまま使用したが、今回はこのディレクトリをテンプレートにそれぞれのMoinmoin Wikiを作成していく。

Moinmoin Wikiを設置するファイルシステム上の場所だが、これはどこでもOK。とりあえず今回は/optの下にmoinmoinというディレクトリを作成して、その中で作業を行なっていく。

/usr/share/moinディレクトリをそれぞれ名前を変更して/opt/moinmoinにコピーする。

## /opt/moinmoinを作成
[root@060071aa66f7 /]# mkdir /opt/moinmoin

## テンプレートディレクトリからそれぞれのMoinmoin Wikiディレクトリをコピー
[root@060071aa66f7 /]# cp -fr /usr/share/moin /opt/moinmoin/python
[root@060071aa66f7 /]# cp -fr /usr/share/moin /opt/moinmoin/ruby
[root@060071aa66f7 /]# cp -fr /usr/share/moin /opt/moinmoin/javascript

## コピーが正常に行われたかを確認
[root@060071aa66f7 /]# cd /opt/moinmoin/
[root@060071aa66f7 moinmoin]# ls -l
total 12
drwxr-xr-x 6 root root 4096 Oct 14 03:25 javascript
drwxr-xr-x 6 root root 4096 Oct 14 03:25 python
drwxr-xr-x 6 root root 4096 Oct 14 03:25 ruby
[root@060071aa66f7 moinmoin]#

moin.wsgiwikiconfig.pyをコピー

単体設置の時と同じく、server/moin.wsgiconfig/wikiconfig.pyを親ディレクトリにコピーする。

[root@060071aa66f7 /]# cp /opt/moinmoin/python/server/moin.wsgi /opt/moinmoin/python
[root@060071aa66f7 /]# cp /opt/moinmoin/python/config/wikiconfig.py /opt/moinmoin/python
...同じようにruby, javascriptディレクトリのものもコピーする

Apache側のmoin.confを編集

Apache側のWSGIとの連結部分の設定を記述するが、ここで単体の場合とWSGIScriptAliasの記述が変わってくる。

単体の場合は

WSGIScriptAlias / /usr/share/moin/moin.wsgi

だったが、複数かつサブディレクトリ運用の場合は

WSGIScriptAlias /python /opt/moinmoin/python/moin.wsgi
WSGIScriptAlias /ruby   /opt/moinmoin/ruby/moin.wsgi
WSGIScriptAlias /javascript  /opt/moinmoin/javascript/moin.wsgi

のように、

WSGIScriptAlias <サブディレクトリ名> <対応するWikiのmoin.wsgi>

のフォーマットでエントリを複数追加していく。

一見難解だが、よくよく見てみるとApacheAliasディレクティブと大きくは変わらない。
ホストのURLと、そこにアクセスした際に読み込まれるスクリプトに関して記述したwsgiファイルを対応付けているだけ。

moin.wsgiファイルの記述

これは単体設置の時と同じ

wikiconfig.pyファイルの記述(url_prefix_staticの修正)

これも単体設置の時と同じく、sitenamepage_front_page, superuserなどの設定を行うが、更にここで1つ設定を追加の必要がある。

url_prefix_staticという変数の値を設定する必要がある。形式としては

url_prefix_static = <"/" + サブディレクトリ名> + url_prefix_static

今回のシナリオで言うと

## in /opt/moinmoin/python/wikiconfig.py
url_prefix_static = "/python" + url_prefix_static
## in /opt/moinmoin/ruby/wikiconfig.py
url_prefix_static = "/ruby" + url_prefix_static
## in /opt/moinmoin/javascript/wikicnofig.py
url_prefix_static = "/javascript" + url_prefix_static

と、それぞれのファイルをそれぞれのURLにマッチした形で記述する。

デフォルトではドキュメントルート直下への設置が想定されているため、url_prefix_staticの行はコメントアウトされている。

その他の設定

その他の設定は全て単体設置の場合と同じになる。

(ヽ'ω`) < 結局、単体設置の時と何が違うの?

まとめると、複数設置でサブディレクトリ運用の場合は

  • /usr/share/moinをテンプレートとして任意のディレクトリに、moinからリネームしてコピー
  • Apache側でURLとwsgiファイルのマッピングを設定
  • wikiconfig.pyurl_prefix_staticの値を設定

の3点を行う必要がある。

上記設定にてそれぞれのMoinmoin Wiki

でアクセスが可能となる。

(ヽ'ω`) < VirtualHost運用は?

なんかペロって書けるかなと思ったけど、以外に長くなってきたので別エントリで説明します。