🕌
WordpressをEC2(EBS)からEC2(EFS)に移行し、AutoScalingの準備をする
この記事が個人的に業務をこなした時、それになり手順を沿ってすぐに完成するものがなく、手間がかかったため、聞いた記事です。
背景
既存でWordpressをAWSのEC2上で構築したものがあります。 DBはもともとEC2内にインストールされましたが、結構前からRDSに移行しました。ただ、それ以外の部分はまだEC2の中に残っていて、しかもstorageはEBSのため、AutoScalingなどの対応しようとしてもできない状態です。
ただ、ビジネスが成長し、サイトのアクセスがどんどん増え、垂直スケーリングに限界があります。(金銭的にね。😂)
結論、EC2とEFSの組み合わせでAutoScalingを実装しましょう。が、その前に移行作業には少し手間がかかりました。
同じ問題に出会う方もいらっしゃるので、手順をまとめようと思い、ブログを書いてみました。
具体的な手順は以下のようになります。一定の前提知識があることを前提にしております。
前提
AWSのEC2ですでにWordpressで構築したサービスはあり、ネットワーク関連設定が済みです。
作業手順
手順1: EC2を作成
- 本番のInstance Typeはm5.large以上でいいです。t2,t3はテスト環境に適します。
- EC2をログインするため、Key pairを作成しましょう。
手順2: EFSを作成
手順3: EFSマウント用のSecruity Groupを作成
- 2つのSecurity Groupを作成する必要があります。一つはEC2と紐付けします。もう一つがEFSと紐付けします。わかりやすいように、efs-mount-sgをEC2と紐づけるためのもの、efs-target-sgはEFSと紐づけるためのものとします。
efs-mount-sgを作成
efs-target-sgを作成
- Inbound rulesにNFSのルールを追加します。Sourceはefs-mount-sgを選んでください。
efs-mount-sgのInbound rulesにNFSのルールを追加
- Sourceはefs-target-sgを選んでください。
手順3: EC2にefs-mount-sgを設定
手順4: EFSにefs-target-sgを設定
手順5:EC2にログインし、Apache、Phpをインストールする
ssh -i ~/.ssh/<key pair.pem> ec2-user@<ec2 public ip>
sudo yum install -y httpd
sudo amazon-linux-extras install -y php8.0 mariadb10.5
sudo yum install -y php-mysql php-fpm
sudo systemctl enable httpd
sudo usermod -a -G apache ec2-user
sudo chown -R ec2-user:apache /var/www
sudo service httpd restart
# apacheの起動状況を確認する
systemctl status httpd
手順5: EC2にログインし、EFSをmountする
ssh -i ~/.ssh/<key pair.pem> ec2-user@<ec2 public ip>
cd /var/www
mkdir <project folder name>
# マウント用のツールをインストール
sudo yum install amazon-efs-utils
sudo mount -t efs -o tls <EFS File System ID>:/ <project folder name>
sudo chown -R ec2-user:apache <project folder name>
# wordpressを旧サーバーからこのEC2にコピーする
# ec2-userでログインし、アップした場合、ファイルの所有者設定を変更する必要がある。下記のコマンドを再度実行
sudo chown -R ec2-user:apache <project folder name>
手順6: Apacheの設定を変更して、WordPressを公開する
- 設定ファイルを開く
ssh -i ~/.ssh/<key pair.pem> ec2-user@<ec2 public ip>
sudo vi /etc/httpd/conf/httpd.conf
- DocumentRootの設定を下記に変更
DocumentRoot "/var/www/<project folder name>"
- Directoryをファイルの一番したに追加
<Directory /var/www/<project folder name> >
AllowOverride All
</Directory>
- サーバーを再起動
sudo service httpd restart
最後
おめでとう、移行が終わりました。お疲れ様でした。
ブログを始めたばかりなので、不足があれば、ご意見をください。
次は後続のAutoScalingの設定について、ブログを書こうと思います。
宜しくお願いします。
では、また
Discussion
別途Laravelを使う場合、EC2では下記のようなコマンドでcomposerのインストールができます。