MB blog

ちょっぴりテクニカルな話題のメモです。

Wordpress サイトを Xdomain 無料サーバから AWS Lightsail に移行


スポンサードリンク

独自ドメイン取得のついでに Xdomain の無料サーバ上に構築していた Wordpress サイト。無料でメールも使えるし、昔ながらの素朴な管理画面で気に入っていたですが、モバイルだとどうしても広告が出てしまい、やはり気になる... ということで、有料サーバに移管することにしました。

お引っ越し先は、月額わずか3.5ドルの AWS Lightsail サーバに決めました。Lightsail は、事前定義済みのアプリケーションが使える VPS のようなもの。EC2のような複雑な設定は不要で、Wordpress も一瞬で動かせます。

移行には、最高に簡単だと名高い All-in-One WP Migration を使ったのですが、なぜかいくつかハマってしまいましたので、解決までの記録も残しておきます。 

1. Lightsail インスタンスの作成と Wordpress のインストール

EC2 と比べてかなり直感的にインスタンスを作れるようになってます。Wordpress サーバを選択し、ポチポチやって行くとインスタンスの作成が出来てしまいました。ホームディレクトリの "bitnami_application_password" というファイルに、Wordpress 管理画面の初期パスワードが記載されているので、確認して http://<グローバルIPアドレス>/wp-admin から、ユーザ名 user でログイン可能。
なお、ここでは Wordpress の設定は何も変更しなくて大丈夫。All-in-One Migration プラグインが、管理ユーザをはじめ、あらゆる設定を移してくれるからです。

初期状態では、ブラウザで Wordpress サイトを確認すると右下に bitnami のアイコンが表示されてしまっていますが、設定で消しておきます。

sudo /opt/bitnami/apps/wordpress/bnconfig --disable_banner 1
sudo /opt/bitnami/ctlscript.sh restart apache

また、最初に払い出されるグローバル IP アドレスは固定IPではなく、スナップショットから復元するとIPが変わってしまいます。Lightsail の管理画面から固定グローバルIPに変更します。"ネットワーキング" タブから、静的IPアドレスを作成し、先ほど作ったインスタンスにアタッチ。完了すると、グローバルIPの表示にピン留め表示がされます。

ドメインの振り替えは、移行作業後に行います。

2. All-in-One WP Migration で移行作業

移行元の Xdomain 無料サーバ上の現行Wordpress、Lightsail サーバ上の初期状態の Wordpress それぞれでプラグインをインストール & アクティベートします。
以降元のプラグイン画面にて、EXPORT TO FILE を選択。ファイル以外の方法でエクスポートすることも出来ますが、無料版はファイルのみです。

ハマりポイント:エクスポートファイルをダウンロード出来ない

エクスポートが完了したので、ダウンロードボタンをクリックすると、500 Internal Server Error。ブラウザからダウンロード出来ないのは、おそらくエックスドメインサーバ側の制限かと思われます。代替策として、wp-content/ai1wm-backups にエクスポートファイルが吐き出されているので、FTP でダウンロード出来ました。

ハマりポイント:エクスポートファイルをインポート出来ない

取得したファイルを、移行先の Wordpress へインポートしようとすると、"Unable to Impoert - unable to open file for reading" とのエラー。
まずは、Wordpress にアップロードできるメディアファイルの上限を超えていることが原因ではなかろうかということで、 .htaccess や wp_config.php を修正したもののうまく行かず。結局、サポートフォーラムで作者が案内していた以下のプラグインを使うとインポートに成功しました。
import.wp-migration.com
私と同じく FILE でのインポートが出来ない場合の設定変更など諸々をやってくれ、無償版で許容される 512MB までのファイルをインポート出来るようにしてくれます。インポートが成功すると、パッと見は同じサイトが出現。

3. Xdomain の管理画面にて Lightsail インスタンスドメインの振り替え

さて、取得しているドメインを、旧 Xdomain 無料サーバから Lightsail インスタンスへと振り向けます。
Lightsail では無料で DNS サーバを使えるのでそちらに切り替えても良いのですが、あいにく Lightsail にはメールサービスは付いていません。Xdomain の無料メールサーバを Gmail に転送して独自ドメインメールとして愛用していたので、DNS サーバは継続して Xdomain 側を利用し、A レコードの IP アドレスのみ Lightsail インスタンスのものに書き換えて対応です。
さて、これでほぼ完成か?と思いきや、なんだかおかしい。

ハマりポイント:ドメインで新サイトにアクセスは出来るものの、アドレスバーにIPアドレスが表示されてしまう

All-in-One Migration は、移行時点でのサイト URL を元に Wordpress アドレス、サイトアドレスを書き換えてしまいます。そのため、各ページのパーマリンクには移行時点での URL であった IP アドレスが使われているし、アドレスバーに表示されてしまうのもそのためでしょう。
Wordpress ダッシュボードの Setting から、Wordpress アドレスとサイトアドレスの両方を独自ドメインに書き換えましたが、それだけでは挙動戻らず。MySQL を直接触って更新しなきゃいけないのかな(情弱)、慣れてないので怖いわ、とビビっていましたが、教えてもらった以下の方法で安全に URL を書き換えることが出来ました。

On your website, go to All-in-One WP Migration -> Export page.
Under advanced settings check every options exception “Do not export database” – this will export only the database and exclude plugins, themes, uploads.
Next, you need to use find/replace tool.
In Find field enter your ip address of the site, e.g. (127.0.0.1)
In Replace field enter the site url: cupoftea-takayama.net/en
Do not include http:// part.

Export to file then import from file on the same site. This should replace all instances of the IP address in the database with your domain name.

なるほど、こういったメタデータのみの書き換えにもこのプラグイン使えるのね。便利です!

今振り返ってみると、ドメイン切り替えのタイミング前にアドレス系は書き換えておくべきだったのではないかと。また同じような機会があれば、こちらのサイトを参考にさせていただこうと思います...。
hacknote.jp

WordPressに限らないWebサイト移行作業の一般的な流れですが、新サーバーに切り替える前からでもドメインで確認できるようにhostsの設定を行います。


SSL 化などの 残タスクは残っていますが、いったんはこれで終了。無事に、モバイル広告を出さないサイトにすることが出来ました。