📔

AWSでブログサービスを構築してみる

6 min read

やりたいこと

  • シングル構成でAWSにWordPressのブログサイトを構築する。
  • EC2単体でも実現可能ではあるがDBにRDSを利用する。EC2からMySQLクライアントを利用する。
  • 最終的にブログページが問題なく閲覧できればゴール

構成のイメージ

手順

前提としてアカウント登録や作成などの初期設定は終えているものとする。
MacOS BigSurにて実地。

VPCの作成

あらかじめリージョンは「アジアパシフィック (東京)ap-northeast-1」を選択しておく。
VPCダッシュボードへ移動して、以下の設定でVPCを作成する。

名前タグ:MyVPC1(任意)
IPv4 CIDR ブロック:10.0.0.0/21
残りの項目はデフォルト

サブネットの作成

パプリックサブネットとプライベートサブネットをそれぞれ一つずつ作成します。

以下の設定でパブリックサブネット作成
サブネット名:PublicSubnet1(任意)
VPC:MyVPC1
アベイラビリティゾーン:ap-northeast-1a
IPv4 CIDR ブロック:10.0.0.0/24

以下の設定でプライベートサブネットを作成
サブネット名:PrivateSubnet1(任意)
VPC:MyVPC1
アベイラビリティゾーン:ap-northeast-1a
IPv4 CIDR ブロック:10.0.2.0/24

EC2の作成

ECダッシュボードへいって次のように作成する。
Amazon マシンイメージ (AMI):Amazon Linux 2 AMI
インスタンスタイプの選択:t2.micro
インスタンスの詳細設定は下記のように
ネットワーク:MyVPC1
サブネット:PublicSubnet1
自動割り当てパブリック IP:有効
ほかはデフォルトで次のステップへ
ストレージの追加はデフォルトで次のステップへ
タグの追加は以下のように設定
キー:Name
値:WebServer1(任意)
セキュリティグループは新しく作成する設定は以下のように
セキュリティグループ名:Web-SG-1(任意)
説明:Web-SG-1
ルールは追加する
タイプ:HTTP

確認と作成へ。項目を確認して起動する。
既存のキーペアがある場合はそのまま使用、ない場合は作成
今回は「test-keypair.pem」作成、ダウンロードしておく

インターネットゲートウェイのアタッチ

VPCダッシュボードへ移動
左メニュー→インターネットゲートウェイを選択
インターネットゲートウェイの作成をクリック
以下の名前で作成
名前タグ:My-internet-GW(任意)
右上のVPCのアタッチをクリック、VPCにアタッチする
使用可能なVPC:MyVPC1

ルートテーブルの設定

PublicSubnet1→ルートテーブルのタブを開く
ルートテーブル: rtb-0ee3efed5aa040e52みたいなの部分を開く
ルートのタブを開く→ルートの編集を押す
ルートの追加、以下のように設定して保存
Internet Gatewayを選んで「My-internet-GW」を追加する、送信先は「0.0.0.0/0」
(VPC以外のルートは全てインターネットへ向く設定になる)
セキュリティグループの方を確認する
EC2ダッシュボードへ移動→作成したインスタンスを選択→セキュリティのタブを開く
インバウンドルールが以下のようになっていればOK

EC2インスタンスにSSH接続

ターミナル起動→キーペアのあるフォルダへ移動
ファイルの権限が400になっているかを確認

ls -l test-keypair.pem
rw-r--r--@ 1 username staff 1704 3 7 00:24 test-keypair.pem

↑は権限が644なので400へ変更する必要がある

chmod 400 test-keypair.pem
ls -l test-keypair.pem
-r--------@ 1 username  staff  1704  3  7 00:24 test-keypair.pem

SSH接続する。@以降のIPアドレスはインスタンス詳細のパブリックIPアドレスをコピーしてくる。(インスタンスを再起動したりすると毎回IPアドレスが変わるので注意)
初回の質問はyesでOK

ssh -i test-keypair.pem ec2-user@xxx.xxx.xxx.xxx

サブネットグループの作成

RDSを構築する前にサブネットグループが必要である。サブネットグループは2つ以上のサブネットをグループにし、複数のAZにまたがっている必要があるため先にサブネットを追加する。パプリックサブネットとプライベートサブネットを一つずつ追加する。

パブリックサブネットを追加
サブネット名:PublicSubnet2
VPC:MyVPC1
アベイラビリティゾーン:ap-northeast-1c
IPv4 CIDR ブロック:10.0.1.0/24

プライベートサブネットを追加
サブネット名:PrivateSubnet2
VPC:MyVPC1
アベイラビリティゾーン:ap-northeast-1c
IPv4 CIDR ブロック:10.0.3.0/24

RDSの作成

RDSのダッシュボードを開く
サブネットグループを選択→DBサブネットグループを作成をクリック
サブネットグループを作成する
名前:MysubnetGroup
説明:MysubnetGroup
VPC:MyVPC1
アベイラビリティゾーン:ap-northeast-1a ap-northeast-1c
サブネット:10.0.2.0/24 10.0.3.0/24
左メニューのデータベースを選択→データベースの作成をクリック
データベースの作成方法:標準作成
エンジンのオプション:MySQL
テンプレート:開発/テスト or 無料利用枠(料金気になる人はこっち)
DB インスタンス識別子:database-1(そのまま)
マスターユーザー名:wordpress
マスターパスワード:任意
DBインスタンスサイズ:デフォルトは料金が高いので「バースト可能クラスのt2.micro」を選択(最新はt3.microなので以前の世代のクラスを含めるを有効にする)
ストレージ:デフォルトのままでOK
可用性と耐久性:スタンバイインスタンスを作成しないでください(シングル構成なので)
Virtual Private Cloud (VPC):MyVPC1
追加の接続設定
サブネットグループ:mysubnetgroup
パブリックアクセス可能:なし(ありにするのはかなり稀なケース)
VPC セキュリティグループ:新規作成
新しい VPC セキュリティグループ名:RDS-SG-1
アベイラビリティーゾーン:ap-northeast-1a
データベースポート:そのまま(3306)
追加設定
最初のデータベース名:wordpress
残りはデフォルトのままでOK
概算月間コストが表示される

RDSは停止することもできるが7日たつと自動復旧するので注意。使用しなくなったら削除するのがいい。
データベースを作成
ステータスが利用可能な状態まで待つ
RDSの起動は時間がかかるので気長に待ちましょう!

RDSのセキュリティグループを設定

VPCのダッシュボードへ移動→セキュリティグループを選択
検索で「RDS」と入力すると「RDS-SG-1」が出るのでこれを編集
インバウンドルールはいまこうなっているがウェブサーバーからだけの通信に許可したい。
セキュリティの観点から接続元は最小限にする必要がある。

インバウンドルールの編集を選択
もとからあるIPアドレスを消去
「sg」と入力すると、Web-SG-1がでてくるのでそれを選択、ルールを保存する
以下のように変更されていればOK

WordPressのインストール

ターミナルで以下のコマンドを実行していく。
roor権限へスイッチ

sudo  su -

yumパッケージを最新の状態に更新

yum -y update

phpのインストール

amazon-linux-extras install php7.2 -y

mysqlクライアント、Apache、phpで必要なものを追加でインストール

yum -y install mysql httpd php-mbstring php-xml gd php-gd

Apacheが再起動後も自動的に起動するようにする

systemctl enable httpd.service

Apacheの状態をスタート状態にする

systemctl start httpd.service

ステータスが「active (running)」か確認

systemctl status httpd.service

WordPressをカレントディレクトリにダウンロード

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

ダウンロードできたか確認

ls -l
-rw-r--r-- 1 root root 16456005 Mar 10 06:00 latest-ja.tar.gz

tar.gz形式から展開

tar zxvf ~/latest-ja.tar.gz

展開できたか確認

ls -l
-rw-r--r-- 1 root root 16456005 Mar 10 06:00 latest-ja.tar.gz
drwxr-xr-x 5 1006 1006     4096 Mar 10 06:00 wordpress

wordpressフォルダのコピー&移動 → 「/var/www/html」へ

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

「/var/www/html」以下をApacheの所有者、ユーザーグループの設定に権限を変更

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

ブラウザで確認
WebServer1のパブリックIPアドレスをコピーしてブラウザに貼り付ける
ワードプレスの初期設定の画面が表示される
さぁ、はじめましょうを押して以下の設定する
データベース名:wordpress
ユーザー名:wordpress
パスワード:RDSの設定項目で設定したパスワード
データベースのホスト名:データベースのエンドポイントを設定する。
RDSダッシュボード→database-1を選択
接続とセキュリティタブのエンドポイントをコピーして貼り付け
送信→インストールを実行をクリック
サイトのタイトル:任意
ユーザー名:wordpress(任意)
パスワード:任意
メールアドレス:任意
WordPressのインストールをクリック
先程設定したユーザー名とパスワードでログイン
家マークおしてブログが表示されたら成功!!!!

後片付け(今後使用しない場合)

  • RDSの削除は特に料金がかかるので使用しないときは削除したほうがいい。削除するときにスナップショットを削除前の状態を保存できる。
  • 起動したEC2インスタンスを終了しておく。こちらも再利用する場合はAMIを作成しとくと便利
  • VPC削除するとサブネットもインターネットゲートウェイの削除できる。

最後に

何回か手を動かして一通りやってみると次からサクッと作れるようになるのがうれしい!

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

https://aws-cloud-tech.com

Discussion

ログインするとコメントできます