勉強会参加メンバーで、AWSを用いてWordPress環境を構築しましたので、ご紹介します。

背景

いまご覧になっているこのエンジニアブログを作成してみようという会話を発端に、世界中で広く利用されているCMSの1つであるWordPressを利用しようと考えました。
今回は、AWSを利用して、Web3層構成のWordPressを構築する方法について紹介します。

構成

  • VPCのネットワークに6つのサブネット
  • リージョンは、ap-northeast-1
  • AZは、ap-northeast-1aとap-northeast-1c
  • パブリックサブネットにALB
  • プライベートサブネット1つ目にWebAPサーバとしてのEC2
  • プライベートサブネット2つ目にDBサーバとしてのRDS

手順

  1. AWSでVPCを作成する。
  2. VPCの中に6つのサブネットを作成する。その中には、1つのパブリックサブネットと2つのプライベートサブネットがあります。プライベートサブネットの1つには、EC2インスタンスを、もう1つには、RDSを作成します。
  3. ALBを作成して、パブリックサブネットに配置します。
  4. EC2インスタンスにWordPressをインストールし、プライベートサブネットに配置します。
  5. RDSにWordPressのデータベースを作成します。
  6. EC2インスタンスとRDSインスタンスの間に必要なポートを開けます。

詳細手順

以下に、より詳細な手順を紹介します。

1.AWSでVPCを作成する

まず、AWSの管理コンソールにログインし、新しいVPCを作成します。

VPCは、仮想プライベートクラウドを作成するためのサービスであり、AWS上のリソースをグループ化してネットワーク上で独立した環境を作成します。VPCを作成する際には、IPアドレス範囲を指定し、サブネットを作成することができます。今回は、10.0.0.0/16を使用。

以下の通り、VPCが作成されました。

2.VPCの中に6つのサブネットを作成する

VPC内に、6つのサブネットを作成します。

これには、1つのパブリックサブネットと2つのプライベートサブネットが2つのAZ分で計6つあります。
以下の通り作成しました。

パブリックサブネットには、Application Load Balancer(ALB)を配置します。ALBは、Webトラフィックを分散し、ユーザーからのリクエストを適切なEC2インスタンスにルーティングするためのサービスです。

プライベートサブネットの1つには、EC2インスタンスを、もう1つには、RDSを作成します。

3.ALBを作成して、パブリックサブネットに配置する

次に、ALBを作成してパブリックサブネットに配置します。ALBを作成する際には、EC2インスタンスの登録とターゲットグループの作成を行います。

ロードバランサーの作成から、必要な情報を入力し作成します。

ターゲットグループは、ALBからEC2インスタンスにトラフィックを転送するための仕組みです。

4.EC2インスタンスにWordPressをインストールし、プライベートサブネットに配置する

次に、EC2インスタンスにWordPressをインストールしてプライベートサブネットに配置します。EC2インスタンスを起動する際には、AMI(Amazon Machine Image)を指定します。AMIは、EC2インスタンスを起動するために必要なOSやアプリケーションがインストールされた仮想マシンイメージです。EC2インスタンスには、WordPressと必要なプラグインをインストールし、必要に応じてテーマを変更します。

※今回は、AutoScailingを利用するため、起動テンプレートのユーザーデータに以下のように、ワードプレスをインストールするコマンドを設定している(一部抜粋)

yum -y update
amazon-linux-extras install php7.2 -y
yum -y install mysql httpd php-mbstring php-xml gd php-gd
systemctl enable httpd.service
systemctl start httpd.service
systemctl status httpd.service
wget http://ja.wordpress.org/latest-ja.tar.gz ~/
tar zxvf /latest-ja.tar.gz

5.RDSにWordPressのデータベースを作成する

次に、RDSにWordPressのデータベースを作成します。RDSは、AWSが提供するリレーショナルデータベースサービスであり、MySQLやPostgreSQLなどのエンジンをサポートしています。

WordPressのデータベースを作成するには、RDSを作成し、適切なDBエンジンを選択し、必要な設定を行います。RDSインスタンスの作成時には、DBインスタンス名、マスターユーザー名、パスワードなどの設定が必要です。

6.EC2インスタンスとRDSインスタンスを接続する

EC2インスタンスとRDSインスタンスを接続するために、RDSのエンドポイントをEC2インスタンスからアクセスできるようにする必要があります。

これには、セキュリティグループを設定することが必要です。セキュリティグループは、AWS上のリソースに対して、どのIPアドレスからアクセスを許可するかを設定するための仕組みです。

※今回は、AutoScailingでスケールアウトするEC2に設定を適用するため、起動テンプレートのユーザーデータに以下のようにコマンドを設定している(一部抜粋)

# Update wp-config.php file
sed -i -e "s/define( 'DB_NAME', '.*' );/define('DB_NAME', '$DB_NAME');/" $WP_CONFIG
sed -i  -e "s/define( 'DB_USER', '.*' );/define('DB_USER', '$DB_USER');/" $WP_CONFIG
sed -i -e "s/define( 'DB_PASSWORD', '.*' );/define('DB_PASSWORD', '$DB_PASSWORD');/" $WP_CONFIG
sed -i -e "s/define( 'DB_HOST', '.*' );/define('DB_HOST', '$DB_HOST');/" $WP_CONFIG

まとめ

今回は、AWS上にWordPressを構築する方法を簡単に紹介しました。さらに良い構成にできるよう運用していきたいと思います。

また、他の記事では、各機能の詳細な構築方法やトラブルシューティングの内容についても、紹介できればと思います。

最後まで読んでいただきありがとうございました。