MovableType から WordPress への移行

昔使っていたMovableTyape 時代のblog を、パーマリンクを引き継いだまま WordPress に移行したときの記録。大変だった。

以前の状態

以前のホームページでは、ずっとMovable Type を使っていた。シンプルで、素人がいじっても うまく動いてくれたし、動作もそこそこ軽快で、何の不自由もなく使っていたんだけれど、 スパムに負けた。

スパム対策の充実をうたった、新しいバージョンに乗り換えたら、ファイルが複雑になっていて、 動作が重くて、自分が使うには荷が重すぎた。

庭いじりするのに小さなシャベルを使っていて、それで何の不便も感じていなかったのに、 ある日「バージョンアップしました」なんて、新しいの届いたら、シャベルがユンボになっていたかんじ。

バージョン4.X 以降のMovableTyape は、データベースの構造を変えてしまうから、後悔しようにも、 もう後戻りができなかった。

仕方がないのでWordPress を別の場所にインストールして、今のところ調子がいい。

移行前の構成

  • xrea のサーバーを有料レンタルしている
  • /public_html/ 以下に、「/MT 」、「/blog 」、「/wp 」というディレクトリを作って、 それぞれMovableTyape の本体、MovableTyape のデータ部分、WordPress の本体とデータを入れていた
  • データベースは MySQLxrea のサーバースペースを借りると、5つまでデータベースを作れる。 これまではMovableTyape 用途とWordPress 用途と、2つ作っていた

/MT にはMovableTyape の4.1 が、/wp にはWordPress の2.7 が、それぞれ入っていた。

やりたかったこと

MovableTyape 時代の文章は、それでもコメント欄を閉鎖せざるを得なかったり、過去ログの参照がおかしかったり、 うまく動いていなかった。すべての文章を「静的生成」にすることで、動作はわずかに軽くなったけれど、 「はてなブックマーク」との連携がうまくいかなかったりして、問題が多かった。

WordPress は今のところ快適で、何よりも、スパム対策が充実しているのがありがたい。

昔書いた文章を、URL を変更しないまま、管理ツールを WordPress に移行できたらいいなと思った。

手順

  1. MovableTyape を最新のものにバージョンアップする
  2. MovableTyape のエクスポートプログラムを編集して、旧サイトの内容を、URL ごと書き出す
  3. /blog のディレクトリをリネームして、同じ場所に WordPress をインストールする
  4. WordPress のインポートプログラムを編集して、元サイトのデータをURL ごと引き継ぐ
  5. WordPress の体裁を整える

書き出してしまえば簡単だけれど、問題山積みだった。

MovableTyape のバージョンアップ

小粋空間: Movable Type 4.1x から 4.2 へのアップグレードのやりかたに、そのまま従った。

最初はうまく動かなかった。

ダウンロードしたファイルをローカルに解凍 -> FFFTP でアップロード -> インストール まではうまくいくのだけれど、 「ダッシュボード」にログインしても、そこから何もできない。原因が分からなくて、結局一度、ディレクトリごと削除して、 全く同じ手順を繰り返したら、何事もなかったように動作した。

新しいMovableTyape は、ファイル数が1500 近くあって、アップロードの手順は一切変えていないから、 あるいは最初は、アップロードの途中で、ファイルが壊れたのかもしれない。

エクスポートプログラムの編集

Wordpress への移行顛末記のやりかたを、ほとんどそのまま踏襲した。

MovableTyape のバージョンアップは、この方が使っているバージョンに合わせたかったから。

URL を引き継いだ状態でのWordPress 移行は、たとえばkishi-r.com だとか、wiki@browncat.org のまとめのほうが検索上位にきて、どちらのサイトでも /lib/MT/ImportExport.pm の541 行目を編集するやりかたが記載されているのだけれど、うまくいかない。

MovableTyape 4.2 だと、どうもファイルが変更されているみたいで、指定された541 行の前後には、 書き換えるべき内容が見つからない。

MovableTyape 4.23 で書き換えるべきなのは、493行目以降だった。

似たような記述が510行前後、520行前後にそれぞれ出てくるけれど、 こっちはコメントの書式を指定している行だから、 こちらを書き換えても、URL はエクスポートされない。

ImportExport.pm を書き換えたあと「エクスポート」を行って、「PERMALINK: http://medt00lz.s59.xrea.com/blog/archives/2004/11/post_1.html」 のような文章が入っていれば、URL を含んだ書き出しは、たぶん成功している。

WordPress を入れる

WordPress のインストールは簡単。

  1. データベースを作る。Xrea の59番サーバーなら、ここ から ログインして、データベース -> 「作成」 で新しいのが作れる
  2. /blog のディレクトリと、/MT のディレクトリを、たとえば「/blog_ 」にリネームする。これで見かけ上、旧サイトはURL もろとも消滅したことになる
  3. /blog のディレクトリに、新たにWordPress 2.7 をアップロードして、WordPress 日本語サイトのインストール手順に従う。すぐに終わる

このあと「管理画面の設定」-> 「パーマリンク設定」で、URL構造を「その他」にチェック、 空欄に「 /archives/%year%/%monthnum%/%postname%.html 」と記述する。

Wordpress への移行顛末記の説明には「/archives 」が入っていないんだけれど、このあたりは 元サイトのURL をどう管理していたのか、人によって違うからなのだと思う。うちはこうしないと、URL が移行できなかった。

xrea でこの操作を行おうとすると、「.htaccess を書き込み可能にしてください」 という表示がされて、 操作が途中から進まなくなる。無理矢理終了してblog にアクセスすると、インデックスページは参照できるけれど、 あとはすべてのページが 404 になって、全くアクセスできなくなる。

.htaccess は、WordPress の中には存在しないので、自分で作らないといけない。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

こういう .htaccess ファイルを作って、/blog と/blog/wp-admin にそれぞれアップロードした上で、属性を「666 」に してやると、操作が完了して、アクセス不可能の問題を回避できる。.htaccess は、 たぶんどちらか一方に置けば十分なんだけれど、 片方の状態で動作確認してないから分からない。

WordPress のインポートプログラムを書き換える

Weblogy のサイトで公開されている「mt.php.zip 」を ダウンロード、解凍して、このファイルを WordPressの /wp-admin/import/ にある同名ファイル「mt.php 」と差し替えれば、 作業は終了する。

バージョンが違うからなのか、インポートするたびにエラーメッセージが出るけれど、一応問題なく作業できた。

ここまででようやく、インポートの準備が完了する。

インポート作業

MovableTyape からダウンロードしてきたファイルは、テキストだけなのに7MB あった。

インポートは、WordPressダッシュボード画面上からもできるんだけれど、Xrea だと「アップロードに失敗しました」 というエラーが出て、たいてい失敗する。PHP の動作が少し特殊なのが原因らしくて、回避可能みたいなんだけれど、 試していない。

このやりかた以外に、MovableTypeからエクスポートしたファイルを「mt-export.txt」という 名前で、 /wp-content に FFFTP を使ってアップロードする方法もあって、これだと問題なくデータがアップできるんだけれど、 ファイルサイズが大きすぎると、インポートが途中で止まって、やっぱりエラーが頻発する。

仕方がないので元のテキストファイルをいくつかに区切って、そのつど「mt-export.txt」にリネームして、 少しづつファイルをインポートした。

MovableTyape が書き出したファイルの書式はUTF-8 。たいていのテキストエディタは、 何も指定しないとShift-Jis で保存を行うので、保存形式をUTF-8 に指定するのを忘れて、 そのままアップロードすると、WordPress が文字化けして、びっくりすることになる。

いろんなファイルサイズを試したけれど、xrea だと、一度に2MB までだったら大丈夫みたい。

この段階で、WordPress 純正の体裁で、旧blog のテキストが、URLそのままで再現できる。

見た目の調整

以下の素材をお借りした。

できることできないこと

WordPress になって、サイトの動作はたしかに軽快になって、「はてなブックマーク」との連携なんかが ずいぶん快適になった。

これは本当にありがたかったのだけれど、違うシステム間でURL を引き継いで、旧blog ではやっぱり、 新しい記事が書けなくなった。

MovableTyape のURL をそのまま引き継ぐ代償として、WordPressパーマリンクは、移行後に 書いた新しい記事については、URL が日本語表記になってしまう。実際には、日本語版のWikipedia みたいな、 文字化けしたような、長ったらしいURL になる。

旧記事と新記事とで、パーマリンクを使い分けられればいいのだろうけれど、今のところはまだ、 そのやりかたが分からない。

今のところはここまで。

追記: コメント欄にて「投稿スラッグ」という機能を教えていただいた。これを使うと、今までみたいな短いURL で、 新しい記事を書いても大丈夫そう。ありがとうございました。