PHP に脆弱性が発見されたので,PHP を利用する PukiWiki をアップグレードする必要が出てきた。現在の最新版 PukiWiki 1.4.6 をインストールし,データを移行する。
■ ■ ■
PHP 5.0.5 以下に脆弱性が発見された(yohgaki's blog - PHPの現行リリースに重大な脆弱性(PHP4.4.0以下、PHP5.0.5以下))。そのため,先日 (nlog(n): 特定のパッケージだけを apt-get でアップグレード) のように,「PukiWiki が動かなくなるから PHP は 5.0.3 のままでいいや」という訳にはいかなくなってしまった。しかし,PukiWiki 1.4.5_1 は PHP 5.0.5 では動作しない (nlog(n): PukiWiki 1.4.5_1 が PHP 5.0.5 で 致命的エラー)。PukiWiki の最新版 1.4.6 は PHP 5.0.5 で動作する。PHP 5.0.5 のフィックスでも恐らく問題ない。そこで,PukiWiki 1.4.5_1 を PukiWiki 1.4.6 にアップグレードすることにした。
PukiWiki/インストール/1.4系列-1.4.4以降 - PukiWiki-official を読むと,CVS による便利な移行方法があるようなのだが,よく分からない。仕方ないので,手動で「ダー!」とやることにした(「ダー」は単に気合を表わしている)。
環境は Vine Linux 3.2,Apache 1.3.33 である。PukiWiki に関しては,パッケージを展開したディレクトリに wiki というシンボリックリンクを張ってあり,PukiWiki にはこの wiki というディレクトリ名でアクセスするようにしている。こうしておけば,シンボリックリンクを張りなおすだけで移行ができる。
移行の概要は次の通り。
- 最新版である PukiWiki 1.4.6 をダウンロードして展開
- 現在の PukiWiki 1.4.5_1 のデータを 1.4.6 にコピー
- wiki のシンボリックリンクを pukiwiki-1.4.5_1 から pukiwiki-1.4.6 に張り替え
実際の作業は次のようになった。
- PukiWiki のインストールしてあるディレクトリの親ディレクトリに移動する
- ディレクトリ内容を確認する (pukiwiki-1.4.5_1 という実体に wiki というシンボリックリンクが張ってある)
# ls -la
drwxr-xr-x 13 apache apache 4096 Sep 7 11:00 pukiwiki-1.4.5_1
lrwxrwxrwx 1 apache apache 17 Aug 23 16:33 wiki -> pukiwiki-1.4.5_1
- バックアップを今日の日付をつけてとる
# tar zcf pukiwiki-1.4.5_1.20051105.tar.gz ./pukiwiki-1.4.5_1
- 最寄のサイトから PukiWiki 1.4.6 をダウンロードする (サイトは PukiWiki/Download/1.4.6 - PukiWiki-official から選択できる)
# wget http://osdn.dl.sourceforge.jp/pukiwiki/15430/pukiwiki-1.4.6.tar.gz
- ファイルを展開する
# tar zxf pukiwiki-1.4.6.tar.gz
- オーナーとグループを apache に変更する
# chown -R apache.apache .
- ディレクトリ内容を確認する (バックアップファイルや新しくできたディレクトリが見える)
# ls -la
drwxr-xr-x 13 apache apache 4096 Sep 7 11:00 pukiwiki-1.4.5_1/
-rw-r--r-- 1 apache apache 560235 Nov 5 13:59 pukiwiki-1.4.5_1.20051105.tar.gz
drwxr-xr-x 14 apache apache 4096 Nov 5 14:10 pukiwiki-1.4.6/
-rw-r--r-- 1 apache apache 280671 Nov 5 12:06 pukiwiki-1.4.6.tar.gz
lrwxrwxrwx 1 apache apache 17 Aug 23 16:33 wiki -> pukiwiki-1.4.5_1/
- データを新しい PukiWiki にコピーする (「上書きしますか」と訊かれたら「yes」と入力)
# cp -r pukiwiki-1.4.5_1/attach pukiwiki-1.4.6
# cp -r pukiwiki-1.4.5_1/backup pukiwiki-1.4.6
# cp -r pukiwiki-1.4.5_1/cache pukiwiki-1.4.6
# cp -r pukiwiki-1.4.5_1/diff pukiwiki-1.4.6
# cp -r pukiwiki-1.4.5_1/trackback pukiwiki-1.4.6
# cp -r pukiwiki-1.4.5_1/wiki pukiwiki-1.4.6
- 設定ファイルを自サイト用に書き換える
# vi pukiwiki.ini.php
- その他カスタマイズしたファイルを参考に,新バージョンのファイルを編集する(編集したファイルはオリジナルファイルに .org 拡張子をつけておくと見つけやすい)
# find . -name "*.org" -print
./plugin/attach.inc.php.org
./skin/pukiwiki.skin.php.org
./skin/pukiwiki.css.php.org
./pukiwiki.ini.php.org
- 「wiki」という名前のシンボリックリンクを,古いディレクトリから新しいディレクトリに張り替える
# rm wiki
# ln -s pukiwiki-1.4.6 wiki
# ls -la wiki
lrwxrwxrwx 1 apache apache 14 Nov 5 14:11 wiki -> pukiwiki-1.4.6/
- ベーシック認証を行っている場合は,.htaccess を編集する
# vi wiki/.htaccess
- Web ブラウザでアクセスして PukiWiki の動作を確認する
PukiWiki の移行はこれで完了。PHP を 5.0.3 から 5.0.5 (まだフィックスされていない版) にアップグレードして動作を確認する。
# apt-get update; apt-get upgrade
# /etc/init.d/httpd restart
後は PHP 5.0.5 の脆弱性フィックス版が出たらすぐにアップグレードすればいいだけである。
2005年12月11日追記:
上記の脆弱性がフィックスされた PHP 5.1.1 の Vine Linux 版が出ました。
Posted by n at 2005-11-05 22:20 | Edit | Comments (0) | Trackback(1)