LaCoocan から Plesk なファーストサーバに Pukiwiki 群をお引越しさせる修行

以前 LaCoocan に作った wiki 群を、新たにプロビジネス20コースで契約したファーストサーバ上にお引越し。

Plesk な環境に、一つの wiki エンジンを用いた複数の wiki サイトを稼動させるのがポイントか。ほとんどの部分は Plesk に関係なく適用できるはず。

ポリシー

  • wiki エンジンは非公開領域 (ENGINE_DIR) に一つだけ置く
  • バーチャルホストを使って複数の wiki サイトを作る。
  • 共通の静的ファイルは一箇所にまとめる。
    • できれば http://static.avel.io/ みたいな独自ドメイン
      • HTTP レベルのキャッシュが効くかも
      • lightwight な HTTP サーバが使えていいかも
    • どっちにしろ大したことないので、ファイルの実体が一つならよい
  • サイトごとのデータは、サイトごとの非公開領域に置く
  • Plesk が想定しないつくりにしない
    • 今後もできるだけ Plesk を使っていきたいし
    • 最終的には Plesk をハックして WikiFarm 機能を付け加えちゃうのが面白そうだけど
      • wiki サイトとか blog サイトとか sns サイトとか portal サイトとか作ってあげちゃうサービスもありだな。やってみよう

かな。

エンジン置き場 (ENGINE_DIR)

とりあえず /usr/local/ に pukiwki ディレクトリを掘り、そこを ENGINE_DIR とする。ここは apache からは読めればいいだけなので、オーナーは root.root で。

# mkdir -p /usr/local/pukiwiki
# cp -a ./lib ./plugin ./image ./skin /usr/local/pukiwiki/
# ls -la /usr/local/pukiwiki/
total 24
drwxr-xr-x  6 root root 4096 Sep 10 21:01 .
drwxr-xr-x 13 root root 4096 Sep 10 16:02 ..
drwxr-xr-x  3 root root 4096 Aug 28 06:19 image
drwxr-xr-x  2 root root 4096 Sep 10 20:53 lib
drwxr-xr-x  2 root root 4096 Aug 28 06:19 plugin
drwxr-xr-x  3 root root 4096 Sep 10 21:11 skin

ほんとうは lib と plugin だけにして、静的ファイル群は別のところに置きたかったのだが諸事情がありここに居候。って、もうわかる人にはこのあとどうなるかわかっただろう。

個別のサイトの構築

前準備あれこれ
  • Plesk で必要なクライアント、ドメインを作っておく
  • ドメイン(もしくはサブドメイン)で物理ホスティングする
    • ここでは : nekowiki.avel.io で wiki を使うとする
    • ここでは : nekochan というアカウントを貸与するものとする
  • nekowiki.avel.io で名前を引けるように DNS レコードを追加する
非公開領域のデータディレクトリ (DATA_DIR)

非公開ディレクトリに pukiwiki の中身をごそっとコピーする。ただし、すでに ENGINE_DIR に置いたものと、公開領域に置く index.php は除く。

# mkdir -p  /var/www/vhosts/nekowiki.avel.io/private/pukiwiki
# cp -a * /var/www/vhosts/nekowiki.avel.io/private/pukiwiki

このままだと apache がこのディレクトリにアクセスできないし、書込みもできないので、オーナーと権限を変えておく。

# id apache
uid=48(apache) gid=48(apache) groups=48(apache),2522(psaserv)
# chown -R nekochan.psaserv /var/www/vhosts/nekowiki.avel.io/private/
# find /var/www/vhosts/nekowiki.avel.io/private/ -type d | xargs chmod g+ws 
# find /var/www/vhosts/unau.mato.me/private/ -type f | xargs chmod g+w

psaserv グループが何ものかわからないのだが、とりあえず apache ユーザが所属していたので利用させてもらった。

次に pukiwiki.ini.php を適宜編集する。重要な変更点は次のとおり。

define('PLUGIN_DIR',    ENGINE_DIR . 'plugin/'   ); // Plugin directory
---
define('SKIN_DIR', '../../httpdocs/skin/');
---
$script = 'http://nekowiki.avel.io/';
公開領域

公開領域に pukiwiki 由来のものは index.php だけになる。うそ、共通領域の skin/ へのシンボリックリンクも必要。

# cp index.php /var/www/vhosts/nekowiki.avel.io/httpdocs/
# ln -s /usr/local/pukiwiki/skin/ /var/www/vhosts/nekowiki.avel.io/httpdocs/

もちろん、index.php は編集しなければならない。重要なところは、こんな感じ。

define('DATA_HOME',  '/var/www/vhosts/nekowiki.avel.io/private/pukiwiki/');
define('ENGINE_DIR', '/usr/local/pukiwiki/');
define('LIB_DIR',    ENGINE_DIR.'lib/');

正しくは index.php のオーナーも変えるべきだろう。root のままでも動くので放置してるが。えい、書いとくか。

# chown nekochan.psaserv /var/www/vhosts/nekowiki.avel.io/httpdocs/index.php

あと、ドメインを作ったときに Plesk が自動的に作ってくれる http コンテンツは片付けるべきだね。これは何が不必要かまだわかってないので放置。

Apache の設定

vhost.conf を所定の位置におくと、include してくれるらしい。

# cat > /var/www/vhost/nekowiki.avel.io/conf/vhost.conf
<Directory /var/www/vhosts/nekowiki.avel.io/httpdocs>
    <IfModule sapi_apache2.c>
        php_admin_flag engine on
        php_admin_flag safe_mode off
        php_admin_value open_basedir "/usr/local/pukiwiki:/var/www/vhosts/nekowiki.avel.io/private/pukiwiki:/var/www/vhosts/nekowiki.avel.io/httpdocs:/tmp"
    </IfModule>
    <IfModule mod_php5.c>
        php_admin_flag engine on
        php_admin_flag safe_mode off
        php_admin_value open_basedir "/usr/local/pukiwiki:/var/www/vhosts/nekowiki.avel.io/private/pukiwiki:/var/www/vhosts/nekowiki.avel.io/httpdocs:/tmp"
    </IfModule>
</Directory>
^D
# /usr/local/psa/admin/bin/websrvmng -v -a

最後のコマンド websrvmng -v -a を実行すると、/var/www/vhosts/nekowiki.avel.io/conf/httpd.include に

        Include /var/www/vhosts/nekowiki.avel.io/conf/vhost.conf

が挿入される。今のところ websrvmng 自体はなんのこっちゃだが、次のページの情報を利用させていただいた。多謝。

そうそう、先の /var/www/vhost/nekowiki.avel.io/conf/vhost.conf では safe_mode は密かに off にしている。

追記(2008-09-22):safe_mode の on/off はドメインを作るときに選択できるみたい。

これを apache に読ませれば O.K.。

# /etc/init.d/httpd reload

ブラウザから確認

ブラウザから http://nekowiki.avel.io/ にアクセス。LaCoocan 時代の wiki が復元できたことを確認した。無論、蓄積したデータはそのまま残っている。

さらにその先

現在、avel.io ドメインのゾーン情報は ドメイン取得&レンタルサーバー VALUE-DOMAIN(バリュードメイン) のものを利用させてらっている。WEB の GUI インタフェースで簡単に DNS レコードを追加できるので便利だ。ひとまず nekowiki.avel.io などについてはサイトごとに A レコードを登録する方針にしている。現状でまったく不便を感じていないが、できるだけ Plesk で完結するようにするには、avel.io ドメインのマスタサーバを value domain から avel.io に移動する必要がある。

先にポリシーのところで書いたが、Plesk の外側にて手作業で行った手順も Plesk をハックして完全に PleskGUI 機能で行えるようにできるといいかもしれない。さらに WordPress だの MovableType だのも Plesk のメニューに追加して、クライアントが勝手に気軽にコミュニケーションサイトを作れるようにしていってもいいだろう。

まだ概念をつかみきれておらず、とりあえずできちゃいました状態の Plesk の世界(websrvmng って何者? psa って何?)を理解していく必要がありそうだ。