【AWS】基本的なブログサービス(シングル構成)を構築してみた。


はじめに

この記事はインフラ初心者の私がAWS Cloudtechを通して学んだことを
記録&アウトプットするための備忘録です。

ゴール

自宅PCからインターネット経由でWord PressがインストールされたEC2にアクセスしてブログ閲覧ができるようにする。

目的

・RDSの作成方法の理解
・WordPressの構築方法の理解
・基本的なシングル構築方法の理解

環境

・Windows10
・TeraTerm Version 4.105
・Word Press Version 5.7

環境構築

今回作成する構成は以下の通り。

手順

VPC作成からEC2ログインまで

ざっくりとした手順(詳細手順を確認したい方は以前書いたこちらの記事を参照してください)

①VPCの作成
②AZ1-aにてPublicSubnet、PrivateSubnetを作成
③PublicSubnet内にEC2作成、セキュリティグループの設定(Web-SG-1)
④WebServer-1にログインするためにインターネットゲートウェイを作成
⑤VPCにアタッチ
⑥ルートテーブル編集(宛先がローカル以外の通信は全てIGWに向けるように設定する)
⑦セキュリティグループの確認(ssh接続をするため22番ポートが空いているかを確認)
⑧ssh接続

補足
※対象のインスタンスを選択し、[接続]→EC2 InstanceConnectを選択し、[接続]クリックすると
ブラウザ上でssh接続ができる

■現在の構成図

RDSの作成

Subnet Groupの作成

RDSを作成するためにはSubnet Groupを作成する必要がある。
※シングル構成であろうとsubnetグループが存在していないとRDSは構築できない。
※subnetグループを作成するためには2つ以上のsubnetをグルーピングかつsubnetは複数のAZにまたがっている必要がある。

①AZ1cにPublic SubnetとPrivate Subnetを作成する。

②サービスからRDSを選択

③左ペインから「サブネットグループ」を選択し、[DBサブネットグループを作成]をクリック

④設定を入力して[作成]をクリック

項目 概要
VPC Subnet Groupを作成するVPCを選択
アベイラビリティーゾーン Subnet Groupを作成するAZを選択
サブネット Subnet Groupに含めるSubnetを選択

データベースの作成

①左ペインをからデータベースを選択して[データベースの作成]をクリック

②各種設定を入力し、[データベースの作成]をクリック

■データベースの作成
今回は標準作成を選択。

■エンジンのオプション
今回はMySQLを選択。

■テンプレート
今回は無料利用枠を選択

■設定
各種入力。

■DB設定
今回はバースト可能クラス:db.t2.microを選択

■ストレージ
今回はデフォルト設定。

■可用性と耐久性
今回は「スタンバイインスタンスを作成しないでください」を選択

■接続
今回は以下の設定を入力。

■追加設定-1
データベース名を入力し、その他はデフォルト設定。

■追加設定-2

③作成したDBのステータスが利用可能になっていることを確認する。

④作成したSG(RDS-SG-1)のインバウンドルールを編集する

インバウンドルールのソースに「Web-SG-1」を指定して、[ルールを保存]をクリック。
こうすることでWeb-SG-1に所属しているもの(今回ではWebServer1)からしかアクセスできなくなる。

■現在の構成図

WordPressのインストール

①ec2-userからrootに権限切り替え
②yum -y updateでパッケージを最新の状態にアップデートする

yum -y update 

③Apache,MySQL,PHP等必要なものをインストールする。

amazon-linux-extras install php7.2 -y
yum -y install mysql httpd php-mbstring php-xml gd php-gd

④Apacheのサービスを再起動後も自動的に起動する用に設定する。

systemctl enable httpd.service

⑤Apacheのサービスを起動する。

systemctl start httpd.service

⑥(念の為、)Apacheサービスの起動状態を確認する。

systemctl status httpd.service

⑦WordPressをダウンロードする
以下のコマンドでWordPressをダウンロードする

wget http://ja.wordpress.org/latest-ja.tar.gz ~/

WordPressのサイト上で以下の操作を行うのと同じみたいですね。

llでWordPressの最新ファイルが存在することを確認。

※wgetコマンドは指定したURLに存在するファイルをダウンロードするコマンド

■参考URL
wgetコマンド

⑧圧縮ファイルを展開する
以下のコマンドで圧縮ファイルを展開する。

tar zxvf ~/latest-ja.tar.gz

※-zオプションは無くても展開できました。

■tarコマンドのオプション

オプション 説明
-v(--verbose) アーカイブ結果を表示する。
-x(--extract) アーカイブされたファイルを解凍し展開・復元を行う
-f(--file=ARCHIVE) アーカイブファイル名を指定する
-z gzip方式の圧縮または展開を同時に行う(省略可能っぽい)

※tarコマンドはアーカイブを作成/展開するコマンド

■参考URL
tarコマンド

⑨展開したwordpressディレクトリをドキュメントルートにコピーする
llで確認するとwordpressディレクトリができている。

これを以下のコマンドでドキュメントルートにコピーする。

cp -r ~/wordpress/* /var/www/html/

⑩所有者とグループを変更する
以下のコマンドで/var/www/htmlの所有者とグループをapacheに変更する

chown apache:apache -R /var/www/html

※chownはファイルやディレクトリの所有者を変更するためのコマンド
■参考URL
chownコマンド

ブラウザでWordpressの確認

①インスタンスのパブリックIPアドレスをアドレスバーに貼り付けてEnterを押す

WordPressの初期設定ページが表示されることを確認し、[さあ、始めましょう]を選択

②赤枠箇所を入力し、[送信]をクリック

※データベースのホスト名はRDSのエンドポイントの箇所からコピー&ペースト

③[インストール実行]をクリック

④各種項目を設定し、[WordPressをインストール]を選択

⑤インストール後、WordPressにログインできることを確認

■現在の構成図

終わりに

今回は基本的なシングル構成の構築方法について学びました。
今回のハンズオンを通してRDSの作成やWordPressの構築といったことができるようになりました。
以前学んだVPCやEC2の知識が身についているように実感できたのが嬉しかったです。

講座の内容以外にも何でこうするのか?や各コマンドの詳細を調べることで理解が深まりました。
疑問に思っていたことが解決することで「勉強楽しい!」と思えるようになりました。

次は冗長構成での環境構築にも挑戦します。

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com

おまけ:ドキュメントルートとは?

今回、なぜ/var/www/htmlに/wordpress配下のファイルをすべてコピーする必要があるのかがわからなかったため調べてみました。

調べた結果、以下のように理解しました。

単語 説明 設定ファイルの格納場所
ドキュメントルート Webサーバで公開するコンテンツを配置するディレクトリ。 /etc/httpd/conf/httpd.conf

・ドキュメントルートでApacheがどこのディレクトリに置かれたファイルを Webサーバとして公開するかを決めており、対象のディレクトリが"/var/www/html"だったと理解。
・CentOSのhttpdではデフォルトのドキュメントルートとして"/var/www/html"が設定されている。

■参考URL
今さら聞けない!Webサーバーの仕組みと構築方法
DocumentRootディレクティブ