ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

Azure Web Apps 上の WordPress から記事を移行した話

はてなブログを始めたきっかけは、Azure Web Apps 上の WordPress で構築していたブログに接続できなくなってしまったことでした。

f:id:TonyTonyKun:20151213004919p:plain

Twitter で情報を頂いたおかげで、2年ほど書いていた過去の記事を移行することができたので、その顛末をまとめておきます。

WordPress のブログを復旧する

ClearDB がバックアップを取っているので、サポートに連絡すればリストアしてもらえることが分かりました。早速、ClearDB のサポートに連絡すると、回答が来ました。

The most recent backup we have was taken on November 28th at 0758 UTC.
To restore, please create a new, empty db and then open a Support ticket attached to the new db requesting the restore and including the connection string.
We'll load the backup into your new db.

11月28日時点のバックアップがあり、新しい空のデータベースを作れば、そこにリストアしてもらえるようです。
Azure Web Apps のリンク済みリソースとして MySQL データベースを作成したかったのですが、GA したポータルからできなかったので、クラシックポータルを使いました。

f:id:TonyTonyKun:20151213005023p:plain

ClearDB の管理ポータルから確認できる接続文字列をサポートに連絡してリストアしてもらい、新しいデータベースの接続文字列を2か所に設定することで、WordPress のブログが復旧しました。

  • Azure ポータルから Web Apps の接続文字列
  • Kudu から wp-config.php の接続文字列

WordPress のデータをはてなブログに移行する

staff.hatenablog.com
こちらの手順通りに「WordPress 形式」を選択すれば、そのままインポートできて便利だったのですが、なぜか複数の月をまとめてインポートするとエラーになってしまい、やむを得ずひと月ごとにインポートしたのは面倒でした。あと、ソースコードの表示が崩れていたので、そのあたりの調整も必要でした。

WordPress からはてなブログにリダイレクトさせる

Google の検索結果に同じ記事を複数ヒットさせたくなかったので、こちらの記事を参考にリダイレクトさせました。
blog.ch3cooh.jp
Kudu から Web.config に URL Rewrite の要素を追加して対応しました。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
            <rule name="gooner.azurewebsites.net/2015" stopProcessing="true">
                <match url="^2015/(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^gooner\.azurewebsites\.net$" />
                </conditions>
                <action type="Redirect" url="http://gooner.hateblo.jp/entry/2015/{R:1}" redirectType="Permanent" />
            </rule>
            <rule name="gooner.azurewebsites.net/2014" stopProcessing="true">
                <match url="^2014/(.*)" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="^gooner\.azurewebsites\.net$" />
                </conditions>
                <action type="Redirect" url="http://gooner.hateblo.jp/entry/2014/{R:1}" redirectType="Permanent" />
            </rule>
    </rewrite>
  </system.webServer>
</configuration>

画像データは WordPress 側に置いたままなので、記事の URL だけをリダイレクトさせました。

あとは、Google が 301 リダイレクトを受けてサイトを引っ越したと認識して、検索結果へ反映してくれるのを待ちます。

まとめ

半ば諦めていた過去の記事を移行できたのは、Twitter で情報を頂いた皆様のおかげです。ありがとうございました。今後は、Azure でマネージドな MySQL データベース が提供されると安心だなと思いました。