いつだったか 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! あとはインポートするだけ! …ならいいんだけど、微調整が必要なところもいくつかある。省略。 (アップロードしたファイルの移行など)
リンク
以下、参考にしたページ。
- MovableType から WordPress への移行 – レジデント初期研修用資料
http://medt00lz.s59.xrea.com/wp/archives/180 - 固定リンクを変えずにスムーズにMovableTypeからWordPressに移行するまでの作業ログ – IDEA * IDEA
http://www.ideaxidea.com/archives/2008/12/movabletypewordpress.html





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