MovableType 3.2-ja-2へのアップグレード

 MovableTypeをMovable Type 3.2-ja-2にしました。アップグレードに見事に失敗して新しく設置し直し全てのデータをインポートして復旧です。かなり疲れました。
 そのため各エントリーへのパーマリンクはリンクが切れてしまっています。必要な所は気が付いたら直しますがたぶん修正しません。時間が無いし面倒だからです・笑
3.1から3.2へのアップグレードはMTのシステムにも大きな変更があったりしてググって見てもアップグレードに失敗してる例が多かったので僕はずっと3.1で使い続ける事に決めていたのですがふたつの理由で危険を承知の上でアップグレードに挑戦してみました。
それはMT3.2から設置できるブログの数が無制限になったことです。僕はすでに3つのブログをもっています。このブログと今年、家をカミさんと制作したその記録ブログ、そして彫刻作品のネット上での美術館(制作中)。もっと作りたかったけど3つまでという規約があって諦めていたのです。もうひとつは友人が自分で設置してブログ始めたいというので同じバージョンでアドバイスしてあげられるように、という理由でした。
 結局、アップグレードには失敗して新規に設置したのでコツコツ長い時間かけて作って来たテンプレートデザインを作り直したり大変だったけど結論から言うと3.2にして良かった。特にスパムコメントとスパムトラックバックを自分でプラグインを苦労して導入しなくても見事にはじいてくれる、これはありがたい。
 3.2にしてみようと思う方のために僕の失敗例をメモしておきます。僕を踏み台にして幸せなアップグレード、インストールができますようにお祈りしていますよ・笑


 これからのエントリーは僕の場合の記録です。一般的にそのまま当てはまるかどうかはわかりません。ちなみにサーバーはロリポップ、 Movable Typeのバージョンは”3.121-ja”から”3.2-ja-2″へのアップグレード(に失敗して)、新規インストールです。
 
 今回から新規インストールもアップグレードもパッケージがひとつになったのでダウンロード。自分のブログの必要なファイルをダウンロードしてバックアップ。FTPでバックアップするだけでなくテンプレートをテキストエディタにコピーして保存、「エントリーの読み出し/書き出し」機能を使ってデータを書き出しておく。(これは大事。このファイル1枚によってなんとか旧データを新しいブログに移行できました)
 準備ができたらmt-config.cgi-original の設定を自分用に書き換えてmt-config.cgiにリネームしてMTのパッケージを全てアップロード。ブラウザでmtディレクトリにアクセスするとアップグレード完了、のはずが以下のようなエラーメッセージ。
Got an error: Can’t locate object method “new” via package “MT::L10N::ja” at /home/sites/lolipop.jp/users/lolipop.jp-dp○×○×○×○×/web/cgi/mt/extlib/Locale/Maketext.pm line 322.
/lib/MT/L10N/ja.pm を/exlib/MT/L10N/に入れると直るというレポートがあったので試してみるが効果無し。結局動かなくなってしまいました。
 気を取り直して新規インストールして「書き出し」たデータを「読み込む」決心をして最新のMTを全てアップロード。ロリポップで動くのはわかっているのだけどサーバーのチェックを一応しておく。mt-check.cgiにブラウザでアクセス。

一番下に準備完了のメッセージ。
 そこでmt.cgiにブラウザでアクセス。データーベースの初期化。

 ところがこれにも失敗。万事窮す?

 ブラウザにキャッシュが残っているのが問題なのだそうです。キャッシュをクリアすればOK。データーベースの初期化に失敗している訳ではないのでこのまま最初のログインをします。この時もキャッシュが残っているとログインできなくなります。キャッシュをクリアしてMelodyでログイン。

(僕は I Love MacなんだけどCGIの設置作業だけはいまだにWindowsです。これだけはWinの方がやりやすくエラーが出にくい気がするからです)
 システム・メニューから投稿者を自分にして以前と同じ名前のブログを再設置。必要な設定を終えたら以前のブログから書き出したデータを読み込む事にする。以前のブログから書き出したデータはテキストデータになっているはずです。エディタで開いて自分のブログの文字コードになっているか確認します。僕の場合はUTF-8で運用しているので書き出したデータを確認の意味を込めてUTF-8で保存し直します。そうしたらmt.cgiのあるディレクトリに”import”という名前のフォルダを作成してそこにデータをアップロードします。ブログのメニューから「読み込み/書き込み」を選びます。エントリーの投稿者を自分にするにチェックを入れあとはそのままです。そのままにしておけば元のカテゴリーを再現してくれますし投稿の状態も以前のままにしてくれます。なのでカテゴリーを事前に作り直しておく必要はありません。また内緒話を未公開(下書き)で書いてあった人は間違っても投稿の状態を選ぶオプションで「公開」を選んだりしないように。全てが白日の下にさらけ出されてしまいます。
 準備できたら下の「読み込み書き出し」ボタンをクリックします。

 すると「読み込み中」というメッセージとともにデータが読み込まれていきます。ここでまた問題発生。データを最後まで読み込んでくれないのです。(僕の場合エントリーの数が800近いデータの量が大きすぎる事も原因だと思いますが)

 この床屋のような画像が出たままになってしまっていたら読み込みが失敗しています。

 画面を下までスクロールして確認してみましょう。データーベースに保存されれば「ok」と表示されるのですが一番下のエントリーは「ok」が表示されていませんね。しかもこれが最後のエントリーではないのです。途中で止まってしまったわけです。

 これはものすごくローテクな方法で問題を回避しました。つまり”import”フォルダにアップした以前のブログから「書き出し」たテキストデータを再度エディタで開き、保存されなかったエントリーのタイトルを検索します。そして保存されたデータの部分を削除して再度”import”フォルダにアップロードし直して読み込ませるのです。しかもこの方法で読み込めるデータ量がどんどん減っていってえんえん30回近く繰り返してようやく全てのデータを読み込んでくれました。(写真はFFFTPを使って作業しているところ。このソフトを使う度にソフトの優秀さと無償で使わせてくれる作者の方に頭が下がります)
 データの削除は自分の書き込みだから見ればわかると思いますが、AUTHORからKEYWORDS:の下の2行の—–、——–線までがひとつのエントリーです。

 最後までデータを読み込めたらこのようなメッセージがでます。このメッセージの通りに”import”フォルダのファイルを削除します。間違って削除しないでもう一度「読み込み/書き出し」ボタンをクリックしてしまうと同じデータを二重に読み込んでしまいます。(何度でも読み込んでしまいます)

 僕の場合ブログをふたつ持っていてもうひとつのブログのエントリーは900近いのでデータの読み込みだけで相当時間を費やしました。もちろんバックアップデータを何度も書き直して読み込み直してです。それなのに。僕のMT3.2へのアップグレードはまだもうひとつ試練が待っていました。全てのデータを読み込んで喜んで全てを再構築しようとしたらカテゴリーアーカイブの再構築にインターナルサーバーエラーで失敗するのです。しかもエントリーを次のエントリー、次のエントリーで読んでいこうと思ってもリンクが無茶苦茶になっていてたどり着けないページが出来てしまいました。
 データーベースにBarkleyDB を使っていたのだけどいろいろ問題があるようなので、最近ロリポップで標準的につかえるようになったデータベースで扱いの楽そうなSQLiteを使用して全てやり直したところ再構築も問題無くできました。(参考サイト
ああ、疲れた。