4から5へ、4から5へ

以前、SSK Worldのシステムに関してちょっと手を入れていた話をしたんですが、この1週間で作業を進め、ようやく一段落しました。今週は、画面レイアウトが崩れていたり、サーバーエラーで真っ白な画面に文字が表示されるだけだったりする状況をご覧になった方もかなりいらっしゃったのではないかと思います。企業サイトのように万全のバックアップ、インフォメーションを準備した上での作業をしたわけではありませんでしたが、どうかご容赦ください。まあ、単なる個人の趣味サイトですから、そこまでしなくてはならないほどの重要性もありませんし。

おそらく、一番目を引くのは、これまでの黒基調の色使いとは正反対のデザインだと思うんですが、これは作業の中ではほんのオマケ。スタイルシート以外はほとんどいじっていません。携帯電話向けの「SSK World mobile」では、古い端末にも対応するために、直接各テンプレートのHTMLタグを書き換えなくてはなりませんが、これも基本的には検索・置換で一発です。今回は、もっとややこしい、基幹的な部分に手を入れています。


今回の作業で最大のポイントは、サイト管理に使っているシステムであるMovable Typeのバージョンが上がったこと。既に昨年11月に登場していたMovable Type 5なんですが、ウェブサイトに複数のブログがぶら下がる…という形に大幅に変更されたサイト管理構造、各種プラグインの対応などを考慮して、無理にバージョンアップする必要性はないかな?と判断し、バージョン4.261のままでちょっと様子見をしていました。

この状況が少し変わったのは3月でした。現在、Webサーバーを借りているさくらインターネットで、Web上のサーバーコントロールパネルから、簡単な操作でMovable TypeなどのWebアプリケーションシステムをインストールできる…という「クイックインストール」が始まったんです。既に自力でMovable Typeをインストールしている私ですが、クイックインストールを利用すれば、セキュリティアップデートなどの保守管理が容易になるメリットがあります。アップグレードの作業も、FTPソフトを立ち上げて手動で行うのはかなり面倒ですからね。

このサービスは是非使わせてもらおう!と思ったわけですが、クイックインストールで提供されるMovable Typeのバージョンは、現在のところオープンソース版の5.02。まさか旧バージョンのサポートが今後追加されることもあり得ないでしょうし、この機能を利用するためにはバージョンアップせざるを得ない…ということになります。私もようやく重い腰を上げました。


Movable Typeをバージョンアップする上で、一つ問題になったのがデータベースのバージョン。Movable Typeは、バージョンを5に移行するときに対応データベースを大きく見直しました。バージョン4世代までは、MySQL4.0以降の他、PostgreSQLやSQLiteへの対応が行われていましたが、5ではMySQL5.0以降のみの対応となりました。

私は、Movable Type 4をさくらインターネットが提供するMySQL4.1で運用していましたが、Movable Type 5を使うためには、まずデータベースのアップグレードが必要になります。しかし、さくらインターネットではMySQL4.1で作成したデータベースを5.0に直接アップグレードして運用する手段が用意されていません。MySQL4.1でバックアップを作成してからデータベース自体を削除し、新たにMySQL5.0のデータベースを作成してバックアップデータをインポートする…という手順を踏むことになります。1ユーザーが作成できるデータベースは一つだけに制限されていますから、旧バージョンのデータベースを保持するわけにも行かず、アップグレードに失敗した上にリストアに失敗すれば一巻の終わり。なかなかのプレッシャーがかかる作業です。

それでも、クイックインストールの使えるメリットの他、あの忌まわしきデータベース破損が起こったサーバーからおさらばできることも考えれば、作業に挑む価値は十分にあります。まずはデータベースのアップグレードに挑みました。一般的なデータベースのアップグレードの問題とは別に、個別の環境ならではの問題もあって、作業はなかなかスムーズに進みませんでしたが、何とかMySQL5.0への移行を完了することができました。手順をまとめておきましょう。

1. MySQL4.1でデータのバックアップの作成

phpMyAdminにUTF-8形式でログインさくらインターネットでのMySQLへのアクセスには、WWW上での操作が可能になるphpMyAdminを使います。ブラウザ上での対話的操作で、データベース全体のバックアップも普通に取ることができますが、このときに注意しなくてはならないのが、ログインするときに日本語文字コードをUTF-8(Unicode)に設定すること。MySQLも、phpMyAdminも、何も指定しなければデータベースの日本語文字コードはEUCを使うんですが、Movable Typeは内部処理でUTF-8を使い、データベースにもUTF-8で書き込みを行います。そのままデータをエクスポートすると、コメントはEUC、内部データはUTF-8…というちぐはぐなバックアップデータになり、どう頑張ってもリストアができなくなります。

普通にSQL形式でエクスポートUTF-8でログインしてさえおけば、あとは普通にSQL形式でエクスポートしてローカルにファイルを保存すれば作業終了。全体がUTF-8形式で統一されたファイルが出来上がります。SSK Worldの場合、出力されるsqlファイルは約12MBの巨大なデータになりました。通信帯域の狭い方は、作業にそれなりの配慮が必要です。また、デザインテンプレートなども含めたすべての構造がバックアップされますが、音声や画像などのデータファイル自体はバックアップされるわけではありませんのでご注意を。

2. MySQL4.1データベースの削除、MySQL5.0データベースの作成

この作業はさくらインターネットのサーバーコントロールパネルで行います。先に説明しているとおり、既存のMySQL4.1データベースを削除し、MySQL5.0データベースを新規に作成します。新しく割り当てられるデータベースサーバー名とユーザー名、パスワードを控えておきましょう。

3. MySQL5.0へのデータのリストア

MySQL接続の照合順序は「utf8_general_ci」サーバーコントロールパネルからMySQL5.0用のphpMyAdminを開きます。このときに重要なのは、ログイン直後の画面で「MySQL接続の照合順序」を「utf8_general_ci」としておくこと。こうしておかないと、このあとのデータのインポートや今後の新規投稿などで、一部の文字(「~」など)が文字化けしてしまうことになります。

あとは、普通にバックアップしてあったデータをインポートすれば、バージョンアップ作業は終了。MySQL5.0データベース上でMovable Type 4を使えるようになります。


次は、Movable Typeのシステムの方をバージョンアップします。とはいえ、こちらはそれほどややこしい作業ではありません。現在Movable Type 4がインストールされているディレクトリの名前を変更するなどして環境を保存しておき、クイックインストール機能でMovable Type 5をセットアップすれば作業完了。あとは、自分でプラグインなどをインストールすることもできます。

私がちょっと手こずってしまった理由は、私の環境独特の事情でした。SSK Worldでは、ほとんどのページでPHPのスクリプトを使っていますが、さくらインターネットではPHPをPerlなどと同様のCGIプログラムとして実行する仕様になっているので、PHPを書き込んだファイルやそれが格納されるディレクトリにも「755」「705」などの実行が可能な属性を設定しなくてはなりません。

Movable Typeでこの属性を設定するためには、設定ファイルの「mt-config.cgi」に

HTMLUmask 0022
UploadUmask 0022
DirUmask 0022

という記述を追加する必要があるんですが、私はこれをすっかり忘れていて、バージョンアップ後にファイルを再構築してみたら、「500 内部サーバーエラー」の真っ白なページのオンパレードに。しばらく理由がわからず頭をひねる羽目になりました。

もうひとつつまずいたのが、バージョンアップ後にアクセスカウンターが警告メッセージを出力するようになってしまったこと。カウンター表示の自由度を確保するために、アクセスカウンターのプログラム自体の内部では計算や判定を行うのみで、一切表示は行わない仕様にしてあるんですが、警告メッセージが予期せず出力されるせいで、全体のレイアウトが崩れてしまいます。

これについては、プログラム構造を改めてチェックしてみたところ、同じ変数を無理に使い回しして、間違った値が代入されていることが原因と判明。早速修正しておきました。しかし、それならなぜ今まで全くメッセージが出てこなかったのか不思議です。プログラム修正後もアクセスカウンターの増加ペースはあまり変化がないので、今までの動作がおかしかったわけでもなさそうなんですが…。


とりあえず大がかりなバージョンアップ作業はひと区切り。しかし、メールフォームからのメール送信や、自己紹介ページなどの一部で、まだデザインの修正が終わっていません。これについては、追々進めていこうかと思っています。

デザインの変更については、ずいぶん長い間基本的なコンセプトを変えていなかったこともあり、実は私自身にもまだ違和感が残っています(笑)。まあ、これは時間が解決してくれるでしょう。Weekly SSKが600号を超えたからとか、書き始めてから11年が過ぎたからとかいうわけでもないんですが、この期に及んで明るく爽やかにイメージチェンジしようとしている(?)SSK Worldを、今後ともごひいき願います。

コメントを残す