Movable Type から WordPress に移行

いつだったか Movable Type を 4.2.3 にアップデートしたところ、ブログの投稿ページが文字化け。 以来、ネタがあっても投稿できず放置していた。 原因がよくわからないし、調べるのが面倒なので、 この際、評判のよさげな WordPress に移行することにした。 PHP ってところが気に入らないが、 Movable Type は先がなさそうだし、ほかにめぼしい選択肢もないし…。

以下、移行手順。 環境は Ubuntu 8.10、 移行元は Movable Type 4.2.3 (movalbetype-opensouce 4.2.3-1)、 移行先は WordPress 2.7.1 (wordpress 2.7.1-2)、 移行対象のデーターは投稿記事の内容だけでなく、 固定リンク (パーマリンク) の URI も移行する。 WordPress は Ubuntu 8.10 の wordpress 2.5.1-8ubuntu1.1 ではなく、 Debian unstable の最新版を利用した。(apt-pin の設定は省略)

Movable Type からデーターのエクスポート

Movable Type のインポート/エクスポートモジュール /usr/share/perl5/MT/ImportExport.pm を書き換え、 エクスポートしたデータに記事の ID と固定リンク先が含まれるようにする。 書き換える場所はサブルーチン export() 内のヒアドキュメント TEXT 内で、 以下はパッチ:

--- ImportExport.pm.dist    2008-11-08 22:50:54.000000000 +0900
+++ ImportExport.pm 2009-03-05 02:32:40.000000000 +0900
@@ -492,6 +492,8 @@ PRIMARY CATEGORY: <$MTEntryCategory$></M
  CATEGORY: <$MTCategoryLabel$></MTEntryCategories>
  DATE: <$MTEntryDate format="%m/%d/%Y %I:%M:%S %p"$><MTEntryIfTagged>
  TAGS: <MTEntryTags include_private="1" glue=","><$MTTagName quote="1"$></MTEntryTags></MTEntryIfTagged>
+ID: <$MTEntryID$>
+PERMALINK: <$MTEntryPermalink$>


BODY: <$MTEntryBody convert_breaks="0"$>

Movable Type から通常の手順でブログデーターをエクスポートする。 ファイル名は export-ブログID-西暦年月日時分秒.txt となる。

必要であれば、 Movable Type のデータベース、 生成したページ、 ブログにアップロードしたファイルを適宜バックアップしておく。

WordPress のインストール

WordPress のバックエンド DB である MySQL サーバーの 管理者パスワードを適当に決める。

# ps -ef |sha1sum
適当なパスワード -

WordPress と MySQL サーバーをインストールする。 MySQL サーバーの管理者 root に割り当てるパスワードを聞かれるので、適宜入力する。

# apt-get install wordpress mysql-server-5.0

MySQL サーバー管理者のユーザー名とパスワードを ~root/.my.cnf ファイルに保存しておく。内容は以下。

[mysql]
user = root
password = 適当なパスワード

WordPress と MySQL データベースを初期化する。 WordPress 付属の setup-mysql スクリプトに MySQL ユーザー名兼データベース名と WordPress サイトのドメイン名を指定する。

# sh /usr/share/doc/wordpress/examples/setup-mysql -n sfo_wordpress www.sfo.jp

WordPress 用の Apache2 の設定は…省略。

Movable Type データーのインポート

WordPress の Movable Type 用インポートモジュール /usr/share/wordpress/wp-admin/import/mt.php を書き換え、 記事の ID と固定リンクをインポートできるようにする。 書き換える場所はクラス MT_Import のメソッド process_posts()while ( $line = $this->fgets($handle) ) ループ内。 以下はパッチ:

--- mt.php.dist 2009-01-24 21:24:16.000000000 +0900
+++ mt.php  2009-03-04 02:51:07.000000000 +0900
@@ -363,6 +363,13 @@ class MTImport {
                            $context = 'comment';
                    } else if ( 'PING:' == $line ) {
                            $context = 'ping';
+           } else if ( 0 === strpos($line, "ID:") ) {
+               $importid = trim( substr($line, strlen("ID:")) );
+               $post->importid = $importid;
+           } else if ( 0 === strpos($line, "PERMALINK:") ) {
+               $permalink = trim( substr($line, strlen("PERMALINK:")) );
+               $postname = basename( $permalink, ".html" );
+               $post->postname = $post_name;
                    } else if ( 0 === strpos($line, "AUTHOR:") ) {
                            $author = trim( substr($line, strlen("AUTHOR:")) );
                            if ( '' == $context )

WordPress の Web ページにアクセスして、インストール作業後、 管理画面の [設定] – [パーマリンク設定] で、URL 構造を「その他」にチェックし、 「/archives/%year%/%monthnum%/%postname%.html」に設定する。

これで準備 OK! あとはインポートするだけ! …ならいいんだけど、微調整が必要なところもいくつかある。省略。 (アップロードしたファイルの移行など)

リンク

以下、参考にしたページ。

add to hatena hatena.comment (2) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 2

1個のコメント

  1. Takahiro MOROHASHI
    2009-03-08 13:26 に投稿 | パーマリンク

    ブログ(?) の移行、お疲れ様でした。 人材募集を人柱募集と読み間違えて(ワザと)反応しようか悩んでから、随分月日が経ちました。 アタマのページからのリンクでは www ナシ。 しかし、移行後はwww アリのようですね。 しかし、佐藤さんもUbuntu 使いとは。 ココに一番反応してしまいました。 :-)

コメントを書く

Your email is never shared. * 印の項目は必須項目です。

*
*