カテゴリー: 初心者向け

AWS勉強会でWeb3層構成を作る前に勉強したこと

筆者:ITI2-1 松本拓

〇本番の構成

詳細はこちらの記事で
https://dis-iti2-tech.net/?p=1

〇筆者のスキルレベル

  • AWSクラウドプラクティショナー取得済み(およそ2年前)
  • AWS業務経験は無し
  • ハンズオンの経験は少々(VPC作成、インスタンスにWebサーバーを設定する程度)

上記の通り業務などではAWSに触れたことのない、さらにサーバーもほとんど触った事のないほぼ初心者の私が実際に上の図のようなWeb3層構成を作成する前に学んだことはWebサーバーとアプリケーションサーバーの連携でした。

〇本番構成作成前の事前練習

大塚係長からの提案で実際の本番環境を構築する前に単一AZにインスタンスを立て、Wordpressをインストールするまでの手順を各メンバーでリハーサルとしてやってみることになりました。

↓この構成です。

大塚係長から参考になるサイトを教えていただき実際に環境を作れましたが、しっかりと理解できたかというと手順通りに進めてできたという感じでした…自分の力というかサイトの手順が分かりやすかったと思います。

※参考サイト

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/hosting-wordpress.html

〇理解を深めるための自習

さらに理解を深めるため自分でWebサーバーとアプリケーションサーバーの連携を実践してみてはとご提案を頂いたので

いろいろと調べて進めようとしましたが、文章だけ読んでもきっと理解できないだろうという自分への不信感から

分かりやすい動画を探すことに…

そしてYouTubeで参考になりそうな動画を見つけました。

本番の構成とは違いますが、AWSでEC2インスタンスを立ち上げてWebアプリケーションサーバーを構築するという内容なので、とりあえず動画を観ながら実際に手を動かしてみることに…

チャンネル

・【いちふくのときたまエンジニア配信】

動画

・【Linux技術動画】Webアプリケーションサーバ構築Part1 (Apache&Tomcat) ※約30分

・【Linux技術動画】Webアプリケーションサーバ構築Part2 (Apache&Tomcat) ※約20分

多少の苦戦はしましたが、想定通りに動く構成ができ達成感に浸ることができました。

この学習によりWebアプリケーションサーバーの構成について理解が深まったと思います。

〇本番のALB作成のための予行練習

本番構成の作成はリソースごとに担当分けされ、私はALB(ロードバランサー)の作成を担当することになりました。

ALBに関しては下記のような構成を作成して予行練習をしました。

Auto Scaling Group、ターゲットグループの作成など苦戦した部分もありましたが、ALBを経由してEC2にアクセスする構成を作成することができました。

Auto Scalingに関しては設定が上手くいっていない部分があったので、また時間のある時に実施してみたいと思います。

〇まとめ

勉強会では自分のレベルにあった勉強法のアドバイスなどをいただき、理解を深め実際のAWS環境でリソースを作成していくので、初心者の方でも気兼ねなく参加できるようになっています。

AWSに少しでも興味がある方は、ご都合が合うときに参加してみてはいかがでしょうか。

AWSを用いたWeb3層構成のWordPress構築

勉強会参加メンバーで、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を構築する方法を簡単に紹介しました。さらに良い構成にできるよう運用していきたいと思います。

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

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