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

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

(ヽ'ω`) < MoinmoinをCentOS6にインストール

(ヽ'ω`) < なぜMoinmoinなのか

という事を書き出すと長くなるので、それはまた別エントリーで。

一言で言うと、日本ではそんなにメジャーじゃないけど、海外では特にオープンソースコミュニティ系で多く使われているので、色々とノウハウがあるだろうというところが一番大きい。

MoinMoinWikis - MoinMoin

国際化対応は済んでいるので、標準のインストールパッケージでも、そのまま日本語での運用が可能。

(ヽ'ω`) < いくつかのインストール方法

多くのその他のソフトウェアと同じく、Moinmoinもパッケージ管理システムからインストールする方法と、ソースからインストールする方法がある。

実はどちらの方法で入れたとしても、配置されるファイルの場所が少し違うだけで、実際に動作させるまでの手間はほとんど変わらない。

パッケージ管理システムからのインストール

CentOSには公式リポジトリ、epel共にMoinmoinは用意されていない。CentOSでパッケージ管理システムを使ってインストールしたいという事になると、Pythonのパッケージ管理システムのpipを使う。

# yum install epel-release
# yum install python-pip
# pip install moin

Debianの場合はpython-moinmoinというパッケージ名で用意されているので、aptを使ってインストールが可能。

# apt-get install python-moinmoin

ソースからのインストール

MoinMoinDownload - MoinMoin

公式ページからtarballをダウンロードして、適当なディレクトリ(/usr/local/src)に展開する。

展開後、作成されたディレクトリに入って以下のコマンドを実行する。

# python setup.py install --force --record=install.log

上記コマンドで、ファイルが配置される(デフォルトの場所は/usr以下 --prefixオプションで変更可能)

ファイルの配置構成

どのインストール方法でインストールを行なっても、デフォルトでは配置されるファイルの構成は以下の通りとなる。

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

1と2については特にファイルを触ることはないので無視してもいい。
3の/usr/share/moinのみにフォーカスを当てて設定を構築していく。

(ヽ'ω`) < 設定を書いていく

これで必要なファイルの配置は終わったので、次に設定を行なっていく。

ここでの設定については公式ドキュメントのHow toをベースに解説を行う。

HowTo/CentOSQuick - MoinMoin

設定は大きく5つのフェーズにわかれていて、

  1. 設定のためのファイルを準備する
  2. Apache(mod_wsgi)とMoinmoinをつなげる設定を行う
  3. Moinmoinの初期設定を行う
  4. ディレクトリのパーミッションを設定
  5. Wikiの基本的な設定(タイトルなど)

1では設定に必要なファイルをコピーする
2ではApache側のmod_wsgiを設定してMoinmoinを起動させる準備をする
3ではMoinmoin側で使用するインストールの環境などを設定
4はそのまんま、ここまでがMoinmoinを動かすための設定
5ではインストールしたWiki自体の設定を行う

(ヽ'ω`) < 環境について

このメモを作成した際の環境については以下の通り

環境 バージョン
OS CentOS 6.5 x86_64
Moinmoin ver1.9.7
Apache httpd-2.2.15-29.el6.centos.x86_64
Python python-2.6.6-37.el6_4.x86_64
mod_wsgi mod_wsgi-3.2-3.el6.x86_64

Moinmoin以外についてはyumでインストール。

また、Moinmoin WikiのURLはhttp://moinmion.hoge.com/のように、/直下をエントリポイントとする。

(ヽ'ω`) < 1.設定ファイルのコピー

繰り返しになるが、基本的に触るのは/usr/share/moinディレクトリの中身のみ。1つのMoinmoin Wikiは、1つのmoinディレクトリに対応する。(複数のMoinmoin Wiki設置については別エントリーで説明予定)

参考:

設定ファイルのコピー

まずは設定を書き込むファイルをコピーする。

## 設定ファイルのコピー前はディレクトリのみ
[root@878eb2395ad2 moin]# cd /usr/share/moin
[root@878eb2395ad2 moin]# ls -l
total 16
drwxr-xr-x 5 root root 4096 Oct  8 07:06 config
drwxr-xr-x 7 root root 4096 Oct  8 07:06 data
drwxr-xr-x 2 root root 4096 Oct  8 07:06 server
drwxr-xr-x 3 root root 4096 Oct  8 06:18 underlay

## 設定ファイルをコピー
[root@878eb2395ad2 moin]# cp server/moin.wsgi .
[root@878eb2395ad2 moin]# cp config/wikiconfig.py .

## ファイルがコピーされたことを確認
[root@878eb2395ad2 moin]# ls -l
total 28
drwxr-xr-x 5 root root 4096 Oct  8 07:06 config
drwxr-xr-x 7 root root 4096 Oct  8 07:06 data
-rw-r--r-- 1 root root 1970 Oct  8 07:07 moin.wsgi
drwxr-xr-x 2 root root 4096 Oct  8 07:06 server
drwxr-xr-x 3 root root 4096 Oct  8 06:18 underlay
-rw-r--r-- 1 root root 6800 Oct  8 07:07 wikiconfig.py
[root@878eb2395ad2 moin]#

解説ページによっては上記のmoin.wsgiwikiconfig.pyをそのまま直接編集するように指示してあるところもあるけど、今回はコピーして編集する。

(ヽ'ω`) < 2.Apacheとの連携設定

必要なファイルの準備ができたので、次にApacheとの連携部分の設定を行う。

Apache側のコンフィグを追加

Apacheはmod_wsgiを使ってPythonスクリプトを走らせるので、Apacheが先ほどコピーしたmoin.wsgiを読み込むように設定する。

前提としてmod_wsgiがyumでインストールされていて、Apacheのhttpd.confには既に以下のエントリーがあるものとする。

LoadModule wsgi_module modules/mod_wsgi.so

/etc/httpd/conf.d/moin.confというファイルを作成して、以下の内容を書き込む。(Debianの場合は/etc/apache2/sites-available/内にあるVirtualHostの定義ファイルに追記する)

#
#  MoinMoin WSGI configuration
#
# you will invoke your moin wiki at the root url, like http://servername/FrontPage:
WSGIScriptAlias /   /usr/share/moin/moin.wsgi

# create some wsgi daemons - use user/group same as your data_dir:
WSGIDaemonProcess moin user=apache group=apache processes=5 threads=10 maximum-requests=1000 umask=0007

# use the daemons we defined above to process requests!
WSGIProcessGroup moin 

# WSGISocketPrefix
WSGISocketPrefix /var/run/moin-wsgi

今回は/直下にMoinmoinを配置するので、WSGIScriptAliasは上記のとおりとなる。

このファイルの記述については、Moinmoinの設定と言うよりはmod_wsgiの設定の話なので、今回は深くまで触れない。

Moinmoinをサブディレクトリ運用で複数設置する場合については、別で説明する。

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

(ヽ'ω`) < 3.Moinmion側のコンフィグを設定

Apache側のWSGIに関する設定は終わったので、今度はMoinmoin側のWSGIに関する設定を行う。

編集するファイルは、先ほどコピーした/usr/share/moin/moin.wsgi

ファイルの中身はPythonスクリプトそのもので、慣れてないとちょっと戸惑うが、各セクションにはちゃんとコメントが書いてあるし、短い内容なので安心して欲しい。

ファイルを読んでいくと、a,bセクションに分かれており、aセクションは更にa1, a2と分かれている。

まずはaセクションだが下記の通りコメントが書いてある。

# a) Configuration of Python's code search path
#    If you already have set up the PYTHONPATH environment variable for the
#    stuff you see below, you don't need to do a1) and a2).

# a1) Path of the directory where the MoinMoin code package is located.
#     Needed if you installed with --prefix=PREFIX or you didn't use setup.py.
#sys.path.insert(0, 'PREFIX/lib/python2.3/site-packages')

# a2) Path of the directory where wikiconfig.py / farmconfig.py is located.
#     See wiki/config/... for some sample config files.
#sys.path.insert(0, '/path/to/wikiconfigdir')
#sys.path.insert(0, '/path/to/farmconfigdir')

a1の設定

a1の項目には、Moinmoinをインストールした際に/usr/lib/python<version>/site-packages/***が配置されta が、そのパスを記述する。

設定ファイル内の例ではpython2.3となっているが、今回の環境(CentOS 6.5)では/usr/lib/python2.6/site-packagesとなっている。

例えばDebian7.6のaptでpython-moinmoinをインストールした場合は/usr/lib/python2.7/site-packagesとなった(2014/10/04現在)
インストール場所を指定していない場合は、/usr/lib/python<version>/site-packagesでOKだが、ソースインストールの際に--prefixオプションを付与した場合などは、場所が変わるので要注意。

ソースからインストールした場合は--recordオプションを付与することで、ファイルのインストール場所が指定のファイルに吐き出されるのでそれを確認する。
aptでインストールした場合はdpkg -L python-moinmionで確認が可能。

a2の設定

a2の項目はwikiconfig.pyファイルが置いてあるディレクトリ名を指定する。
今回の場合はファイルを/usr/share/moinにコピーしたので、/usr/share/moinを指定する。

設定例

というわけで、実際に編集した内容は以下の通りとなる。

# a) Configuration of Python's code search path
#    If you already have set up the PYTHONPATH environment variable for the
#    stuff you see below, you don't need to do a1) and a2).

# a1) Path of the directory where the MoinMoin code package is located.
#     Needed if you installed with --prefix=PREFIX or you didn't use setup.py.
#sys.path.insert(0, 'PREFIX/lib/python2.3/site-packages')
sys.path.insert(0, '/usr/lib/python2.6/site-packages')

# a2) Path of the directory where wikiconfig.py / farmconfig.py is located.
#     See wiki/config/... for some sample config files.
#sys.path.insert(0, '/path/to/wikiconfigdir')
#sys.path.insert(0, '/path/to/farmconfigdir')
sys.path.insert(0, '/usr/share/moin')

bセクションについては、とりあえず起動という事であれば関係ないので別記事で触れる。

(ヽ'ω`) < (なんか「別記事で」ばっかりや…)

(ヽ'ω`) < 4.ディレクトリパーミッションの設定

/usr/share/moinのowner:groupをapacheに変更して、オーナーとグループにのみ全権限を与える、 otherはアクセス権なし

# cd /usr/share
# chown -R apache:apache moin
# chmod -R ug+rwX moin
# chmod -R o-rwx moin

CentOSの場合はユーザ・グループ名共にapacheだが、Debianの場合はwww-dataとなる。(Apacheプロセスのオーナーを指定する。)

(ヽ'ω`) < ちょっと休もう

ここまでで大まかなインストールは完了。あとはWiki固有の初期設定を行なっていく。

本当はここまでをインストール編として区切ってしまって、あとはWikiの設定編として新しい記事にしたほうがいいのかもしれないが、

(ヽ'ω`) < やっぱり動いてる画面を見たいよね

(ヽ'ω`) < 5.Wikiの初期設定

4まででMoinmionのインストールが終わったので、ここではMoinmoinインスタンス(Wiki自体)の設定を行う。

設定は1でコピーしたファイルのもう一方、/usr/share/moin/wikiconfig.pyを編集して行う。中身はこれまたPythonスクリプトそのもの。各変数に値を指定することで、設定を行なっていく。

(ヽ'ω`) < はい、注目

wikiconfig.pyの記述の際に一つ注意点。Pythonではブロックをインデントで表現する。下記の文は、wikiconfig.py内のConfigクラス内に記述するので、1レベル分インデントする必要がある。また、Pythonではタブによるインデントと空白によるインデント、空白のインデントの場合その個数も区別される。

というわけで、下記の文は必ず先頭に半角スペース4つを挿入して記載する必要がある。

この約束を守らない(インデントが崩れている)と、以下の通りConfigurationErrorと表示されWikiにアクセスできなくなる。

f:id:tsugi-hagi:20141017094609p:plain

Wiki名の設定

sitemnameで設定する。ここで指定した値は、各ページのタイトルに

<ページ名> - <Wiki名>

の形で表示される。

sitename = u"My First Wiki"

ダブルクオーテーションの前のuに関してはPythonの中の話なので気にせずに。

トップページの名前の設定

Wikiのトップページの名前の設定はpage_front_pageで設定する。

理由はよくわからないが、コンテンツを複数言語で扱う場合は"FrontPage"と設定しろとコメントされて>いる。

# name of entry page / front page [Unicode], choose one of those:

# a) if most wiki content is in a single language
#page_front_page = u"MyStartingPage"

# b) if wiki content is maintained in many languages
page_front_page = u"FrontPage"

管理者ユーザ名(superuser)の設定

Securityセクションでsuperuser(管理者)の設定を行う superuser変数にユーザ名を代入する。複数人の管理者を作成することを考慮して、配列形式になっている。

superuser = [u"tsugihagi","hogeadmin",]

ここで一つ注意点、ここでは「ユーザを作成」したのではなく、「権限を持つユーザ名を指定」することになる。

多分よく意味がわからないと思うけど、とりあえず覚えておくと良いかも。

TimeZone(tz_offset)の設定

公式のドキュメントに記載は無いが、タイムゾーンの設定を行う。

デフォルト値は0.0だが、ファイル内に記載がないので、最下部にでも以下の一行を追加する。

tz_offset = 9.0

(ヽ'ω`) < はい、おつかれさん

ここまでの作業が終わると、ようやくMoinmoinのWeb画面を表示することが可能となる。

Apacheを再起動して

# service httpd restart

http://domain or IP/ にアクセスすると、Moinmoinの画面が表示されるはず。

ここからユーザ作成と言語設定をすれば、とりあえずWikiとして使えるようになるんだけど、そこは次記事で。

次記事: (ヽ'ω`) < インストールしたMoinmoinを使ってみる - (ヽ´ω`) < *****

(ヽ'ω`) < CentOS 7は?

HowTo/CentOSQuick - MoinMoin

Platforms
CentOS 5.4 - 6.5

あくまでHow toの文章に対する話なので7でも動くんじゃないかと。