AWSを触り始めたので、EC2で簡単なブログサイトを立ててみました。
備忘録も兼ねて、手順をまとめます。
対象読者:
- AWS初心者
- EC2をとりあえず動かしてみたい人
- 個人ブログを自分で立ててみたい人
今回やること
- EC2を立てる
- Apacheを入れる
Step1
VPCの作成
VPC(Virtual Private Cloud)
AWS上に作る自分専用のネットワーク空間(仮想ネットワーク)で、ここにEC2のサーバーを設置していきます。
その後、EC2のサーバーに必要なアプリをインストールする流れになります。
そのため、まずVPCの設定を行います。
Step2
サブネットの設定
先ほど作成した仮想ネットワークを区切るための設定になります。
あらゆるユーザーに公開したいウェブサーバーはパブリックサブネット(名前の通り公共の環境、インターネットから接続出来る)に設定し、データベースなど機密情報が格納され一般ユーザーには触れられたくないものはプライベートサブネット(インターネットから接続出来ないところ)に設定します。
EC2はこのサブネットの中に立てる形となります。つまり、VPCの中にサブネットを作成し、さらにその中にEC2サーバーを建てるという状況です。
Step3
ルーティング設定
先ほどパプリックサブネットはインターネットから接続出来ると言いましたが、そのままでは接続出来ません。ルーティングというものを設定する必要があります。
ルーティングとは、宛先IPアドレスに対して「次にどこへ通信を送るか」を決める仕組みです。
ルートテーブルと呼ばれる表を作成してルートを管理します。
例:
| 宛先IP | 次に渡す先 |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | インターネットゲートウェイ(IGW) |
EC2から外へ通信するとき
例:GoogleのIP 142.250.190.78
・EC2「このIPに送りたい」
・ルートテーブルを見る
・「0.0.0.0/0 → IGW」と書いてある
・「0.0.0.0/0」は「すべてのIPアドレス」を意味するためIGW経由でインターネットへ
外からEC2に来るとき
・インターネットから今回作成するEC2に通信が来る
・IGWに届く
・ルートテーブルを見る
・サブネット → EC2に流れる
の流れを作成します。
Step4
Webサーバーの構築
Webサーバー構築では以下の設定が必要になります。
・EC2インスタンスの設置
・SSHの設定をしてサーバーにログイン
・Apacheのインストール
・ファイアウォール設定
EC2とは?
EC2(Elastic Compute Cloud)とはクラウド上の仮想サーバーになります。
AMI、インスタンス、ストレージを選択して作成します。
物理サーバーを作成すると、ハードウェアを準備、OS(LinuxやWindows)をインストールなどの手間がありますがEC2はAMIと呼ばれるサーバー構築のテンプレートのような物があるおかげで簡単に構築できます。
また、インスタンスタイプを選ぶことでスペックを細かく設定できます。
ストレージはサーバーのデータをどこに保存するかの設定になります。
今回はデフォルトで推奨されている設定をそのまま使用しています。
SSHとは?
SSH(Secure Shell) は、遠くのサーバーに安全にログインして操作する仕組みです。
先ほど説明したようにEC2は物理サーバーではありません。Amazonのデータセンターに本体がある形になります。ですので"遠く離れたサーバーに接続する"ということになります。
そのためクライアントとして「接続したいです。」というリクエストと「承認します!」という手順が必要になります。
ssh -i "my-key.pem" ec2-user@というコマンドで安全に接続出来るようにします。
Apacheのインストール
SSH接続するとCLIに繋がるのでApacheインストールのコマンドを実行します。
パッケージ情報を更新
sudo yum update -y
Apache(httpd)をインストール
sudo yum install httpd -y
Apacheを起動
sudo systemctl start httpd
起動時に自動スタート設定
sudo systemctl enable httpd
ファイアウォール設定
ここまででApacheのインストールまで完了ですが、初期設定だとファイアウォールの設定により通信が遮断されてしまう状態です。
SSHの接続以外は許さない設定になっているため、セキュリティグループを設定することで解消します。
セキュリティグループではインバウンドとアウトバウンドという考え方があります。
インバウンドはインターネットからEC2に入ってくる通信で、アウトバウンドはEC2から外に出る通信です。
今回はインバウンドルールにHTTP port80でルールを追加しています。
この状態でEC2インスタンスに自動で割り当てられているパブリックDNSにアクセスするとApacheの画面に繋がればEC2立ち上げ成功です。