« Posts tagged MovableType

MovableType5からWordPress3.0に移行

世田谷美術館

Movable Type5.0から、Wordpress3.0に移行した。

ボクのこのブログがWordPress Me 2.1.3からMovableType4.0に移行したのは2007年のことだ。それ以来、約3年ほどMovableTypeで運用してきたのだが、Wordpress3.0でマルチサイトがサポートされるのを機に再移行(出戻り)を検討していた。MTは嫌いじゃないのだが、バージョンアップのたびに複雑になり気楽にいじれなくなってきたことが主な動機。MTは、次第に商用向けに舵をとりはじめたことで個人ブログ向けには使いにくくなってきた気がするのだ。

そして、WordPress3.0 をインストールしてしばらく試してみた結果、再びWordPressに戻ることを決意。3年ぶりに使ってみたWordPressの進化ぶりは目を見張るほどで、最近のすさまじいまでのWordPressの普及を裏付けるものであった。

今回の移行にあわせて、これまで面倒で手を付けていなかったいくつかの課題に取り組んでみることにした。

ざっとならべると、

[text toolbar=”false” gutter=”false” font_size=”80%”]

1.WordPressへの移行

2.モバイル対応(iPhoneやAndoroid他、スマートフォンへの最適化)

3.ドメイン移転

4.デッドリンクの修正

6.パーマリンクや投稿スラッグの統一

7.分散したサイトの相互リンク

8.feedの適正化

[/text]

といったものである。10年以上ものサイト運用の過程で、システム切り替えや移行の度にちょっとづつ残ってしまっていた問題のゴミ掃除ともいえるかもしれない。とても一度にはできないボリュームなのだが、WordPressへの移行さえ済んでしまえばあとは何とかなりそうだ。

以下、WordPressへの移行についてまとめておく。

■データ移行の方法について

ネット上にはたくさんの移行のための情報があるので不自由はしないが、Movable Type (以下MT)からWordPress (WP)に乗り換えようとするときに必ずネックになってくるのが記事データ移行の問題。MTにもWPにも記事(投稿)のエクスポート/インポート機能があるので一見すんなりいきそうなのだが、そのときに移行できるのは、記事本文・コメントのみ。パーマリンク(URL)、カテゴリー、タグといった付帯情報は一切引き継ぐことができない。最も障害になるのはパーマネントリンク(パーマリンク)の扱いであり、これって致命的な問題なのだ。パーマリンクは、今までに張られたリンクや検索エンジンのインデックスを有効に生かすためのコンセプトであるはずなのに、どちらもそれに対応してないってのはどういうことか?おそらく、ユーザーの流出を防ぐためにわざと対応してないんじゃないかと思う。携帯で言うところの番号ポータビリティと同じだ。

MT・WPそれぞれのソースコードを修正してパーマリンクを引き継がせるなんてことはできるのだけど、この方法は、MT・WPがバージョンアップされて元のソースコード自体が変わってしまうと、どこを修正していいのか分からなくなってしまうのが欠点といえば欠点。

そこで、WPにはサイト移転などのために「WPからWP」の完全なエクスポート/インポート機能が備わっていることに着目。WPからWPへWXR(WordPress eXtended RSS)形式のデータを使ってブログ内容の引継ぎができるのであれば、MTからWXR形式でデータを書き出すことさえできればいいのではないか??と考えた。WPに限った話では無いと思うが、移行用のエクスポートファイルは移行先のツールに合わせたフォーマットの方が良いんじゃないか?と言うわけである。

MT上でWXR形式のデータを書き出せるプラグインのようなものなどはないものか・・と探していたら、頼りになるのはやはり先人の知恵。それが今回採用した手法である、’MovableTypeにWXR形式で書き出すテンプレートを作成してエクスポートする’というものだ。これなら基本的にはバージョンを意識する必要はなく、とてもスマートに移行を行えそう。

結果論からいうと、割とスムーズにインポート出来たんじゃないだろうか。今回はMTからの移行だったが、他のブログサービスやブログツールであっても、なんらかの方法で書き出しが可能ならば同じようにいけると思う。

参考:

MovableTypeからWordPressに固定リンク込みで完璧に移行する方法

ただしここで紹介されていたMTテンプレートは、MTのブログ記事で「追記」に記述された分は正しく書き出せなかった。

追記にも対応したテンプレートは、以下のサイトで紹介されている。

http://blog.s-satoshi.net/tech/mt2wp_greater_template/

■パーマリンクや投稿スラッグの修正

データ移行が解決したら、次はリンクの修正について。

パーマリンクについては、ボクのMovableTypeでは「yyyy/mm/entry-basename.php」だったので、WPでは「/%year%/%monthnum%/%postname%.php」という風にするのが一般的。注意するべきポイントは、WPでは新規投稿の際にタイトルに日本語が使用されているとスラッグも日本語名になってしまうということ。これをMovable Typeのように半角英数、キーワードのあいだはハイフン(-)にして、同じ名前があった場合に2とかにしてくれるようなプラグインもあるので紹介しておく(リンクはこちら)。

話はそれてしまったが、ボクのサイトはこれまで移行を重ねてきたせいか、このパーマリンクの命名がバラバラで統一感がなかった。あいだがハイフンだったり、アンダースコアだったりといった感じだったので、今回の移行を機に修正することにした。ただし、リンクや検索エンジンのインデックスを無駄にはできないので、これは301リダイレクト(後述)を使って継続性に配慮しなければならない。

MovableTypeのパーマリンクを移行

/blog/archives/201006/aaa-bbb-ccc.php

/blog/archives/%year%/%monthnum%/%postname%/

参考:

WordPressへ移行

パーリンクの問題 http://blogram.net/2010/02/25/permalink/

■RSSのURL修正

・RSSのURLが変更になるため.htaccessに以下を追加

[php font_size=”80%”]

Redirect 301 /atom.xml http://rightdice.com/feed

Redirect 301 /rss.xml http://rightdice.com/feed

Redirect 301 /index.xml http://rightdice.com/feed

[/php]

■画像URLの変更

wp-content/uploads/に画像を格納するために、Movable Typeでエクスポートしたデータ内にある画像URLを、任意のディレクトリに一括置換した。

ボクは「images」というディレクトリに一括で保存していたのでそれを丸ごと持ってくればよいかと思っていたのだけど、サムネイルの画像は「asset_cなんとか」というディレクトリに入ってしまっていた。MTのときの画像リンクを変更したくなければそのまま残しておいても良いかもしれない。今回僕はドメインも移行したので、そのまま残すことはせずに一旦すべてWPの「upload」ディレクトリにメディアインポートした。そして、インポート前にブログ記事(テキストファイル)上でリンクを一括変更し、とりあえずリンク切れが発生しないようにした。あとはのんびりと必要に応じて修正することにしよう。面倒な作業はこれとリダイレクト設定(後述)ぐらいで、他は拍子抜けするぐらいに簡単だった。

■リダイレクトの設定

パーマリンクのところでも少し触れたが、このリダイレクトが今回一番苦労したところかもしれない。長くなりそうなので詳しくは別の機会にあらためようと思うが、簡単にポイントだけ。。。。

リダイレクトにはざっと2つの方法がある。基本的な「Redirect permanentを使う301リダイレクト」と、Apacheのモジュールである「mod_rewrite」を利用する方法だ。ドメインが変わっただけとかファイルのパスや拡張子が変わった程度であればRedirect permanentでも十分なのだが、動的なクエリ付きページの場合(「~/example.php?id=01」など)や、条件判断を伴うような複雑なリダイレクトが必要な場合には、どうしてもmod_rewriteを使わなければならない。ただし、前述のようにmod_rewriteはApacheのモジュールなので、使用しているホスティングサービスでサポートされていることが必要となる。

ボクが使っているCOREサーバーは、mod_rewriteモジュールをサポートしているので、これを使ってリダイレクトの設定を行った。

詳細については、あらためて記述します。

※使用中のサーバーでmod_rewriteがサポートされているかどうかを確認するには、

<?php phpinfo(); ?>

とだけ書いたページ(test.phpなど)を作成してサーバー上におき、ブラウザで開いてみればよい。

参考:

「URLの書き換え Rewrite」

mod_rewrite URLを書き換えるApacheモジュール

■その他

・WordPressのプラグインで、WordPress > 404 Notifier ? WordPress Pluginsというのを入れておく。404ヒットがあったときにメールで通知orRSSフィードでお知らせしてくれるので便利だ。

 

301リダイレクトを使って「WWWあり」と「WWWなし」の統一

GoogleやYahooやbingなどの検索エンジンでは、「WWWあり」と「WWWなし」のサイトは”別サイト”として認識しインデックスしている。
たとえば、www.wwm2.comへのバックリンクは、wwm2.comへのバックリンクとは異なるものという整理がなされる。
 ブラウザを使うサイト訪問者に対しては、Apache (httpサーバー)の設定、もしくはサーバーのシンボリックリンクを使えば、どちらでアクセスしても同じページにたどり着くようにすることはできる。しかしそれでは検索エンジンは別サイトとしてインデックスするので、一つのドメインに対するバックリンクが「WWWあり」と「WWWなし」で分散されてしまい、SEO的には望ましいものではない。サイトのPageRankなどにも重要な影響を与えているバックリンクなので、分散化させたまま放置しておくのではなく、一刻も早く一本化させることがポイントだ。
一本化するためにはサーバーサイドの301リダイレクトを利用するので、.htaccessの設定が必要となる。ボクはXREAを使っているので、XREAのファイルマネージャーから.htaccessを作成したが、もちろんftpを使ってアップロードしてもOK。

.htaccessの内容は以下のようになる。

・wwwありの“ドメイン名”で統一したい場合

[php]
"RewriteEngine on
RewriteCond %{HTTP_HOST} ^a\.example\.com
RewriteRule (.*) http://www.a.example.com/$1 [R=301,L]
[/php]

・wwwなしの“ドメイン名”で統一したい場合
[php]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.a\.example\.com
RewriteRule (.*) http://a.example.com/$1 [R=301,L]
[/php]

これで、「WWWあり」と「WWWなし」の統一をすることが可能だ。

CORE MINIにお引っ越し(その2)

今後もまた引っ越すかもしれないことだし、自分の備忘録のため、XREA+からCORE MINIに引っ越した際の手順をまとめておきませう。

CoreServerのアカウント取得

まず最初に、移転先となるCoreServer Miniのサーバアカウントを取得する。
Xrea+で使用していたアカウントと同じにする方が楽なのだろうけど、セキュリティ向上のためにアカウント名を変更することにした。
いくつかのサーバーから選択できるので、負荷状況を見ながら混んでいなさそうなサーバーを選択する。サーバー負荷状況は公式に公開されているのでそれを参考にすればよいのだが、こうしてみると、サーバによって当たり外れがあることがよくわかる。

・coreserve負荷状況
http://mainte.coreserver.jp/
・xrea負荷状況
http://mainte.xrea.com/

この他、以下のようなサイトもある。ただしこれは有志によるものなので、全てのサーバー状況を観れるわけではない。

Coreserver / xrea 負荷観測所
http://stress.junos.mobi/index.html

 

ファイルのコピー

一般的にはftpでのdownload&uploadとなるのだが、移転先がCoreServer/Xrea+の場合には「サーバー間コピー」機能を利用するのが楽で確実。移転元サーバでのパーミッションの設定や、Symbolic Linkも含めて移転先のサーバにコピーすることができる。
移転先である新しいサーバ(CoreServer)の管理メニューから「サーバー間コピー」を選択する。間違っても移転元サーバ上で操作を行ってはいけない(全て消えてしまう)。
移転元(リモート)となるサーバのftpの情報を入力すれば、あとは全て移転先(ローカル)に自動的にコピーしてくれる。ftpさえ利用できればいいので、リモートは他社サーバーでも構わない。

CoreServer

リモートディレクトリとローカルディレクトリの部分には、それぞれ / (ルート)とだけ入力する。
/の下には maildir と logが存在するのだが、僕はXrea+のmail は使っていないので、 /public_html と入力した。
転送方式はミラー(削除なし)でよい。実行をクリックするとサーバ間コピーが実行される。これでルートディレクトリ下にある全てのディレクトリとファイルがコピーされる。

ファイルサイズによるが、サーバ間コピーは数分~数十分程度で完了する。
進捗については、コピー先サーバのrootに、.servercopy.logというログファイルが作成されるので、管理画面からファイルマネージャーを使って内容を確認し”COMPLETE”と”END”となっていることを確認してください。

cmd2

コンフィグファイルの更新

MovableTypeなどを利用しているなど、コピーしたファイルの中にconfig.xxxなどの設定ファイルがある場合は、忘れずに新しいサーバの情報に更新する。
僕は、MovableTypeの他に WordPress や Joomla! などのいろなCMSをインストールしていじってみたりしていたので、それぞれのコンフィグファイル全てを修正した。

/public_html/log ディレクトリの修正

/public_html/log/ディレクトリは、アクセス解析ログの他、phpMyAdminやphpPgAdminがインストールされている。
これらの機能を利用されている方は/public_html/log ディレクトリの中のファイルを一度削除し、サーバ管理画面からログの保存の再設定やphpMyAdminを再インストールする。

ここにはベーシック認証用の.htaccessと.htpasswdファイルも置かれているのだが、コピーしたファイルに記述されているアカウントやパスワードは、移転元サーバの情報で不要であるので削除する。ファイルが存在しなければ新しいサーバの情報で朝6時に自動生成される仕組みになっているので、削除して待つだけだ。

あるいは管理画面のツールを利用すると記述内容を生成することができるので、その通りに書き換えてもよい。
このツールは.htpasswdに記述するパスワードの暗号化もしてくれるので、自動生成される初期パスワードではなく任意のパスワードに変更することが可能だ。

CoreServer

Databaseのコピー

Database(以下DB)の移動は、phpMyAdminでデータをdumpする方法もあるが、Xrea+/CoreServerの機能を利用したほうが便利だ。
手順としては移転元のサーバ管理画面でDBのダンプファイルを作成し、移転先のサーバにアップロードするわけなのだが、今回の移転にあわせてユーザーアカウント名やDB名を変更したかったので、ユーザディレクトリの絶対パスなど環境依存の部分のデータ修正も併せて必要となった。

※ちなみに、MySQL4(orそれ以前)のデータは、MySQL5とは文字コード他で互換性がないために字化けしてしまう。古いversionのMySQLからMySQL5のサーバに移転する場合は、WordpressやMovableTypeの備えるデータエクスポート・インポート機能などを使用することで可能らしいのだが、僕は試したことがないのでわかりません。。。。

■DBのダンプファイルの作成
移転元のサーバにおいて、ダンプファイルを作成したいDBを選択し「保存」ボタンを押す。
数分~数十分程度で / (root)ディレクトリに「mysql.dump」という名前のファイルが作成される。
2つ目以降のDBの場合は「mysql_1.dump」などと、mysql_のあとにDB名を付加した名前のファイルとなる。
ファイルマネージャやftpツールを使ってこのダンプファイルをダウンロードする。

Xrea

■環境依存データの修正
使っているCMSにもよるが、MovableTypeの場合はDB内にサーバ環境に依存するデータが含まれているので、新サーバに合わせたデータに修正が必要となる。
今回ユーザー名を変更しているので、ユーザディレクトリの絶対パスが変わっている。ダウンロードしたダンプファイルを、サクラエディタや秀丸エディタなど、Unicodeをあつかえるエディタを用いて修正する。

CORE MINIにお引越し

裏ドアの写真

ホスティングサービス契約の年次更新を機に、サーバーを移転することにした。
いまの『Xrea+』というホスティングサービスは低価格で高機能という点が気に入っていて、もう5年ぐらい使っている。僕が初めてホスティングサービス(当時はレンタルサーバーなどと呼ばれていた)を利用したのは97年か98年頃だったと思うけど、当時は月額¥3000ぐらいだったかな。以降、これまで何社かのサービスを渡り歩いて今のXrea+にたどり着いたわけだが、Xrea+は年間で¥2400円、月額にしてたった¥200円である。いくつか不満はあるものの総合的にみてここが一番気に入っている。サポートコストを抑えて低価格を実現しているサービスなのでユーザーサポートにはほとんど期待できないけど、サポートに問い合わせるようなケースは今まで一度もない。サーバー障害の時などに対応してくれれば十分だし、こちらが期待するような迅速な対応がされなくても、改善されるのを待つより不安定なサーバーからさっさと脱出してしまえばいいだけのことだ。

ただ、一台のサーバーのリソースをほかの人と共有している共用サーバーという性格上、同居しているユーザーの利用状況次第では、過負荷状態となってレスポンスが遅くなったり、最悪の場合は障害となってサービス停止状態に陥る可能性もある。ここ最近、そんなXrea+のレスポンス低下が気になりはじめ、そうなると気になるのが「同じサーバーを共有している他の人は誰だろう?」ということだ。
IPやドメイン名を入れると同じサーバーを共有しているサイトの一覧をずらずらと出してくれるサイトがあるので使ってみた。有名なものは「myIPneighbors」というサイトだが、時々落ちていることもあるようで、僕はこちらを使ってみた。

http://www.my-ip-neighbors.com/

これによると僕の同居人は600サイト近くもあった。「それじゃ遅くもなるさ・・・」などと思いつつ、サーバー移転を検討していたのだった。上位サービスであるCORE SERVERに興味はありつつも、少々値段が高いなぁ・・・なんて思っていたところに、昨年末、Xrea+とほぼ同額の『 CORE MINI 』サービスが提供開始となった。さっそく試用してみたところいい感じだったので、契約更新を機に移転・・・というわけだ。

サーバ移転にあたって、おおよそ以下のような手順になる。
1.CORE SERVERのアカウント取得
2.ファイルコピー
3.データベースコピー
4.サーバー設定
5.DNS設定

その他、今回の移転に併せてアカウント名の変更やDBの変更なども行ったので、
6.MovableTypeなどのconfig fileの修正
7..htaccessの変更
が必要になった。

試行期間にあれこれ試してみたのだけど、手順を理解してしまえば、ここまでやっておおよそ1時間程度で完了すると思う。
今後またサーバ移転するかもしれないし、備忘録として「CORE MINIにお引っ越し(その2)」にまとめて書いておきますので、もしよかったら参考にしてください。
基本的にはXreaやCORE SERVER間での移転手順なのだけど、サーバ間コピーは他社サーバからのコピーにも利用できるので他社サービスからの乗り換え時にも参考になるかもしれない。あるいは、独自ドメインを使ってMovableTypeやWordPressなどでDBを利用している場合のサーバ移転方法の参考にもなるかな。

肝心の引っ越しの効果は・・・・というば、サーバレスポンスもさることながら、MovableTypeの再構築があきらかに速くなった。ディスクの容量も倍増したことだし、年額にして100円高くなった分以上の効果は十分にあると思っている。

参考までに、以下、XREA+とCORE-MINIの機能比較です。

 
XREA
XREA+
CORE-MINI
CORE-A
CORE-B
初期費用
無し
無し
500円
1000円
2000円
年額
無料
2,400円

 

 

(200円/月)

2,500円

(208円/月)

 

 

5,000円

(417円/月)

 

 

9,900円

(825円/月)

 

 

ディスク容量
50MB
3GB
6GB
15GB
60GB
転送量/月
30GB
90GB
100GB
150GB
300GB
許容負荷率
不明
100%
125%
250%
1000%
MySQL/PostgresSQL
各1個
各5個
各10個
無制限
無制限
マルチドメイン
10個
20個
50個
無制限
無制限
メールアカウント数
100
100
200
無制限
無制限
送受信メール数/日
1,000
3,000
5,000
10,000
40,000
ftp (sub account数)
○(なし)
○(3個)
○(10個)
○(無制限)
○(無制限)
共有アカウント数
不明
不明
(500程度?)
300以下
128以下
64以下
商用利用

 

mixiへのフィード

ブログの方はもうかれこれ10年になるのだけど、mixiをはじめたのは1年半ほど前のこと。
僕はmixi日記は使わずに、外部ブログを設定して最新記事をフィードしていた・・・のだが、昨年末あたりから、Movable Typeで記事を更新してもmixiの日記一覧に反映されなくなった。
それまではちゃんとフィードされていたのに・・・mixi側の理由かとも思っていたが、どうもMT環境の更新をした頃からのようなのだ。当時はmixiのことまで配慮しなかったので、配信されないことに気づいたのはずっと時間が経ってからだ。

mixiのヘルプによれば「mixi 設定変更画面では、ブログURLだけを入力した場合は自動的にRSSのURLを予測して取得をおこなっていますが、反映されない場合URLが異なっている可能性があります。~中略~正しい RSS(XML)のURLを記入してください。」「mixiで対応しているAtom のバージョンは 3.0 のみです。※Atom1.0には対応していません。」とのこと。
前者はともかく、後者が原因のようで、Movable Type 4.xのAtomのバージョンではmixiに対応していないようなのだ。さてどうしたものかと考えていたのだが、Movable Typeのテンプレート一覧を眺めてみると、Atom(http://サイトURL/atom.xml)のほかに、RSS2.0(http://サイトURL/rss.xml)のテンプレートが生成されていた。
はて?・・・・・MovableType 4.xでは、RSS1.0、RSS2.0を搭載しなくなったと思いこんでいたのだけど、何かのテンプレートを試したときに組み込まれたか???
ともかく、RSSの生成ができているのなら話は早い。つまり解決方法は2つで、mixiの外部ブログをAtomではなくRSSに設定するか、あるいは、mixiにあわせてMovableTypeのテンプレートを修正するかだ。

しかし、MovableType側はRSS2.0に対応できているのに、mixiの設定をAtomからRSS2.0に変える方法が分からない。
日記・ブログの選択で「Movable Type系」を選択すると、日記・ブログのURLの入力欄しかないのだ。試しにこの入力欄にRSS2.0のURLを入力してみたのだけど、やはりだめだった。
なかば諦めてしばらく放置していたのだけど、日記・ブログの選択で「その他」を選択してみた「RSSのURL」という欄があることに気づいた。これでRSSを設定してみたところ、ちょっと時間をおいてmixiの日記更新情報に最近のブログ記事のタイトルが表示された。(調べてみると、通常、mixiでは4時間おきに外部ブログのRSSを取り込むらしい)

これで「最近、日記の更新してないね」なんていわれることは少なくなるかな。

今日は、先週に続いて近所の公園でプチお花見。ここは、ほとんど人がこないので静かでいい。僕にとってはお気に入りの場所だ。
日当たりのいいところは8分咲きほどだけど、多くは5分咲きといたところか。

※D700 & AF-S 50mm f/1.4G