🕌

WordpressをEC2(EBS)からEC2(EFS)に移行し、AutoScalingの準備をする

2022/12/28に公開1

この記事が個人的に業務をこなした時、それになり手順を沿ってすぐに完成するものがなく、手間がかかったため、聞いた記事です。

背景

既存で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を作成しましょう。
    EC2作成画面

手順2: EFSを作成

EFS作成画面

手順3: EFSマウント用のSecruity Groupを作成

  • 2つのSecurity Groupを作成する必要があります。一つはEC2と紐付けします。もう一つがEFSと紐付けします。わかりやすいように、efs-mount-sgをEC2と紐づけるためのもの、efs-target-sgはEFSと紐づけるためのものとします。

efs-mount-sgを作成

SG作成

efs-target-sgを作成

  • Inbound rulesにNFSのルールを追加します。Sourceはefs-mount-sgを選んでください。
    SG作成

efs-mount-sgのInbound rulesにNFSのルールを追加

  • Sourceはefs-target-sgを選んでください。
    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

JohnJohn

別途Laravelを使う場合、EC2では下記のようなコマンドでcomposerのインストールができます。

cd ~
sudo curl -sS https://getcomposer.org/installer | sudo php
sudo mv composer.phar /usr/local/bin/composer
sudo ln -s /usr/local/bin/composer /usr/bin/composer

sudo amazon-linux-extras install php8.0 mariadb10.5
sudo yum install php-mbstring
sudo yum install php-xml
ログインするとコメントできます