LaCoocan から Plesk なファーストサーバに Pukiwiki 群をお引越しさせる修行
以前 LaCoocan に作った wiki 群を、新たにプロビジネス20コースで契約したファーストサーバ上にお引越し。
- LaCoocan に WikiFarm を作る修行 - 昨日知ったこと
- @niftyホームページサービス - ホームページ作成なら@niftyホームページサービスで!
- http://www.fs-virtual.jp/
Plesk な環境に、一つの wiki エンジンを用いた複数の wiki サイトを稼動させるのがポイントか。ほとんどの部分は Plesk に関係なく適用できるはず。
ポリシー
- wiki エンジンは非公開領域 (ENGINE_DIR) に一つだけ置く
- バーチャルホストを使って複数の wiki サイトを作る。
- 共通の静的ファイルは一箇所にまとめる。
- できれば http://static.avel.io/ みたいな独自ドメインに
- HTTP レベルのキャッシュが効くかも
- lightwight な HTTP サーバが使えていいかも
- どっちにしろ大したことないので、ファイルの実体が一つならよい
- できれば http://static.avel.io/ みたいな独自ドメインに
- サイトごとのデータは、サイトごとの非公開領域に置く
- Plesk が想定しないつくりにしない
かな。
エンジン置き場 (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 だけにして、静的ファイル群は別のところに置きたかったのだが諸事情がありここに居候。って、もうわかる人にはこのあとどうなるかわかっただろう。
個別のサイトの構築
前準備あれこれ
非公開領域のデータディレクトリ (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 をハックして完全に Plesk の GUI 機能で行えるようにできるといいかもしれない。さらに WordPress だの MovableType だのも Plesk のメニューに追加して、クライアントが勝手に気軽にコミュニケーションサイトを作れるようにしていってもいいだろう。
まだ概念をつかみきれておらず、とりあえずできちゃいました状態の Plesk の世界(websrvmng って何者? psa って何?)を理解していく必要がありそうだ。