XREA に pukiwiki を入れて複数の wiki サイトを運営してみる修行

XREA *1 で「小島丈幸.jp」をやっているけど、ずっと中身がなかったので pukiwiki を入れてみることにした。これまで LaCoocanpukiwiki を入れたり、その pukiwiki をファーストサーバに引っ越したりしてる。

今回もやりたいことはほぼ同じ。

  • 複数の wiki サイトをひとつの wiki エンジンで動かす。
  • 公開環境にはできるだけファイルを置かない。
想定

次の二つのサイトを作る。

  • 小島丈幸.jp
  • ipu.mato.me

便宜上、前者を tk、後者を ipu と呼ぶことにする。

次のようなものができあがるはず。

  • エンジン置き場 (ENGINE_DIR) : 共通で使う wiki エンジンを置く場所
  • tk データ置き場 (DATA_HOME): サイト tk のデータとスクリプトを置く非公開な場所
    • /var/tk/
  • tk 公開ディレクトリ (HTDOCS_DIR) : サイト tk 用のドキュメントルート、もちろん公開
    • /public_html/xn--dhqu55a2taf8b.jp/
  • ipu データ置き場 (DATA_HOME) : サイト ipu のデータとスクリプトを置く非公開な場所
    • /var/ipu/
  • ipu 公開ディレクトリ (HTDOCS_DIR): サイト ipu 用のドキュメントルート、もちろん公開
    • /public_html/ipu/
サーバ側下準備

XREA の CONTROL PANEL で必要なドメインを作っておく。すると、public_html に該当ディレクトリができる。
たとえば tk に対しては

/public_html/xn--dhqu55a2taf8b.jp/

ができる。これが HTDOCS_DIR になる。

さらに XREA サーバ側に ENGINE_DIR と DATA_HOME に対応するディレクトリを掘っておく (とりあえず ftp クライアントを利用)。

/usr/pukiwiki/ ... ENGINE_DIR
/var/tk/       ... tk の DATA_HOME
/var/ipu/      ... ipu の DATA_HOME
ローカル下準備

作戦としては、できるだけローカルで準備したうえで ftp する。なので、ダウンロードしてきたアーカイブを展開して org という名前にしておき、インストールディレクトリ構成は pukiwiki ディレクトリの下に作る。

[takeyuki@sunya work]$ tar xvzf ../arc/pukiwiki-1.4.7_notb_utf8.tar.gz
[takeyuki@sunya work]$ mv pukiwiki-1.4.7_notb_utf8/ org
[takeyuki@sunya work]$ mkdir -p pukiwiki
公開ディレクト

まずは index.php を準備する。org からコピーして内容を書き換える。

[takeyuki@sunya work]$ mkdir -p pukiwiki/htdocs/tk
[takeyuki@sunya work]$ mkdir -p pukiwiki/htdocs/ipu
[takeyuki@sunya work]$ cp org/index.php pukiwiki/htdocs/tk/
[takeyuki@sunya work]$ mv org/index.php pukiwiki/htdocs/ipu/

tk 側で書き換えるポイントは次のとおり。ftp で接続したときのルートディレクトリが php の実行環境では /virtual/ユーザ名/ になっているところに注目。

define('DATA_HOME',     '/virtual/unau/var/tk/');
define('ENGINE_DIR',    '/virtual/unau/usr/pukiwiki/');
define('LIB_DIR',       ENGINE_DIR.'lib/');

ipu 側の index.php は DATA_HOME が違うだけ。

define('DATA_HOME',     '/virtual/unau/var/ipu/');

公開ディレクトリには、静的コンテンツもコピーする。

[takeyuki@sunya work]$ cp -pr org/image/ pukiwiki/htdocs/ipu/
[takeyuki@sunya work]$ mv org/image/ pukiwiki/htdocs/tk/

本当は org/skin にも静的コンテンツが含まれる可能性があるんだけど、今はちょっと無視。とりあえずは skin/pukiwiki.css.php だけコピーしておく。

[takeyuki@sunya work]$ mkdir -p pukiwiki/htdocs/ipu/skin/
[takeyuki@sunya work]$ mkdir -p pukiwiki/htdocs/tk/skin/
[takeyuki@sunya work]$ cp org/skin/pukiwiki.css.php pukiwiki/htdocs/ipu/skin/
[takeyuki@sunya work]$ mv org/skin/pukiwiki.css.php pukiwiki/htdocs/tk/skin/

で、pukiwiki/htdocs/tk、pukiwiki/htdocs/ipu をそれぞれサーバ上の /public_html/xn--dhqu55a2taf8b.jp/、/public_html/ipu/ にコピーする。

エンジン置き場

ローカルでは pukiwiki/engine 以下にエンジンを置く。具体的には org/lib/ 以下と org/plugin/ 以下。

[takeyuki@sunya work]$ mkdir -p pukiwiki/engine
[takeyuki@sunya work]$ mv org/lib/ org/plugin/ pukiwiki/engine/

これを XREA サーバに /var/pukiwiki として put する。

エンジンは共通なのでこれは一回だけやればよい。

データ置き場

ここから下、まだ書いている途中だけど記事を公開しちゃう修行。

[takeyuki@sunya work]$ mkdir -p pukiwiki/var
[takeyuki@sunya work]$ cp -pr org/ pukiwiki/var/ipu
[takeyuki@sunya work]$ mv org/ pukiwiki/var/tk

pukiwiki/var/tk/pukiwiki.ini.php の重要な変更点はつぎのとおり。

define('PLUGIN_DIR',    ENGINE_DIR . 'plugin/'   ); // Plugin directory    
...
$modifier = 'Takeyuki Kojima';
...
$modifierlink = 'http://unau.mato.me/';
...
$adminpass = '{x-php-md5}ごにょごにょ';

var/tk/attach, backup, cache, counter, diff, trackback, wiki を chmod og+wx。


pukiwiki/var/tk/skin/pukiwiki.skin.php

<!--nobanner-->

を タグの前に入れて広告の自動挿入を回避。自分で広告を skin に書き込む。

*1:エクスリアと読むのね。いつも全然違う読み方をしちゃってる。なんて読んじゃっているかは秘密。