はじめに
随分と更新があいてしまいました。今回は自前構築したAWS上のWordPressサイトをXserverへ移行した時の手順をご紹介します。(本サイトではなく、別サイト)
WordPressサイトを移行する時には「All-in-One WP Migration」プラグインや、各サーバー側の簡単移行機能等を使用することが多いですが、本手順はプラグインを使用しない方法で実施しています。プラグインを使用しない理由は、無料で移行できる容量以上であったことだけでなく、エンジニアたるものそもそものWordpressの仕組みを知っておくべきでしょ、という後者の理由の方が大きかったりします。
そもそもなぜ移行する必要があったのか
そもそも、もともとのサイトをAWS上に構築したのは、教育の一環としてゼロから作ることで以下のような要素の理解度を上げたい、という理由からでした。また、AWSは無料利用枠があるため、コスト面でも優れていたことも理由の1つです。
- AWSサービス(EC2、ELB、RDS、Cloudwatch等)
- サーバーOSの構築/保守ノウハウ
- Apache HTTP Serverの設計/構築ノウハウ
しかし、サイトの稼働が12か月を超え、AWS無料利用枠の期間を外れるとコストが急増(当たり前ですが)。さらに、昨今の円安もあり、サーバー移転が必要になってきました。(一定のノウハウは得たため、管理コストを下げるためにもマネージドサービスへ移行したいというのもあり)
移行前の構成
移行前はFullAWSで作成していました。冗長化、バックアップ等の機能を除くとこのような構成です。
- ネームサーバーでもあるRoute53からALBにルーティング
- ALBにはSSL終端とするためACMをデプロイ
- ALBのターゲットにEC2
- AP/DBを分離するため、DB(MySQL)はRDSへ切り出し
移行後の構成
移行後はこのような構成にします。Route53は既存ネームサーバーであり、他のメールサービス等への影響もあるため、ネームサーバーのみ残し、それ以外はエックスサーバー へ移行する形になります。
移行方法
Xserverアカウント登録
とにもかくにも移行先のエックスサーバー でサーバーを起動することが必要です。こちらから新規登録することができます。
移行するデータを取得する
移行するデータを取得する必要があります。今回移行するデータとはWordPressのすべて(テーマ、プラグイン、メディア、MySQL)になります。
MySQLのデータ取得
MySQLのデータの取得は”mysqldump”というクライアントコマンドを使用します。SSHでログイン後、以下のコマンドで”wpdb.dump”というファイルにデータを書き出すことができます。
mysqldump -u [MySQLユーザ] -p -h [RDSのDNS名] --set-gtid-purged=OFF > wpdb.dump
その他WordPressデータの取得
こちらもSSHでログイン後WordPressインストールディレクトリを丸っとアーカイブします。今回はインストールディレクトリが”/var/www/wordpress/”という前提のコマンドです。
# ディレクトリ移動
cd /var/www/
# アーカイブ
tar zcf wp.tar.gz ./wordpress/
取得したデータのダウンロード
上記で取得した以下2つのファイルをSCPツール等でダウンロードします。
- wpdb.dump
- wp.tar.gz
移行先の設定
ドメインの設定
サーバーパネル > ドメイン > ドメイン設定 からサイトドメインを追加します。なお、ネームサーバーをXserverへしないため、ずっとこの画面では”NS相違”という表示が出続けますが問題ありません。例として、「aaa.co.jp」というドメインを追加しますします。
WordPressのインストール
サーバーパネル > WordPress > WordPress簡単インストール からインストールを実施します。ここで入力するユーザー・パスワードは後で消えてしまいます(MySQLをごっそりリストアするため)。なので適当に入力して作ってOKです。
インストールが完了すると以下の画面が表示されます。この内容は保存しておく必要があります。
SSH許可設定
XserverはデフォルトではSSH許可されていませんので許可設定を行います。
サーバーパネル > アカウント > SSH設定 を開き状態をOFFからONへ変更します。
その後、公開鍵認証用鍵ペアの生成を開き、生成します。ここで入力するパスフレーズは忘れてしまうとSSHログインできないため必ず保管してください。生成すると”サーバーID.key”というファイルがダウンロードされますので、これを大事に保管します。
サーバーにログインして移行作業を実施
サーバーへログインする
Teraterm等のSSHクライアントソフトを使用して、サーバーにログインします。ログイン方法はこちらにも解説がありますが、重要なポイントは以下です。
- ログイン先ホスト名は アカウント>サーバー情報 に記載されたホスト名
- ポートは22ではなく10022
- ユーザー名はサーバーパネル上部に記載されたサーバーID。わからなければ アカウント>サーバー情報 に記載されたホームディレクトリを参照
- パスワードは鍵生成時に入力したパスフレーズ
- 生成した鍵を使用
データを移行する
先ほど作成したデータを移行します。まずはSCPやファイルマネージャー等を使用して移行データをアップロードします。アップロードした後は以下の手順でWordPressデータ(MySQL以外)を移行します。
# 1 作成したドメイン名でディレクトリができているのでそこへ移動
cd aaa.co.jp
# 2 このディレクトリへ2ファイルをアップロード
# 3 公開ディレクトリをリネーム(退避)
mv -fr public_html public_html.org
# 4 アップロードしたtarファイルを解凍しリネーム
tar zxf wp.tar.gz
mv -fr wordpress public_html
# 5 wp-config.phpを編集
# DB接続情報部分を編集する必要がある。catで表示した情報をコピペする
cat public_html.org/wp-config.php
vi public_html/wp-config.php
MySQLデータは以下の方法で移行します。User名等はWordPressインストール時に表示された情報です。
# MySQLリストア
mysql -u [User名] -h localhost -p [Database名] < wpdb.dump
これで移行は完了です。
移行作業結果を確認
まだ、この状態では公開(切り替え)されていません。公開(切り替え)前に、以下の方法で表示内容等を確認してください。(後で戻すのでhostsファイルはバックアップしておくこと)
- メモ帳等を管理者権限で起動
- hostsファイル(”C:\Windows\System32\drivers\etc\hosts”)を開く
- 以下のレコードを追加し手保存(IPはサーバー情報に記載)
***.***.***.*** aaa.co.jp - ブラウザから”aaa.co.jp”へアクセスし、表示内容等を確認する
DNS切り替え
エックスサーバー のマニュアルではネームサーバーをエックスサーバーへ向けるようガイドされています。しかし、冒頭述べた通り、ネームサーバーを移行したくない人は以下のように対応します。
サーバーパネル > ドメイン設定 > DNSレコード設定 でDNSレコード一覧を表示します。ここに記載されているDNSレコードを取捨選択していく必要があります。
具体的には種別(タイプ)毎に対応要否を判断できます。
- NSレコードは削除(別のネームサーバーを使用するため)
- MXレコードは削除(別のメールサーバーを使用するため。ほかのメールサーバ等を使用していなければDNS登録対象)
- TXTレコードは削除( 〃 )※DKIM設定も削除
- Aレコードは基本的にDNS登録対象。*.aaa.co.jpは必要に応じて判断(サブドメインが必要ならDNS登録対象)
このように判断したら、DNS登録対象、としたレコードをDNSへ登録します。今回の例でいうとRoute53の管理コンソールから同じ内容を登録して、上記画面からは削除すればOKです。
ここまでで移行は完了です。残りは最低限の設定等を行います。
事後作業
最低限のセキュリティ設定のため、以下は有効にしておくとよいです。
- サーバーパネル>アカウント>二段階認証設定
利用しない→利用する へ変更
(GoogleAuthenticatorや1Password等が必要) - セキュリティ>WAF設定
すべてOFF→ONへ変更
また、移行した2ファイルの削除等、ごみ掃除も忘れずに。
コメント