この記事ではEC2を利用してウェブサイトを公開する方法のフェーズ2として、フェーズ1で作成したVPCにEC2を作成していきます。
EC2を利用してウェブサイトを公開する方法(モノローグ)
EC2を利用してウェブサイトを公開する方法①VPC作成編
構成図(モノローグと同じものです)
前提
踏み台サーバやwebサーバの操作にはTera Termを使用しています。
作成するもの
EC2
AWSクラウド上で利用できる仮想サーバーです。
必要な時に、必要なスペックのサーバーを数分で起動・削除できます。用途に合わせてOSや性能を選択して構築します。
本構成では、役割の異なる2種類のEC2を作成します。
-
踏み台サーバー (Public):
管理者がPrivate SubnetにあるWebサーバーにログインするための中継役です。Public Subnetに配置し、特定の管理者IPからのみ接続を許可することで、セキュリティを担保します。
近年では踏み台サーバの利用は減ってきているといわれていますが、まだまだ使われている手法です。 -
Webサーバー (Private):
実際のWebサイトを動かすサーバー。外部から直接アクセスされないようPrivate Subnetに配置し、ALB経由でのみユーザーのリクエストを受け取ります。
構築作業
踏み台サーバ作成
- EC2作成
EC2のインスタンスのインスタンスを起動から作成

名称とOSイメージを選択今回AMIではAmazon Linux 2023 kernel-6.1 AMIを使用します。

インスタンスタイプはt3.microを選択します。(必要な性能のものを選んでください)

キーペアを作成します。ここで作成したキーペアを使ってEC2にアクセスするのでしっかり保管してください。

ネットワークを編集から設定します。
VPCは前フェーズで作成したVPC、Subnetはweb-test-public-a-1、セキュリティーグループにweb-test-sg-bastionを指定します。
パブリックIPは後程EIPを割り当てるので無効化でいいです。

必要なだけのストレージを指定してください

インスタンスを起動で作成完了です。 - EIP設定
踏み台サーバに割り当てるEIPを取得します
ネットワーク&セキュリティにElastic IPがあります。

Elastic IPの割り振りから割り振るを押すだけで取得できます。

作成されたEIP(関連付けが無いEIP)を選択してアクションからElastic IPアドレスを関連付けるから踏み台サーバにEIPを関連付けます

インスタンスで作成したweb-test-ec2-bastionと、このEC2のプライベートIPアドレスを選択します。
踏み台サーバ接続確認
- Tera Termを起動して踏み台サーバ割り当てたEIPに接続します。
ユーザー名はdefaultはec2-userになっています。
認証方法を鍵を使うにして、キーペア作成でダウンロードしたkeyを使用します。

こんな感じで接続出来たらOKです。
web1サーバ作成
-
EC2作成
踏み台サーバと同様にインスタンスを作っていきます
名前はweb-test-ec2-web1
ネットワーク設定でsubnetをweb-test-private-a-1
sgはweb-test-sg-web
その他は踏み台と同じです。
(今回はキーペアも踏み台と同じものを使用していますが、本来は別でweb用を作ったほうがセキュアです。特に踏み台とwebでアクセスできる人を区別したい場合別のキーペアを作成する必要があります)

-
web1サーバへの接続確認
作成したインスタンスのプライベートIPアドレスを確認します。

Tera Termを利用して踏み台サーバ経由でアクセスします。
設定のSSHポート転送>追加で転送の設定を追加します。
ローカルのポートに2222、リモート側ホストにweb1のプライベートIPアドレス、ポートを22に設定します

保存したらファイル>新しい接続でweb1にアクセスします。
ホストをlocalhost、TCPポートを2222に設定して接続します。
SSH認証画面は踏み台サーバと同様に入力してください。

このように接続出来たらOKです

-
apacheのインストール
下記のコマンドでインストールを行う
# パッケージリストの更新
sudo dnf update -y
# Apache (httpd) のインストール
sudo dnf install -y httpd
# Apache の起動
sudo systemctl start httpd
# 自動起動の設定(再起動後も有効にする)
sudo systemctl enable httpd
sudo systemctl status httpdで設定を確認しましょう

enabledになっていることと、Activeになっていることが確認できればOKです。
4. テスト画面を設定
とりあえず画面が移ればいいのでecho "test1" | sudo tee /var/www/html/index.htmlでtest1とだけ表示されるページを作成します。
curl localhostでtest1が返ってくれば完了です。

web2サーバ作成
-
web1のAMIから作成
web2にもweb1と全く同じ設定をしていきたいのですが、設定内容が多くなればなるほど手間なうえにミスが起きます。また今回は2つですがもっと増やす場合、手動での複製は推奨されません。
そのため作成したweb1のイメージを取得して複製していきます。
web1のインスタンスを指定して、アクション>イメージとテンプレート>イメージを作成

イメージ名と説明を入力してイメージを作成します、

イメージ>AMIに取得したイメージが保存されています。

ステータスが保留中から利用可能に変わったらAMIからインスタンスを起動します。
名前をweb-test-ec2-web2、ネットワーク設定もweb1と同様に設定します。subnetはweb-test-private-c-1にします。

-
表示画面を変更する
本来ならここで構築完了なのですが、次のフェーズでELBを設定する際に確認するために表示する画面の文字を変更します。
sudo vi /var/www/html/index.htmlでtest2に文字を変更してください。

test2が返ってきたら完了です。
まとめ
webサイトを公開するためのwebサーバが完成しました。
ここまでできればもうほとんど完成です。次回ELBを設定したらここで設定したtest1,test2の文字がブラウザで確認できるようになります。

