そんな訳で、ブログの更新をさぼっていたわけですが・・・システムも更新していませんでした。
今年の正月休みは諸事情で実家巡りしない事になったので、家族サービスしながらマッタリ去年一年放置していた色々をメンテしてます。
MovableTypeのセキュリティ アップデート 5.04
ログインしてダッシュボードを見ると、更新版が出てました。

「MTニュース」に重要なセキュリティアップデート:
2010.12.08 [重要] セキュリティアップデート Movable Type 5.04 および 4.28の提供を開始
12月8日付ですから約1ヶ月経っています。
現在のバージョンは、ダッシュボードの下の方を見て確認すると、5.02(2010年5月版)。
5.03のニュースリリースは見た気がするが、スキップしてしまったみたいです。
(調べると、5.03は不具合があったようで、治るまで待つ事にした覚えがあるような)
5.04に関する不具合の情報は見当たりません。
(以前は出たその日に入れていたのですが、慎重になってしまいました)
さっそく更新することにします。
更新方法は、Six Apartのサイトの記事:「Movable Type 5.0 から 5.0x へのアップグレード - Movable Type 5 ドキュメント」に書かれています。
「上書き」と「新ディレクトリ」の2つの方法が提供されてます。
それぞれのデメリットは、つぎのような感じです。
- 「上書き」・・・失敗すると戻すのが面倒
- 「新ディレクトリ」・・・手順が面倒(ミスる時がある)
MovableType 更新作業
このサイトの場合は、MT用のディレクトリ構成を次のようにしてます。
(画像にある”mt-config.cgi”はバックアップ用で、このディレクトリ自体は公開しません)
/foo/bar/

apache2の設定で、documents/xxx を公開して、MT用に2つのAliasを設定してます。
ScriptAlias /cgi-bin/ /foo/bar/current/
Alias /mt-static/ /foo/bar/mt-static/
要するにMTの使いたいバージョンをシンボリックリンクで切り替えています。
更新切り替えを一瞬で行うのと、失敗時にすぐ戻せるようにするためです。
更新時は次の手順
- MySQLをバックアップ
$ mysqldump -a --user=mtuser --password=mtpasswd mt > MT-5.02-ja-BACKUP.mysql
- 新しいバージョン名でコピー
「更新前のバージョン」のディレクトリを「新しいバージョン名」にコピーします。
(これは、プラグイン等を引き継がせるためです)
$ cp -r MT-5.02-ja MT-5.04-ja
- ダウンロードしたMTを解凍
MTを解凍すると「新しいーバージョン名」が合っていれば上書き確認が出ます。(出ない場合は、はずれ)
全部上書きして解凍を完了します。
$ unzip MT-5.04-ja.zip
- mt-staticのユーザを確認
新しいバージョンの”mt-static”ディレクトリ以下の所有者等を必要に応じてchown等で切り替えます。
- リンクの切り替え
ここまでうまくいったら、シンボリックリンクを削除して作り直します。
(これをやらなければ、ずっと更新前バージョンのまま正常動作し続けます)
$ rm current; ln -s MT-5.04-ja current
- DBを更新
mt.cgi にログインして更新処理を実行します。
上手く行けば完了
失敗した場合比較的簡単に直せます。
- Apache2を停止(被害を広げないため)
- リンク(currnet)を元のバージョンに切り替え
- MySQLをバックアップから復元
- Apache2を起動
- 場合よってはログインにして再構築
残してある古いバージョンのMTは、適当な時期に消す。
これで更新は完了です。
一応今回も上手くいきました。