AWS を使用して Web サーバを公開する
最近 AWS の勉強をしているので学んだことの整理を兼ねて AWS を使用して Web サーバを公開するまでをまとめて見ようと思います。
SSL 化対応までやろうとしたのですが、ボリュームが大きくなりそうなので SSL 化対応は別の記事でやります。
超基本的なことなので、AWS をつかったことがない人にわかるように心がけて書きます。
今回は以下のような極めてシンプルな構成を作成します。
ネットワークの設計
VPC の作成
VPC とは「Virtual Private Cloud」の略でクラウド上に仮想的なネットワークを構築するためのサービスです。
多分初めてこれを聞いても何をいっているのか分からないと思うので、例えるなら新しい街を作るといったイメージをすると分かりやすいのかなと思います。
今回自分は以下の画像の設定で VPC を作成します。
ここで最初に分からなくなるのがIPv4 CIDR
ではないかなと思います。
CIRD
に関しては以下の記事を読むのが良いと思うので、ここでは詳細に関しての解説はしません。
結構読み応えがありますが、かなり分かりやすいと感じたのでおすすめです。
IPv4 CIRD
を一言でまとめると、
自分で好きな大きさの袋を用意して、そこに好きなだけ接続できるコンピュータ(IP アドレス)を詰め込む
ためのものです。
例えるなら、街の大きさを決めて、好きなだけ家や、お店を作れるだけの土地を確保するためのものと考えると分かりやすいのかなと思います。
サブネットの作成
VPC を作ったら次にサブネットを作成します。
サブネットとは、大きなネットワークを分割した小さなネットワークのことです。
サブネットを例えるなら、街の中に市や、区を作るイメージをすると分かりやすいのかなと思います。
今回はサブネットを 1 つ作成します。
IPv4 CIDR ブロックは VPC よりも接続できる IP アドレスの少ない10.0.0.0/24
としました。
インターネットゲートウェイの設定
インターネットゲートウェイとは、VPC とインターネットとの通信を可能にするためのものです。
ここではシンプルにインターネットゲートウェイを作成してから VPC にアタッチしてあげれば OK です。
ルートテーブルの作成
ルートテーブルでは VPC、インターネット、サブネット間でどのように転送されるかを指定します。
ルートテーブルを例えるなら目的地まで案内するための電車と考えると良いのかなと思います。
今回はnozomi-dev-public-rtb
という名前のルートテーブルを作成しました。
ルートテーブルを作成したら先程作成したサブネットと関連付け、ルートをインターネットゲートウェイと紐付けることを忘れないようにしましょう。
これを忘れてしまうと乗り物の駅がないということになってしまいルートテーブルが正しく動きません
EC2 の設計
次は EC2 を作成します。
EC2 ではインターネットサーバを作成します。
インスタンスの作成
まずは EC2 のインスタンスを作成しましょう。
以下の画像のような EC2 インスタンスを設定します。
今回は AWS に登録すると 1 年ついてくる無料枠を利用して EC2 を作成します。
キーペアは今回はなしで作成します。
パブリック IP の自動割り当ては後から Elastic IP アドレスに変更するので今は気にしなくていいです。
ネットワーク設定も先程ネットワーク設計で作成したものを紐づけていけばいいのであまり難しくないと思います。
しかし、セキュリティグループだけは作成する必要があります。
今回はインターネットからのアクセスを受け入れたいので HTTP
とHTTPS
のアクセスを許可します。
Web サーバを建てる
EC2 インスタンスを作成するときに、Apache サーバを建てるための設定をしましょう。
以下のコードを高度な詳細 > ユーザーデータ
に記入します。
#!/bin/bash
yum -y update
yum -y install httpd
systemctl enable httpd.service
systemctl start httpd.service
これでインスタンスを起動するときに Apache サーバを建てられるように設定することができました。
ちゃんと Apache サーバーが建っているかを確認するために EC2 を作成して、少しまってからパブリック IPv4 アドレスにアクセスしてみましょう。
以下のようなページが表示されたら成功です。
もしこの方法を試しても apache サーバーが表示されなかったら
Elastic IP アドレスを割り当てる
次は Elastic IP アドレスを割り当てます。
Elastic IP アドレスを割り当てなくても、パブリック IP アドレスがあたっているから問題ないと思った人がいるかもしれません。
しかし、EC2 で自動に割り当てられるパブリック IP アドレスは EC2 インスタンスを起動するたびに変更してしまうため Elastic IP アドレスを使用してパブリック IP アドレスを固定してあげる必要があります。
これで EC2 設計をすることができました。
Elastic IP アドレスを検索バーにいれて、Apache サーバーがちゃんと動いているかを確認しましょう。
ドメインを購入する
次に Elastic IP アドレスにドメイン名を紐付けるためのドメインを購入します。
今回はお名前.com というサイトでドメインを購入します。
今回自分は既に登録済みのドメイン名を使用するのですが、ドメイン登録ページから好きなドメインを購入してください。
一年目は無料のドメインもあるので、最初はそういうものを購入するといいかもしれません。
Route53 を使用してレコードを作成する
ドメインを購入したら次はドメインと Elastic IP アドレスを紐付けるために Route 53 を使用します。
ホストゾーンを作成する
まずはホストゾーンを作成します。
購入したドメイン名を入力してホストザーンを作成すると以下のような画面になります。
ネームサーバー情報を更新する
お名前.com のドメイン設定ページでホストゾーンを作成したときに詳細ページで表示される SA(ネームサーバー)とドメインを紐づけます。
これはドメインがどこのネームサーバーを使用するかを設定しています。
ネームサーバーの反映は 24 時間~72 時間くらいかかるらしです。
レコードを作成する
シンプルルーティングを選択して、先程作成した Elastic IP アドレスとドメイン名を紐づけます
これでドメイン名を URL に入れると Apache の初期画面が表示されるのを確認出来ると思います
自分の場合は http://example.nozomi-dev.net/ にアクセスすると apache サーバーのトップ画面がちゃんと表示されました!
次回は https 通信をできるように設定しようと思います!
Discussion