2015年7月31日金曜日

MediaWiki でショートURL表記にする

MediaWiki をインストールして http://サーバ/mediawiki でアクセスできるようにした。

このままだと http://サーバ/mediawiki/index.php/Hoge って感じでアクセスすることになるのでこれを http://サーバ/mediawiki/Hoge って感じでアクセスできるようにする。サーバやインストールの形態によってやり方は異なるので一例としてみてほしい。

サーバは Apache 2.2 で mediawiki のファイル群は /home/apache/mediawiki にインストール、DocumentoRoot からは以下のように httpd.conf の Alias 設定で飛ばしている。

Alias /mediawiki /home/apache/mediawiki

http://サーバ/mediawiki/Hoge にきたリクエストを http://サーバ/mediawiki/index.php/Hoge に書き換えるには以下のような .htaccess を /home/apache/mediawiki に置けばよい。

<IfModule mod_rewrite.c>
   RewriteEngine On
   # Redirect Trailing Slashes...
   RewriteRule ^(.*)/$ /$1 [L,R=301]

   # Handle From Controller...
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^ /mediawiki/index.php [L]
</IfModule>

最後に MediaWiki 内でも http://サーバ/mediawiki/Hoge 形式で取り扱うように LocalSettings.php を以下のように修正する

$wgScriptPath = "/mediawiki";
$wgArticlePath = "{$wgScriptPath}/$1";

これで完了。

(追記)
R=301 の指定は危険なのでやめたほうが無難そう。

2015年7月29日水曜日

MediaWiki のインストール

Pukiwiki がちょっと肌に合わない感じなので MediaWiki を入れて試してみることにした。

MediaWiki のインストール説明に従い、あらかじめ MySQL でデータベースの作成と管理ユーザを作っておく。

# mysql -u root -p
mysql> create databse mediawiki;
mysql> grant index, create, select, insert, update, delete, drop, alter, lock tables on mediawiki.* to 'mediawiki'@'localhost' identified by 'パスワード';

MediaWiki を展開してアクセスすると初期設定が始まる。最初の動作環境チェックでキャッシュとunicode処理のモジュールがないと言われたので yum で追加インストールする。なくても動作するらしいがないとパフォーマンスが悪いそうなので入れておくことにした。

yum install php56u-pecl-apcu.x86_64
yum install php56u-intl.x86_64

で、もう一度チェックすると今度は libicu (php56u-intl が依存するライブラリ)が古いと言われた。

libicu の新しいのは Remi http://rpms.famillecollet.com/ とかいうリポジトリにしか見当たらなかったのでやむなく Remi を入れる。

rpm -Uvh remi-release-6.rpm

で、php から丸ごと入れなおし。

yum install --enablerepo=remi-php56 php php-mysql php-mbstring
yum install --enablerepo=remi-php56 php-pecl-apcu
yum install --enablerepo=remi-php56 php-intl

MediaWiki がなぜか動かないので Apache のログ見たら


PHP Fatal error:  Class 'DOMDocument' not found in ...

っていうエラーが出てた。 ググるとPHPパッケージによってはモジュールが別で作成されてるとのこと。php-xml を入れればいいらしい。

yum install --enablerepo=remi-php56 php-xml

動いた。