自分だけのオリジナルWikipediaを作ろう! - MediaWikiインストール - | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

Wikipedia は、いわずと知れた人々の英知を集めた百科事典ツールです。


2007年4月の時点で日本版だけで約360万もの記事が掲載され、日々増加、加筆されています。

このような巨大なWikipediaは、世界中の様々な言語でも利用されていますが、意外にもその元となっているソフトウェアは、MediaWiki と呼ばれるフリーのソフトウェアから構築されています。


今回は、このMediaWikiの構築方法を書いてみます。

これで、自社内や自分のサイトに専用の事典を作る事ができます。


今回、私のほうで構築した環境はRedHatES4上であり、それに依存した記述がありますので参考にする際は、適宜自分の環境に置き換えてください。

MediaWikiはそのDBとして、PostgreSQLまたはMySQLを選択できますが、今回はPostgreSQLにて構築しています。



MediaWikiインストール前の準備


MediaWikiのDBとしてPostgreSQLを利用するために、PostgreSQLの環境を整えます。

RedHatES4に付属される、PostgreSQLはバージョンが7系です。

しかし、MediaWikiはバージョン8系が必要なので、OSをインストールする際にPostgreSQLのパッケージを含めずにインストールしておくか、またはインストール後である場合は、該当のパッケージを削除します。



1.1. PostgreSQLのパッケージがあるか確認


$ rpm -qa | grep postgres

上記で出てくるパッケージ削除する。


$ rpm -e {削除するパッケージ名}

パッケージ依存エラーが出る場合もあるので、関連するパッケージをまとめて削除します。

(必要なものまで削除しないように・・・)

パッケージ管理に関しては、下記の記事を参考にしてみてください。


up2dateによるRPMパッケージの更新管理


PostgreSQLのバージョン8は、RedHatNetworkを確認するとRPMパッケージで提供されているものがあるのですが、ベータ版である事と細かなオプション指定をしてインストールする必要があり、それが面倒なのでソースからインストールします。



1.2 PostgreSQL8のインストール


取り合えず、公式ページ からソースをダウンロードします。

2007.04の時点で8系最新のソースは、8.2.3です。今回はこれを利用します。


インストールのオプションは、自分の環境に合わせて設定してください。


$ ./configure --mandir=/usr/local/man/ --datadir=/var/lib/pgsql/ --enable-nls=ja

$ make

$ su -

# make install

インストール後は、PATHやPGDATAなど必要な環境変数をセットしておきます。


例)ハイライトの箇所を追記


$ su - postgres

$ vi .bashrc

PATH=$PATH:/usr/local/pgsql/bin/
export PATH
PGDATA=/var/lib/pgsql/data
export PGDATA


1.3 PostgreSQLのDB初期化


PostgreSQLのDBを初期化し、利用できるようにします。

$ su - postgres

$ initdb -E UTF-8 --pgdata=/var/lib/pgsql/data/


※ PHPはRPMパッケージを利用しています。

  ソースからインストールしている場合は、PostgreSQLのバージョンが変わった又は新規にインストールされた事で

  PHPの再コンパイルが必要です。



MediaWikiインストール


2.1 MediaWikiのソースをダウンロード


公式ページ より、MediaWikiのソースをダウンロードします。

今回インストールしたバージョンは、1.9.3です。



2.2 FTPで稼動させるサーバーに転送、展開



2.3 展開したソースを、ApacheのDocument Rootに移動


例) ApacheのDocument Rootが「/home/wwwroot/」だった場合


$ mv mediawiki-1.9.3 wiki

$ mv wiki /home/wwwroot/

移動したMediaWikiのディレクトリ内にある、configディレクトリの権限を

変更します。


$ cd /home/wwwroot/wiki/

$ chmod a+w config


2.4 ブラウザからMediaWikiにアクセス


MediaWikiはブラウザから環境設定が行えるため、2.3で移動させたMediaWikiのディレクトリにアクセスします。

http://hogehoge.com/wiki



MediaWiki初期画面




2.5 必要項目の設定


自分の環境でMediaWikiを利用するために必要な項目を設定します。


最低限設定する項目


Wiki name Wikiの名前
Language MediaWikiで使用する言語(日本語を選択)
Admin username と Password MediaWikiの管理者名とそのパスワード
Database host DBのホスト名。DBサーバーとWebサーバーが分かれている場合は、DBサーバーのIPアドレス又はホスト名を指定
Database name PostgreSQL上に作成したDB名(設定方法は、2.6参照)
DB username と DB password Media WikiからPostgreSQLのDBを操作を行うためのユーザー名とそのパスワード(設定方法は、2.6参照)


MediaWiki設定画面



2.6 DB及びDBユーザーの作成


2.5でDB名とユーザーを指定しましたが、作成していない場合はそれを作成しておきます。

2.5のMediaWikiインストール画面の「Dabase name」で入力した名前(今回はデフォルトのwikidb)でDBを作成します。


$ su - postgres

$ createdb wikidb

続いて、「Database user」で入力した名前(今回はデフォルトのwikiuser)をのPostgreSQL用ユーザーを作成します。


$ createuser wikiuser
Shall the new role be a superuser? (y/n) y
CREATE ROLE


2.7 Tsearch2のインストール


MediaWikiでは、Tsearch2という全文検索用のモジュールが必要です。

Tsearch2はPosrgreSQLの拡張モジュールとして用意されているので、PostgreSQLのソースに含まれています。


$ cd postgresql-8.2.3/contrib/tsearch2

$ make

$ su -

$ make install


次に、2.6で作成したDB(wikidb)にTsearch2用のテーブルを作成しておきます。


$ psql -e -f /var/lib/pgsql/contrib/tsearch2.sql wikidb

※ tsearch2.sqlのパスは、環境によって違ってくるのでfindコマンドで探してみてください。


スクリプトの実行が完了すると、下記のように必要なテーブルが作成されています。


wikidb=# \z
Access privileges for database "wikidb"
Schema | Name | Type | Access privileges
--------+--------------+-------+----------------------------
public | pg_ts_cfg    | table | 
public | pg_ts_cfgmap | table |
public | pg_ts_dict   | table |
public | pg_ts_parser | table | 


2.8 PL/pgSQLの設定


PL/pgSQLは、PostgreSQLデータベースシステム用の読み込み可能な手続き言語です。

PostgreSQLプログラマガイド より)


MediaWikiで必要になってくるので、2.6で作成したDBに登録しておきます。


$ createlang plpgsql wikidb


2.9 MediaWikiインストールの続行


ここまでで一通りの環境設定が整ったので、再度2.5のインストール画面の設定を確認し続行します。

インストールが完了すると、


Installation successful! Move the config/LocalSettings.php file into the parent directory, then follow this link to your wiki. 

とメッセージが表示されるので、メッセージの通りに2.3でDocument Rootに移動させたMediaWikiのディレクトリ内のconfigディレクトリにあるLocalSettings.phpを一つ上のディレクトリに移動させます。


$ cd /home/wwwroot/wiki/config/

$ mv LocalSettings.php ../


これで、必要な作業は全て完了です。


再度、ブラウザからMediaWikiのURLにアクセスします。


http://hogehoge.com/wiki/



MediaWikiメインページ



■ 今回の導入に際して参考にさせていただいたサイト


MediaWikiをインストールしてみた - Yukke.orz^Hg


UTF-8での全文検索メモ(PostgreSQL + Tsearch2 + MeCab 編) - plotless



MediaWikiインストール時のエラー対処


MediaWikiインストール時に必要な設定やモジュールが足らなかった場合は、エラーが出力されます。

そのエラーメッセージ別に対処方法を記載しておきます。



- メッセージその1


Checking that tsearch2 is installed in the database "wikidb"...FAILED. tsearch2 must be installed in the database "wikidb".Please see this article for instructions or ask on #postgresql on irc.freenode.net 

Tsearch2のインストールが正常に行われていない可能性があります。

前述の2.7の作業を行います。



- メッセージその2


Checking for Pl/Pgsql ...not installed. Attempting to install Pl/Pgsql ...
Warning: pg_query() [function.pg-query ]: Query failed: ERROR: must be superuser to create procedural language in /home/wwwroot/wiki/includes/DatabasePostgres.php on line 389
FAILED. You need to install the language plpgsql in the database wikidb 


PL/pgSQLがインストールされて否可能性があります。

前述の2.8の設定を行います。



- メッセージその3

PL/pgSQLがインストールされていない可能性があります。


Checking tsearch2 permissions...FAILED. Make sure that the user "wikiuser" has SELECT access to the tsearch2 tables 

Tsearch2用のテーブルに対して、SELECT権限がないケースです。


SELECT以外にもMediaWikiで利用するDBユーザーには様々な権限が必要なので適宜GRANTしてあげる必要があります。

または、前述の2.6のようにSuperUserとしてDBユーザーを作成します。



- メッセージその4


Creating tables...
Warning: pg_query() [function.pg-query ]: Query failed: ERROR: invalid byte sequence for encoding "EUC_JP": 0xc489 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". in /web/www/wiki/includes/DatabasePostgres.php on line 389 
Set $wgShowExceptionDetails = true; in LocalSettings.php to show detailed debugging information.


DBがUTF-8以外の文字コードで作成されています。(上記の場合はEUC-JP)なので、DBをUTF-8の文字コードを指定して再作成します。

再作成以降は、再度Tsearch2やPL/pgSQLの設定を行います。



2007.05.07 追記

MediaWikiのDBにPostgreSQLを利用した場合で、登録した記事を検索しようとすると下記の様な内部処理エラーが発生します。


Warning: pg_query() [function.pg-query]: Query failed: ERROR: no operand in tsearch query: "+&テスト&" in /home/wwwroot/wiki/includes/DatabasePostgres.php on line 389

どうも、Tsearch2を利用したSQLが上手く動いてくれないようですが、PostgreSQLが悪いのかMediaWiki側が悪いのかが不明・・・。

解消法を知っている方、教えてください。


2007.05.10 追記

Mediawikiのバージョンを1.10.0へあげるとエラーが解消しました。

詳しくは、下記参照


MediaWiki1.10.0リリース と 1.9.3からのバージョンアップ