MT3.2ja-2 2.661からアップグレードとMySQLへの移行

ふぅ~っ、MTのエクスポートが何とか完了した。まだカテゴリを直したりしたいけど、とりあえずここで一区切り。(~_~;) 忘れないうちに書きとめておこ。

今までMT(ブログ本体)を置いてあるサーバーのiswebベーシックでは、どうしてもリビルド時に500エラーが回避できなかった。このままエントリー数が増えて行くことを考えると Barkley DB しかないiswebベーシックでMTをアップグレードするのは無理がありそうだった。

試しにアップグレード実行の前にiswebベーシックのヘルプ等いろいろ調べてみると、そのサポートBBSで、最新版MT3.2-ja-2が正常にインストールできないと話題になっていた。iswebベーシック事務局に問い合わせた方のレスもあって、事務局の回答は「MTは、ver.2.6xまでしか動作確認しておらず、今後MTのために環境を整えるかどうかはまだ正式に回答できない」というものだった。私もこの件と、リビルド時の500エラーの件で事務局に問い合わせたが、やはり「正式回答が出来ずに心苦しいです」という回答だった。

iswebベーシックは当初infoseekという経営組織だったが、現在では楽天がその経営母体となっており、このinfoseek事務局と楽天サイドとの軋轢も関係しているのか、MTの最新版が出て2ヶ月以上経つのに何の対応もしていない。MTに関しては「私はもう待てない」と見限った。だって毎日ブログを書いてエントリーが増え続けるんだからね。よってMTは、ロリポップに移行することにした。

seedman.com.jpに関しては、アドレスを変更したくない気持ちが相変わらず強いので当分そのままにするが、PhotoBlogというものもあり、ブログのアルバム版でうまく行くならそれも良いかと思っている。ブログで運営するならロリポップに移行するつもりだが、iswebベーシックもせっかくPHPが使えるようになったので、cgi-binでの運用となるがPHPでファイル構成しようかとも思う。seedman.com.jpの写真は毎日たくさん増えるわけではないので、php includeが使えるならデザインの変更もすぐに反映されるし、iswebベーシックでも十分じゃないかと思っている。サーバー三つも持ってどうするって?^_^;

【エクスポートとインポートの大まかな流れ】

  • MT 2.661 のエントリーをエクスポートするため、メインメニューのユーティリティからImport/Exportをクリックする。
  • 生成されたファイルをすべてコピーする。最新版MT3.2ja-2はエンコードがUTF-8と決まっているので、漢字/改行コード指定保存のできるTeraPadなどのテキストエディタにペーストする。
  • TeraPadに貼り付けたら、『ファイル』→『漢字/改行コード指定保存』で、漢字コードをUTF-8Nに、改行コードをLFにして、任意のファイル名をつけ拡張子.txtで保存する。(これを忘れるとインポートしたときに文字化けしちゃうよ)
  • 今回私はサーバーも替えたので、画像の絶対パスが違う。サーバーを替えなくとも新しいブログになってJPGのアドレスが変わる場合がある。そんな時はエクスポート作業で作成したテキストファイルの中で、絶対パスをJPGの新しいアドレスに置換しておく。JPGはそのアドレスになるようにディレクトリを作成してアップロードしておく。
  • 最新版MT3.2ja-2のインストールを完了して、新しいブログを作っておく。その最新版の方のmtディレクトリの中に新しくimportディレクトリを作り、このエクスポートしたファイルをFTPソフトでBinary転送モードで放り込む。FFFTPだと、バイナリとか何だとか気にしなくても自動判別して転送してくれるので便利。
  • 最新版MT3.2ja-2のブログの同じくユーティリティから、読み込み/書き出しをクリックしてインポートを開始する。インポートが終了したらサイトを再構築する。

エクスポートからインポートまでの流れをざっと書いたが、こんな風にすんなり行ったわけではないよ。最初当惑したのはエクスポートで、全てのエントリーが書き出し出来なかったことだ。いったいどうすりゃ良いのかと、MTのサポートに問い合わせた。と言うか、さ、このエクスポートは以前から何回もやってみて、エントリーが全て書き出されていないことから、このエクスポートに関してサポートを受けたくて有償の個人ライセンスを購入したのね。

メールサポートからは数日してから返信があった。エクスポートファイルに全てのエントリーが書き出されていないと言うことに関して、対処法は一切回答してなかった。上記に書いた『漢字コードUTF-8N、改行コードLFの事、マニュアルはこちら』という具合。私の問い合わせも要領を得ていなかったと反省。仕方ないのでロリポップのマニュアルなどを一生懸命読み込んだ。それに平行して検索もしてみる。

また、最新版MT3.2ja-2をライセンス購入した時点からロリポップで稼動させようと思っていたので、独自ドメインをムームードメインで申し込み、続いてロリポップサーバーを申し込んだ。独自ドメインが浸透するのに24-48時間かかるとか。初めて知ったよ~ん。^_^;

最新版MT3.2ja-2をサーバーにアップロードして早速テストしてみる。「テスト」、な~んて短い文章書いてエントリを作ったってさ、すぐにリビルドOKよ。次に念のため、画像を入れてエントリを作ってみる。あらーんっ?、即、500エラーじゃん。(ーー;) これは困ったね。iswebベーシックでもロリポップでもそう来るかぁ~。そこでこの事に関してもいろいろ検索したよ。するとデータベースというものがあって、iswebベーシックはBarkley DBというものしか無かったけど、ロリポップではMySQLというデータベースもあって、それに移行するとMTは安心稼動らしいのね。この辺、とうしろのおばさんには何がなんだかまったく分かりませんが、SQLiteよりMySQLの方が良いらしいし、その移行手順もロリポップのマニュアルにあったから分からないままにもやってみた。

しかしここでも、またすんなりとは行かず。。。ロリポップのMySQL移行マニュアルはMT3.1用だったのね。だからやっぱり途中で止まってしまったよ~。でも、ダメで元々、と行く着くところまでやってみた。MT3.1とMT3.2ja-2が違っていたところは2箇所ある。

まずは、【[2] ダウンロードした 『 mt.cfg 』 をエディタで開き、27行目の 『 DataSource ./db 』 の文頭に 『 # 』 をつけコメントアウトします】と言う部分だが、MT3.2ja-2では mt-config.cgi のことであり、27行目じゃないので検索で DataSource を探す。するとDataSource以下のdbフォルダへのパスは、設置のときに既に自分のアカウント情報にあるフルパスに変更してある。これの先頭に#をつけてコメントアウトし、以下の4行を追加する。

ObjectDriver DBI::mysql
Database データベース名
DBUser ユーザー名
DBHost mysql**.lolipop.jp

■データベース名 … 作成したデータベースの 『 データベース名 』
■ユーザー名 … 作成したデータベースの 『 ユーザー名 』 』
■mysql**.lolipop.jp … 作成したデータベースの 『 サーバー 』
これらはマニュアルにある通り。

もう一つはmt-db-pass.cgi が無いこと。しかたないのでメモ帳で作った。このファイルにはパスワードを1行だけ入れればいいの。そのパスワードとは、データベース作成時に設定したデータベースのパスワードだ。

mt-config.cgi と mt-db-pass.cgi をアップロードし、 mt-db-pass.cgi のパーミッションはマニュアルの通り『700』にしておく。 ブラウザでmt.cgi では無く mt-db2sql.cgi を指定してアクセスする。すると以下のように出て成功した。**** WARNING:がいくつか出ているが、検索したらこういうこともあるとか。最終行にうまく行ったと出ているので大丈夫だそうだ。

Loading database schema…
**** WARNING: Subroutine Jcode::
**** WARNING: Subroutine Jcode::
**** WARNING: Subroutine Jcode::
**** WARNING: Subroutine Jcode::
**** WARNING: Subroutine Jcode::
**** WARNING: Subroutine Jcode::
Loading data…
MT::Author
**** WARNING: Use of uninitialized
**** WARNING: Use of uninitialized
**** WARNING: Use of uninitialized
MT::Blog
MT::Category
MT::Comment
MT::Entry
MT::IPBanList
MT::Log
MT::Notification
MT::Permission
MT::Placement
MT::Template
MT::TemplateMap
MT::Trackback
MT::TBPing
MT::Session
MT::PluginData
MT::Config
MT::FileInfo
Done copying data from Berkeley DB to your SQL database! All went well.

実際、データベース作成後、途中経過ではMTにログインできなかったが、この mt-db2sql.cgi がうまく行ったらログインできた。新たにログイン画面が出ると言うことは、初期化されてしまったのか? 良く分からないけど今までの Barkley DB にあったものは見えなくなってしまった。でもFTPでサーバーサイドを見るとエントリーはちゃんと残っていた。念のため、データベース作成前には必ずバックアップを。そしてこのMySQLに移行してからは500エラーは出ないどころか、何百ものエントリをインポートする際にも、一度もエラーは出なかった。MTの方は早くMySQLに移行したほうが良いですぞ。

続いてインポート手順を自分のために書いておくわ。この歳になると、覚えているようでもすぐに忘れちゃうのでね。^_^; importディレクトリを作って、その中にエクスポートのファイルを入れたら、後はMTのユーティリティから読み込み/書き出しをクリックするだけ。でもこれもいっぺんでは終わらなかった。私のエントリー数は700ほどあるので、全てを一度に読み込むことは出来なかった。詳しくはこちらに書きました。

具体的手順は、ユーティリティの読み込み/書き出しをクリックし、エントリーの投稿者を自分にするにチェックを入れ、読み込み/書き出しボタンを押下すると、数秒から数十秒でブラウザ下のスタータスバーに出るプログレッシブメーターが完了し、ページが表示されましたと出る。これが読み込み終了の目安だ。最初は画面で「読み込み中」と出ているし、上部にある「水色と青の床屋のようなぐるぐる」が動いているので終了していないのかと思ったが、スクロールして最下行まで確認すると、最後のエントリにだけはOKが付いていない。

エントリー「○○○○○」を保存します。OK (ID ***)

インポートが完了したエントリには上記のように必ずOKが付いているので、これで確認できる。最後のOKが付いていない=インポートされなかったエントリタイトルをコピーしておき、最初に作ったエクスポートファイルで検索する。見つけたら、このエントリより上に書かれているエントリを全て削除し、上書き保存し、再びimportディレクトリに同名で上書きアップロードする。そして再度読み込み/書き出しをクリックしてインポートを繰り返す。一度にインポートができるエントリー数はその都度違って、50-60から100-150と一定していない。今回はこの手順を7~8回繰り返した。

インポートがこのようにして出来るということは、エクスポートも同じように出来るだろうと、途中で終わってしまっていたエクスポートについても同様にやってみた。エクスポートファイルに書き出すことが出来たエントリまではインポートを先に済ませ、MT3.2ja-2にインポートできたことを確認しておく。その後旧バージョンの2.661の『エントリの編集』から書き出しの済んだエントリーを削除し、リビルドしておく。このリビルドはインディビデュアルアーカイブが完了していれば十分。iswebベーシックではマンスリー、カテゴリアーカイブまで行くのはとうてい無理だもんね。インディビデュアルエントリーが新しい方のMTにインポートされれば、それからカテゴリーやマンスリーアーカイブが作成されるので大丈夫。

リビルドの後、ユーティリティからImport/Exportをクリックすれば、続きからエクスポートファイルが作成できる。エクスポートは古いエントリーから順番に作成されるので、最初のエクスポート完了分を削除すれば、再びエクスポートする時はそのブログにある一番古いエントリーから作成される。分かりやすくて良いわ。

さて、ここまで行ったら後はテンプレートのカスタマイズだが、まだ最新版の3.2-ja-2に対応するものは少ないようだ。Dr.Blog研究室さんやHINAGATAさんに期待している。HINAGATAさんのはややこしいのでちょっと迷っているのね。あー、それからプラグインだ。年の瀬だと言うのに、あれやこれやとやることがいっぱい。