この度、かねてより検討していたホームページの公開に向け、WEBサーバとしてアマゾンウェブ サービス(AWS)を利用することにしました。
AWSは、通信販売で有名なAmazon.com, Inc.を親組織とする、包括的なクラウドプラットフォームです。コンピューティングリソースやストレージ、データベースといった基本的なインフラに加え、機械学習、AI、データレイクと分析、IoTといった最先端のテクノロジーも提供されており、クラウド上で多様なアプリケーションを容易に構築できる点が魅力です。
個人利用においてAWSは、高性能なレンタルサーバとしての用途が多い一方で、その豊富なサービスの中から、自身の目的に必要なものを選択し、適切に組み合わせる必要があります。
幸いなことに、私は2023-11-27にAWS認定ソリューションアーキテクト – アソシエイト(SAA)の資格を取得しており、AWSの主要なサービスについては一通りの知識を有しています。しかしながら、資格取得が第一目標であったため、実際にAWSの環境を操作する時間は限られており、資格取得後も業務でAWSを利用する機会はありませんでした。
そこで今回、資格取得の際に受講したUdemy講座のハンズオン講義を参考に、AWS上にWEBサーバを構築する試みに挑戦しました。本稿では、その具体的な手順と、実際に手を動かして得られた学びについて共有したいと思います。
この記事を理解するための必要条件
- 基本的なパソコン操作ができる
- AWSにログインするところまで、AWS環境のセットアップができている
- 主要なAWSサービスについて理解できるだけのWEB知識、PC知識を持っている
参照ページ
①これだけでOK! AWS 認定ソリューション アーキテクト – アソシエイト試験突破講座
https://www.udemy.com/course/aws-associate/learn/lecture/29964442?start=45#questions
②とりあえずWordPressをAWS EC2で動かす
https://zenn.dev/yuya_morimoto/articles/529442a2bd9ab7
➂VPC+EC2+Apache+MariaDBでWordPressを構築し、独自ドメイン+https化 – Qiita
https://qiita.com/JUN_WEB_FREE/items/f8465f71059a051743b2
④ドメインとは?メリット・種類・決め方をかんたんに解説
https://www.onamae.com/clever/about/domain.html
構成図概要

ドメイン:mkurauchi99.com
サイトURL:https://mkurauchi99.com
Region:東京リージョン
VPC:udemy
IPv4 CIDR:10.0.0.0/16
ELB(ALB):udemy-elb
Available Zone A:ap-northeast-1a
Public subnet A:パブリックサブネットA
IPv4 CIDR:10.0.0.0/24
EC2 – WebServer1:Public-1a
Public IP Address:XX.XX.XX.XX
Private subnet A:プライベートサブネットA
IPv4 CIDR:10.0.1.0/24
EC2 – MarioDB:Private-1a
Private IP Address:10.0.1.93
Available Zone B:ap-northeast-1c
Public subnet B:パブリックサブネットC
IPv4 CIDR:10.0.2.0/24
EC2 – WebServer2:Public-1c
Public IP Address:XX.XX.XX.XX
構成図詳細
1. Region
Region:東京リージョン
・AWS では、北米、南米、欧州、中国、アジアパシフィック、南アフリカ、中東などのリージョンを含む、複数の地理的なリージョンを整備している。
・リージョンに応じて価格と利用可能なサービスが少し異なる。
・各AWS リージョンは、1 つの地理的エリアにある、隔離され物理的にも分離された複数のAZ によって構成される。
・1つのリージョンにはユーザーが利用可能なAZが2つ以上構成されている。その中でユーザーが選択できないAZもあり、3つ以上のAZが存在する。
・日本には東京と大阪の2つのリージョンが設置されている。
・正式なリージョン名はアジアパシフィック(東京)だが、東京リージョンと呼ばれる。
2. アベイラビリティゾーン(AZ)
ap-northeast-1a
ap-northeast-1c
・1 つのAWS リージョン内でそれぞれ切り離され、冗長的な電力源、ネットワーク、そして接続機能を備えている1 つ以上のデータセンターであり、論理的データセンターのグループとなっている。
・AZは1つ以上のデータセンターで構成されており、AWSリソースを提供するサーバーが設置されている。
・AZによって、単一のデータセンターでは実現できない高い可用性、耐障害性、および拡張性を備えた本番用システムの運用が可能になる。
・各AZには個別の電力源、冷却システム、物理的セキュリティが備わっており、AZ間は冗長で低レイテンシーなネットワークを介し接続されている。
・アプリケーションが複数AZを利用している場合は停電、落雷、竜巻などの問題から保護することができる。
・同じリージョンにある各AZはそれぞれ他のAZから物理的に意味のある距離(数キロメートル)があるものの、互いは100 km (60 マイル) 以内に配置されている。
東京リージョン(ap-northeast-1)には、4つのAZが存在します(2025年4月時点)。
ap-northeast-1a
ap-northeast-1b(※)
ap-northeast-1c
ap-northeast-1d
(※)ap-northeast-1bは、キャパシティー(設備容量)の事情により利用制限があります。その場合、他の3つのAZから選択してサービスを利用します。
3. Virtual Private Cloud (VPC)
VPC名:udemy
IPv4 CIDR:10.0.0.0/16
VPCは、AWSクラウド内に論理的に分離されたセクションを作り、ユーザーが定義した仮想ネットワークを構築するサービスである。
・リージョン内に5つまでVPCを設定可能(上限緩和申請可能)
・VPCはリージョンを超えることはできない。
・ 任意の IP アドレス範囲(CIDR)を選択して仮想ネットワークを構築
・ 最小サイズは/28 ⇒ 利用可能なIPアドレス数 16
・ 最大サイズは/16 ⇒ 利用可能なIPアドレス数 65536
・VPCはプライベートIPアドレスによってネットワークレンジを設定
4. サブネット
Public subnet A:パブリックサブネットA
IPv4 CIDR:10.0.0.0/24
Private subnet A:プライベートサブネットA
IPv4 CIDR:10.0.1.0/24
Public subnet B:パブリックサブネットC
IPv4 CIDR:10.0.2.0/24
・サブネットマスクでアドレス範囲をグループ化することで、見つけやすくする。このサブネットマスクによるグループ化されたアドレス範囲内をサブネットと呼ぶ。
・VPCがネットワークの範囲を規定し、さらにサブネットに範囲を分割して利用する。VPCとサブネットにはCIDR (IPアドレス範囲)が付与され、ネットワークレンジが決まる。
・サブネットは1つのAZに配置される。インターネットゲートウェイへのルーティングの有無でサブネットのタイプが決まり、インターネットゲートウェイへのルートが設定されると「パブリックサブネット」、されないと「プライベートサブネット」になる。

5. EC2 仮想サーバー
EC2 – WebServer1:Public-1a
Public IP Address:XX.XX.XX.XX
EC2 – MarioDB:Private-1a
Private IP Address:10.0.1.93
EC2 – WebServer2:Public-1c
Public IP Address:XX.XX.XX.XX
Amazon EC2は、Amazon Elastic Compute Cloud(以下、Amazon EC2)の略で、AWSが提供する「仮想サーバサービス」である。Amazon EC2を利用することで、従来のような物理サーバの構築や環境構築作業をすることなく、手軽に仮想サーバを用意することができる。
EC2ではOSからCPU、メモリ、ストレージなどの構成を選択して、仮想サーバーを起動することができる。EC2の利用する単位を「インスタンス」と呼び、任意のAZに「インスタンス」を立ち上げてサーバーとして利用する。
1) WebServer1:Public-1a
①EC2仮想サーバーの作成
・インスタンス名「Public-1a」
・Amazon Linux 2 AMIを選択
・インスタンスタイプ「t2.micro」を選択
・キーペアの作成(PEMファイルをダウンロード)
・VPC「udemy」
・サブネット「パブリックサブネットA」
・パブリックIPの自動割り当てを有効にする
②SSHで仮想サーバーへ接続
・EC2インスタンス作成時にダウンロードしたキーペアファイルを”~/.ssh/{KEYPARE}”に保存
➂Web Serverソフトをインストール
・SSH接続をした状態でApacheをインストールする
・Apacheを起動する
・インスタンスの起動時にApacheも自動で起動されるよう設定
④外部からアクセスできるようにセキュリティグループの設定変更
➄WordPressのインストール
・WordPressはyumではインストールできないので、wgetを用いてWordPressの圧縮ファイルを取得
・wp-config.phpを作成
2) MarioDB:Private-1a
①EC2仮想サーバーの作成
・インスタンス名「Private-1a」
・Amazon Linux 2 AMIを選択
・インスタンスタイプ「t2.micro」を選択
・WebServer1で作成したキーペアを使用
・VPC「udemy」
・サブネット「プライベートサブネットA」
・パブリックIPの自動割り当てを有効にする
②NATゲートウェイの設置
・戻りトラフィックにはNATゲートウェイが必要
➂SSHで仮想サーバーへ接続
・WebServer1で作成したキーペアのファイルを使用して、WebServer1からMarioDBへログイン
・ssh ec2-user@10.0.1.93 -i {KEYPARE}
④MariaDBをインストール
・SSH接続をした状態でMariaDBをインストールする
・MariaDBを起動する
・インスタンスの起動時にMariaDBも自動で起動されるよう設定
➄MariaDBの初期設定
・rootユーザーのパスワード設定
・rootユーザーでMariaDBへ接続
・DataBaseの作成
・ユーザーの作成
3) WebServer2:Public-1c
①WebServer1インスタンスのAMIイメージを複製
②AMIからインスタンスを起動
・インスタンス名「Public-1c」
・WebServer1で作成したキーペアを使用
・VPC「udemy」
・サブネット「パブリックサブネットC」
・パブリックIPの自動割り当てを有効にする
➂SSHで仮想サーバーへ接続確認
・パブリックIPでログインできることの確認
④Web Serverソフトをインストール確認
・Apacheがインストールされていることを確認
・Apacheを起動する
・インスタンスの起動時にApacheも自動で起動されるよう設定
➄WordPressのインストール確認
・WordPressがインストールされていることを確認
・wp-config.phpの内容確認
6. ドメイン
ドメイン名:mkurauchi99.com
ドメインの概要については、次のページを参照
https://www.onamae.com/clever/about/domain.html
①「お名前ドットコム」からドメインを購入(0円)
②Route53コンソールから「ホストゾーン」作成
・ドメイン名登録
・パブリックホストゾーン
・DNSレコード作成
➂「お名前ドットコム」のネームサーバー設定
・Route53の「ホストゾーン」のDNSレコードを反映
7. ELB (Elastic Load Balancing)
ELB(ALB)名:udemy-elb
ELBは複数のEC2インスタンスで処理を可能にするロードバランサ―を提供するサービスである
ELBの主要機能
・ヘルスチェック
・クロスゾーン負荷分散
・リスナー設定
・通信暗号化
・ステッキーセッション
・Connection Draining
通信暗号化(HTTPS)
・ELBにACMが管理するSSL/TLS証明書を設定して、HTTPSリスナーを設定することで、クライアント型との通信暗号化(HTTPS)を行う
ALB(Application Load Balancer )
・レイヤー7の対応が強化された単一ロードバランサーで、異なるアプリケーションへリクエストをルーティングが可能になる
1) セットアップ手順
①AWS Certificate Manager(以下ACM)で証明書を取得する
②ELBを作成する
・ALB(Application Load Balancer )選択
・ELB(ALB)名:udemy-elb
・スキーム「インターネット向け」選択
・リスナー「HTTPS」選択
・VPC「udemy」選択
・サブネット「パブリックサブネットA」と「パブリックサブネットC」選択
・新たにセキュリティグループ「LoadBarancerSecurityGroup」を作成
・新たにターゲットグループ「udemy-elb-target」を作成
➂ドメインとロードバランサーの紐付け
④http通信をhttps通信へリダイレクト