こっそりと修正。色々と。

投稿日:

今までこのBlogではPostgreSQLを使っていたんですが、のっぴきならない事情でMySQLを使わなくては(サーバーにインストールしなくては)いけない事態になってしまったため「じゃぁついでだからBlogのDBもMySQLに移行するか」と思い、さくっと移行してしまいました。
で、ついでに
(1) 文字コードをEUC-JPからUTF-8に変更
これは今まで送ったトラックバックが文字化けしたりという問題もあったので、かねてよりやらなければな、と思っていたもの。まぁこれを機に直すのは妥当でしょう
(2) 管理ツールも日本語にした方がいいかな、と思ってしまったので3.121日本語版に入れ替え。どっちかというとどうでもいい(笑) 修正
という、結構大規模な改修作業をしてしまいました。

忘れないように作業内容のメモを、と。

まずはデータをいじるので、全内容を管理ツールからエクスポートしておく。これはメニューのエクスポートから「Export Entries」を選択すればOKでした。Firefoxに表示された内容を全選択、コピーしてテキストに貼り付けて、文字コードをUTF-8で保存すればいいだけ。一応、このタイミングでエントリーが格納されているテーブルのバックアップも取っておく。

それからMovable type公式サイトで3.121日本語版をDL。無事に移行が完了するまでは旧管理画面も使えた方が安心なので、今の管理ツールを上書きしないように別の名前でインストールし、MySQLの設定と文字コードをUTF-8にする設定をmt.cgiに記述する。

38行目付近

ObjectDriver DBI::mysql
Database mt
DBUser *****
DBHost localhost

226行目付近

PublishCharset utf-8

設定し終えたら、mt-load.cgiを実行してMySQL上にテーブルを作成する。これも普通のインストール手順と全く一緒。それから新しい管理ツールにログインして旧システムと同じユーザー、同じ設定で新しいBlogを一個作成する。この作業はfirefoxのタブで旧管理画面と新管理画面の二つを開いて、古い方の設定をもう片方にコピー、っていう手順が一番楽でした。最初は設定が書いてあるテーブルの内容をMySQLにインサートしようかと思いましたが、それだときっと倍くらい時間がかかったはず。。

これでインポートの準備が整ったので、新管理画面の「読み込み/書き出し」から「エントリーの読み込み」を実行。読み込ませるファイルはcgiを置いている場所にimportというディレクトリを作成し、中に.htmという拡張子を付けて格納しておくとそのファイルの内容が読み込まれる。
このとき、カテゴリについては特に意識する必要ナシ。というのもエクスポートしたデータに含まれているカテゴリが設定されていないと、自動的に新しいカテゴリを作成してくれるので。
ただしカテゴリの階層構造までは再現してくれないので、後で管理画面から変更する必要がある。カテゴリの数が多いと手作業でやるのは面倒臭いかも。良かった、早いうちにやっておいて。。

エントリーのインポートが終わったら再構築をすれば完了なんですが、さすがに旧Blogをいきなり全部書き換えるのは抵抗アリまくりなので、ローカルサイトパスとかアーカイブパスとかの名前が重複しないように設定を変更。このBlogのURLはsomethingnew.ddo.jp/blog/なので、暫定的に/blog2/という名前でサイトを設定→再構築。完了後に/blog2/にアクセスするとデフォルトテンプレートのままですが、エントリーやコメントは全部復元できていました。めでたしめでたし。

後は元のサイトと見栄えが同じくなるよう、テンプレートの設定を旧管理画面からコピー。これもDBからレコードを持っていくよりも、管理画面を二つ開いてコピペした方が早いです。たいした数じゃぁないし。

で、もう一度再構築して表示を確認。この時点でBlogPeopleの文字コード設定がEUC-JPのままだったことに気付いたのでこれも変更。一通りチェックしてみて問題なさそうなので、念の為以前のローカルサイトパスを全部バックアップした上で、新管理画面の「設定」からローカルサイトパスとアーカイブパスを現在のパスに変更。で、再構築。

最後に、管理画面のURIも元のままが望ましいので(ブックマークしているし)mt.cfgのCGIPathを元のURIに変更。それからcgi-bin以下でシンボリックリンクを張り替えて、元のURIで新管理画面にアクセスできるように修正。ようやく一通りの作業がこれで完了。特に難しくもなんともないけど、結構面倒な手順が多かったです。いっそのことテンプレートとかも一新しちゃった方が楽で、かつ「色々手を加えたぞ!」っていう自己満足度がアップしてよかったかもしれません(w