前提条件

・AWS AMIにてAmimotoを使用しているEC2インスタンスのリプレースを行いました。
・リプレース元のEC2からリプレース先へのEC2インスタンスへのデータ移管はrsyncを使用しました。
・WordPress powered by Amimotoを使用しているためPHP、Nginx、WordPressは既にインストール済みです。
・OSはAmazon Linux 2 となります。
・WordPress をインストールしているディレクトリは別ボリュームとしてマウントを行いました。
・リプレース先の新環境のインスタンスにて、rsync用の秘密鍵は作成しており、リプレース元の現環境のインスタンスには新環境のインスタンス上にある公開鍵の設定は完了している状況です。
・新環境から現環境へrsyncを行えるようにインスタンスのセキュリティグループにてSSHポートの許可設定も行っています。
・Amimoto AMIを使用しているため、WordPress をインストールしているディレクトリは以下となります。
/var/www/vhosts/{Instance ID or Virturl Host Domain }/

 

内容

以下手順となります。

01.Amimoto AMIを使用し、新規のEC2インスタンスを作成します。

 

02.新規でWordPress用のEBSボリュームを作成します。

 

03.インスタンスに作成したボリュームをアタッチします。
なお、今回は /dev/sdf でアタッチを行いました。

 

04.インスタンスにアタッチしたEBSボリュームが認識されているかを確認するため、
新インスタンスにssh接続を行い、確認を行います。
xvdfが認識されていることを確認します。

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 50G 0 disk
$

 

05.インスタンス立ち上げ時に追加したボリュームにファイルシステムを作成します。

$ sudo mkfs -t xfs /dev/xvdf

 

06.変数METADATAにインスタンスIDを設定した上で、デフォルトで用意されているWordPressのバックアップを取得します。

$ METADATA=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
$ cp -rp /var/www/vhosts/"$METADATA" /var/www/vhosts/"$METADATA"_bk

 

07.デフォルトで用意されているWordPressを削除後、同一の名称でディレクトリを作成します。

$ rm -rf /var/www/vhosts/"$METADATA"
$ mkdir /var/www/vhosts/$METADATA

 

08.追加したボリュームをディレクトリにマウントし、認識されていることを確認します。

$ mount /dev/xvdf /var/www/vhosts/$METADATA
$ df -Th

※以下のように/dev/xvdf/var/www/vhosts/{new_instance id} として正常にマウントされているかを確認します。

$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 484M 0 484M 0% /dev
tmpfs tmpfs 492M 0 492M 0% /dev/shm
tmpfs tmpfs 492M 440K 491M 1% /run
tmpfs tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 xfs 8.0G 5.7G 2.4G 71% /
tmpfs tmpfs 99M 0 99M 0% /run/user/1000
/dev/xvdf xfs 50G 84M 50G 1% /var/www/vhosts/{new_instance id}
$

  

09.現環境のインスタンスへsshにて接続しWordPress をインストールしているディレクトリに移動後、データベースの書き出しを行います。

$ cd /var/www/vhosts/{old_instance id}/
$ sudo wp db export --allow-root

 

10.rsyncにより、追加したボリュームにWordPressのコンテンツを同期します。
これにより、WordPress をインストールしているディレクトリをコピーすることができます、
なお、rsyncのオプションによりファイルのパーミッションも含め全てコピーすることが可能です。

$ sudo /usr/bin/rsync -azuv --force --delete --timeout=55 -e 'ssh -i /root/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' {old_server ip}:/var/www/vhosts/{old_instance id}/ /var/www/vhosts/"$METADATA"/

※rsync実行後、下記のような表記があれば完了です。

sent 279,005 bytes received 1,409,303,951 bytes 11,055,552.60 bytes/sec
total size is 1,659,886,283 speedup is 1.18
$

セキュリティグループで許可してるのにもかかわらず正常に実行できない場合、sshd_configPermintRootLoginの設定等でも問題ないか確認しましょう。

 

11.06にてbackupを取得していた新インスタンスの接続情報を、現環境インスタンス環境からrsyncしてきたlocal-config.phpに上書きします。

$ cp -ip /var/www/vhosts/{new_instance id}_bk/local-config.php /var/www/vhosts/{new_instance id}/local-config.php

 

12.MySQLにログインできることを確認します。

 

13.WordPress をインストールしているディレクトリに移動後、新インスタンスへのデータベースのインポートを行います。

$ cd /var/www/vhosts/{new_instance id}/
$ wp db import i_XXXXXXXXXXXXXX.sql --allow-root

以下のような表記が確認できれば完了です。

Success: Imported from 'i_XXXXXXXXXXXXXX.sql'.

 

まとめ

以上、Amimoto AMIで作成したインスタンスのデータ移行手順となります。
最後に、rsyncによるデータ移行完了後は、セキュリティグループやsshd_configの設定等は元に戻しておきましょう。

~~参考~~
Amimoto (PVM版)からAmimoto (HVM版)へのインスタンス移行方法
https://ja.amimoto-ami.com/amimoto-pvm-to-hvm/