前提
$hoge = [];
って書いたらエラーが出たのでもう我慢なりませんでした。
タイトルは5.3だけど、beforeのバージョンはなんでもいい。
手順
現行EC2のコピーを作る
丸コピです。
AWSのEC2コンソールのインスタンス画面より、
- アクション>イメージ>イメージの作成
で、現在のEC2のイメージを作成。(場合によっては1時間くらいかかりますのでお茶を入れます)
作成できたら、イメージ>AMI から、イメージより作成を行います。
その際に、いい機会なのでインスタンスタイプを見直すのもいいかも。
新EC2でPHPバージョンアップ
以下、旧EC2のIPをXX.XX.XX.1
新EC2のIPをXX.XX.XX.2
とする。(ElasticIPで設定済とする)
新EC2にアクセスし、PHPのバージョンをアップする。
旧EC2でやったら死ぬのでご注意!!!!
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum remove ImageMagick
yum remove php*
yum install --disablerepo=amzn-main --enablerepo=remi-php72 \
php php-opcache php-devel php-mbstring php-mcrypt \
php-phpseclib-crypt-blowfish php-pecl-apc php-gd php-mysqlnd php-xml
yum install ImageMagick
テストテストテストー
旧EC2のapacheだにnginxだのの自動起動がちゃんとされていれば、hosts設定で新EC2は
アクセス可能なはずなので、ローカルPCのhostsに設定を行う
vi /etc/hosts
XX.XX.XX.2 hoge.co.jp hoge.jp fuga.jp
てすとてすとてすとーー
移行中に更新されたコンテンツの移行
今回移行したのがRDS接続のWordPressが大量に乗ったWEBサーバだったので
移行作業やらテスト中に更新された画像等のデータを移行する必要があります。
今回は /var/www/html以下にすべて集約されていたので、そこ以下をrsyncすることでOK
旧EC2の.ssh/configを設定します。
Host new-server
Hostname XX.XX.XX.2
User ec2-user
IdentityFile ~/.ssh/XXX.pem
rsyncします。
テスト用(デバッグ用パラメータnをつける)
/usr/bin/rsync -rltDvzn --omit-dir-times -e "ssh " \
--exclude '.svn' \
--exclude '.git' \
--exclude '.env' \
--exclude 'autoptimize' \
--exclude 'cache' \
--exclude 'log' \
/var/www/html/ new-server:/var/www/html/
本番用(nなし)
/usr/bin/rsync -rltDvz --omit-dir-times -e "ssh " \
--exclude '.svn' \
--exclude '.git' \
--exclude '.env' \
--exclude 'autoptimize' \
--exclude 'cache' \
--exclude 'log' \
/var/www/html/ new-server:/var/www/html/
↑パラメータが多いのは、パーミッションが違うファイルが結構あって
それを差分に出さないため。パラメータaで置き換えても大丈夫です。
IPの移行
テストで満足できたら、移行作業です。
移行は簡単で、新EC2のIPを旧EC2のIPに付け替えるだけ。
EC2コンソールの ネットワーク&セキュリティ>ElasticIP 画面で
- 新EC2に設定済のIPを外す(XX.XX.XX.2)
- 旧EC2のIP(XX.XX.XX.1)を新EC2に割り当てる
- 新EC2が旧EC2のIPを引き継ぐので、各ドメインのAレコード設定は不要。
いーーじょーー