Media Wikiインストール

急な話で内部の情報登録用にWikiが欲しいということになったので、MediaWikiを入れてみた。普段はhikiを使っていてそれはさくさく環境をつくれるんだけど、MediaWikiは入れたことがなかったので手順をとりまとめ(ファイルのアップロードとかしたいということだったので、MediaWikiの方が便利そうだった)。

手順をなぜまとめるかというと、環境が少し古いのでApache1系にPostgreSQLが動作しているサーバーに入れる必要があって、これの手順がかかれているサイトが少なかったというわけ。

まず、動作環境は以下の通り。

  • PHP5-2-6
  • MediaWiki-1.13.2
  • Apache1.3.41
  • PostgreSQL8.2.10

最初にPHP5系をダウンロード(PHPは3系以来さわってないので久しぶり)。配布先は、http://www.php.net/downloads.phpにあった。

MediaWikiに必要なconfigure設定があるのかな、と思ってMediawikiのページを見たら以下のようなオプションが例で掲載されていた

'./configure' '--with-mysql' '--without-sqlite' '--with-apxs2=/usr/sbin/apxs2' 
  '--with-zlib' '--with-ldap' '--with-gd' '--with-jpeg-dir'
  '--with-iconv-dir' '--enable-mbstring' 

これだとPostgreSQLで動かないのとApache1系で動かない。それにldapは使いたくない環境なので以下のように修正してインストール

#./configure --with-pgsql --without-sqlite --with-zlib  --with-gd 
 --with-jpeg-dir --with-iconv-dir --enable-mbstring 
 --with-apxs=/usr/local/apache/bin/apxs
#make
#make install

これで以下のメッセージが出て終了。httpd.confを書き換えたという確認のメッセージですね。

[activating module `php5' in /usr/local/apache/conf/httpd.conf]
cp libs/libphp5.so /usr/local/apache/libexec/libphp5.so
chmod 755 /usr/local/apache/libexec/libphp5.so
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new

php.iniはインストールされないはずなので、推奨設定の入ったファイルをコピーしておく

 #cp /usr/local/src/php-5.2.6/php.ini-recommended /usr/local/lib/php.ini

テスト的に動作させるので細かい設定は後で見直すとして、セッションの保存パスだけコメントを外しておいた(同じだとは想うが)。

session.save_path = "/tmp"

後は、以下の修正をhttpd.confに加えてApacheを再起動すればWebサーバー側は完了。

 LoadModule php5_module        libexec/libphp5.so
 AddModule mod_php5.c
 <IfModule mod_php5.c>
   AddType application/x-httpd-php .php5
   AddType application/x-httpd-php-source .phps
 </IfModule>

次にMediaWikiを解凍してhtdocs配下のどこかに配置するか、シンボリックリンクしておく。そしてindex.php5にアクセスすると設定しなさい、という旨のリンクがブラウザに表示される。

セットアップリンクを押す前に以下のソースを修正した。

今回セットアップしたPostgreSQLがディフォルト文字コードeucになっていて、セットアップを流すとeucのデータベースができてしまい文字コード問題のエラーが表示されたのでそれを回避するための処置。

対象ファイル
/mediawiki/includes/db/DatabasePostgres.php
257行目(OWNERの後ろに=をつけてからencoding以下を増やした)
$SQL = "CREATE DATABASE $safename OWNER=$safeuser encoding = 'UTF-8'";

修正したら先ほどのセットアップリンクをクリックすると管理者IDやWikiの名称、DBの設定項目などが表示される。必要項目を入力したら一番下のボタンをクリックしてインストールを実施。

インストーラーが流れるとtsearch2.sqlが無いといわれて停止。PostgreSQLのモジュールが不足しているようなので、追加インストール。

#cd /usr/local/src/postgresql-8.2.10/contrib/tsearch2
#make
#su postgres
#make install

インストールしたらMediawikiが作ったDBにtsearch2.sqlを流し込む(今回はディフォルトのwikidbという名前で作ってみた)。

#cd /usr/local/pgsql/share/contrib
#psql wikidb < ./tsearch2.sql

これで先ほどのWebページに再度アクセス(リロードでもいい)すると、以下のメッセージがででインストール完了。NGな場合は丁寧なエラーメッセージが表示されるのでそれに従えば導入できるはず。

Installation successful! Move the config/LocalSettings.php file to the parent directory, 
then follow this link to your wiki.
You should change file permissions for LocalSettings.php as required to prevent other users 
on the server reading passwords and altering configuration data.

最後のメッセージでLocalSettings.phpを1個上の階層にコピーすれば動作できるようになる。細かい修正項目はこのファイルに書いて行くことになるので、元のファイルは置いておいて差分をとれるようにしておくのがいいと想う。

特に以下の定義を上記ファイルに入れないとファイルアップロードができなくて非常に不便なので入れておくのが吉

$wgEnableUploads       = true;

さすがに普及しているシステムだけあって、インストール画面でのエラーメッセージは非常に親切。あの画面の表示までいければ、何が悪いかは逐一教えてくれるのでそのガイドに従っていけばまずセットアップできると想う。

ただ、PostgreSQLはちょっと面倒なので最初からインストールの時はディフォルトのMySQLの方が簡単かもしれない。