3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWSを使ってシングル構成のブログサービスを構築しました

Last updated at Posted at 2021-09-18

この記事を書いている私について

インフラ系PMO歴半年でAWSクラウドプラクティショナーを取ったばかりの私が
AWS CloudTechという動画学習サービスに参加し、AWSエンジニアを目指すための備忘録となります:fire:

この記事を書こうと思った経緯

今回構築したブログサービスに掛かる費用を事前に調査しており、
この記事はその構築実践編となります。

前回の記事はコチラ↓↓↓
AWS CloudTech ハンズオン1に必要な費用の調べ方についてまとめました

本記事の目標

クライアントからEC2にアクセスし、WordPress画面を確認します。
※コマンド等の詳細はAWS CloudTechで確認できます。

事前準備

Windowsの場合はTeratermが必要となります。
インストール方法はさっとん(@satton6987)さんの動画が参考になります↓↓↓

【現役インフラエンジニア が解説】ターミナルソフト「TeraTerm」の初期設定方法とは??

Macの場合はOS標準のターミナルアプリでSSHが使用できるので、追加のインストールは不要です

今回の構成図

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3436353930362f64353034373864302d613535362d363635342d343461312d393438306234346639.png

インターネットゲートウェイ、EC2、RDSとシンプルな構成です。
EC2のみの構成でも可能ですが、RDSとの接続も学びたいと思います。

構築の流れ

以下の流れで構築を進めます。

・VPC作成
・サブネット1作成
 -パブリック、プライベート
・パブリックサブネットにEC2を作成
・セキュリティグループ作成
・インターネットゲートウェイ設置
・ルートテーブル設定
・SSH接続
・サブネット2作成
 -パブリック、プライベート
・RDS作成
・WordPressインストール
・WordPressを確認する
・サービス停止
・[補足]EC2再起動後に発生する問題を回避するためには

VPC作成

マネジメントコンソールを開き、VPCを選択します。

・サブネット1作成

先ほど作成したVPCにプライベートとパブリックサブネットを作成します。

EC2を作成

EC2インスタンスを作成します。
マシンイメージ:Amazon Linux2 AMI
インスタンスタイプ:t2.micro
※自動割り当てパブリックIPを有効にします。

ストレージ:汎用SSD(gp2)
キーと値の設定を行います。

セキュリティグループ作成

ウェブサーバーの下記のセキュリティグループを作成します。

・SSH
ポート範囲:22 ソース:0.0.0.0/0

・HTTP
ポート範囲:80 ソース:0.0.0.0/0,::/0
※::/0はipv6の設定であるため不要ですが、ここでは入っていても構いません

キーペアの作成

セキュリティグループ作成後、新しいキーペアを作成します。
ダウンロードして無くさないようにしましょう。

インターネットゲートウェイ設置

VPCにアタッチします。

ルートテーブル設定

現在はターゲットがローカルとなっているため通信出来ない状態になっています。
プライベートサブネットのルートテーブルを設定し通信できるようにします。

次に、プライベートサブネットのルートテーブルを作成します。
今の状態だと、パブリックサブネットと同様のルートが関連付けられているため、ルートテーブルの関連付けを編集します。

22番ポートが開いており、ソースが0.0.0.0/0になっていることを確認しましょう。

SSH接続

PCからteratermを起動し、EC2にssh接続します。

※ssh接続については下記の記事を参考にさせていただきました。
【AWS】EC2でAmazon Linux 2を構築しSSH接続してみよう

インスタンスを選んだ状態で接続を選択するとブラウザ上からでもSSH接続可能です。

次に、先ほど作成したキーペアファイルを指定すればEC2にログイン完了です。

サブネット2作成

RDSの構築にはアベイラビリティゾーンが2種類必要となるため
アベイラビリティゾーン1cのプライベート、パブリックサブネットを作成し、サブネットグループのグルーピングを行います。

RDS作成

エンジンのタイプ:MySQL
テンプレート:開発/テスト
※今後の冗長化を考えると開発/テスト用を選択します。

DBインスタンスサイズ:db.t2micro
ストレージ:汎用(SSD)

可用性と耐久性:今回はシングル構成であるため、スタンバイインスタンスを作成しないでくださいを選択します。
VPCセキュリティグループ:新規作成、アベイラビリティゾーンは1aを選択する。

RDS作成後、先ほど作成したセキュリティグループを設定します。

WordPressインストール

TeratermよりEC2にログインします。

管理者権限にスイッチし、appach、php、mysqlをインストールし、その後WordPressをインストールします。

WordPress画面を確認する

この状態でパブリックIPをアドレスバーに張り付けてクリックすると
WP初期設定の画面が表示されることが確認できます。
WP側の設定も行うと、無事ブログサイトの開設完了です。

サービス停止

■EC2(オンデマンド)→停止中にすること
料金は、インスタンスが開始してから、それが終了または停止するまでの、各インスタンスについて使用されるインスタンス時間当たりの料金となるため、使わないときは必ず停止中にしましょう。

■RDS(オンデマンド)→停止中、もしくはスナップショットを取って削除すること
時間単位で、計算処理能力に対して料金が発生します。使わないときには必ず停止しましょう。
 *停止を行ってもRDSは7日後に復旧されるためサービスの構築が終わって不要となったらRDSは削除しましょう。

スナップショットを取って削除するのも手です。
 *スナップショット保管にも課金されてしまうため不要なスナップショットは削除したほうがいいです。

EC2再起動後に発生する問題を回避するためには

EC2を再起動すると、その後はブログ表示に時間が掛かり、表示が崩れることがあります。

原因:
WordPressの仕様です。
インストールされた際に、サイトのデータベースにサイトのURL情報が保存されるのですが、
再起動時にインターネットゲートウェイのパブリックアドレスが変更されてしまいます。
その為、実際にサイトにアクセスするURLとサイトに保存されているURLに不整合が起きるため発生するために発生する不具合です。

解決策:
データベースに保存しているURLを実際にアクセスするURLに変更することで解決します。
 

請求書(無料枠あり)

請求書はコチラです。
ブログサイトの開設完了後にすぐEC2とRDSを停止しています。

$0.02しかかかっていないことが分かりました。

image.png

最後に

前回の記事はコチラ↓↓↓
AWS CloudTech ハンズオン1に必要な費用の調べ方についてまとめました

AWS CloudTechの課題としてこれらが残っていますので、
やったことを今後のQiita記事にして発信していきたいと思います。

これから始められる方の参考になれば嬉しいです。

今後の学習予定↓↓↓
・ブログサービスにスケーラビリティを持たせる
・独自ドメインの設定と障害時の設定
・HTTPS通信でのアクセス
・キャッシュサーバーの配置
・CloudFormationの作成、更新
・Lamda関数
・Docker

内容に不備がございましたら、ご指摘いただけますと幸いです。

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

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?