【AWS】初心者によるサーバー構築

# 初心者のAWSを使ったサーバー構築
初心者エンジニアによるサーバー構築の練習風景を記します。

### 本学習の流れ
1. AWSアカウントの作成
2. VPC(Virtual Private Cloud)の構築
3. AZ(Availability Zone)、サブネットの構築
4. インターネットゲートウェイの設置
5. ルートテーブルの設定
6. WEBサーバーの設置



# AWSアカウントの作成
AWSのアカウントを作成します。実はまだ作ったことがありませんでした。。。
今回は無料版で進めていきます。

手順については表示された項目を入力するだけなので省略します。
登録が完了し、サインインすると見たことのある画面が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/be0725ad-1433-5672-de5e-371355b505be.png)



# VPCの構築
VPCを作成します。
<b>VPC(Virtual Private Cloud)</b>とはプライベートな仮想ネットワークの単位のこと。

AWSのVPCでは下記の設定ができる。
* サブネット
* ネットワークACL
* セキュリティグループ
* インターネットゲートウェイ
* NATゲートウェイ
* エンドポイント

ここではVPCの作成のみ行います。

### VPCの設定
名前、IPv4/IPv6 CIDRブロック、テナンシーの設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/29d5b27a-d802-d6fc-267a-bb05e37b1c00.png)

IPv4 CIDRブロックを192.168.1.0/24としました。

※CIDR(Classless Inter-Domain Routing)とはクラスの概念を使わないIPアドレスの管理方法で、「/x」でxビットのネットワーク部という意味になる。
　クラスとはIPアドレスを8ビット毎に「.」で区切り、「ネットワーク部」と「ホスト部」に分けた管理方法
<table>
    <caption>プライベートIPアドレスの範囲</caption>
    <thread><tr><th>クラス</th><th>上位ビット</th><th>アドレス範囲</th><th>ネットワーク部のビット数</th><th>最大ホスト数</th></tr></thread>
<tr><td>A</td><td>0</td><td>10.0.0.0~10.255.255.255</td><td>8ビット</td><td>16,777,214</td></tr>
<tr><td>B</td><td>10</td><td>172.16.0.0~172.31.255.255</td><td>16ビット</td><td>65,534</td></tr>
<tr><td>C</td><td>100</td><td>192.168.0.0~192.168.255.255</td><td>24ビット</td><td>254</td></tr>
</table>

テナンシーはAWSのハードウェアを専有して利用するかどうかの設定です。今回は利用しない。
作成できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/fd3aa2a4-c990-c603-0ac2-da9a4840be6f.png)

# AZ、サブネットの構築
<b>AZ(Availability Zone)</b>とは、物理的、自立的に自立しているデータセンタの集合である。
そのため、AZは互いに影響を受けない。別々のAZ内にサーバを用意することで、1つのAZに障害が起きてもサービスを継続して行える様な設計が可能となる。

<b>サブネット</b>とは、IPネットワークを論理的に細分化したものことで、大きなネットワーク(VPC)のなかの小さなネットワーク(サブネット)のこと。
ネットワークに接続する台数やアクセス制御ができる。分割管理ができる。

先ほど作成したVPCの中にAZとサブネットを配置する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/bdfaa7aa-34f9-7c26-af34-aab8985126e9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/154a23ca-a69e-8568-a577-9ea0d2fbcb7a.png)

AZは指定しないと自動で選択される。
IPv4 CIDR ブロックは/16～/28に設定できます。今回はVPCと同じにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/c81f7657-23dc-76f4-f30d-8febcff430c2.png)

AZとサブネットが作成できました。

# インターネットゲートウェイの設置
<b>インターネットゲートウェイ</b>とは、VPCとインターネットの間の通信を可能にするVPCコンポーネントである。
※コンポーネント：部品
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/0c250267-02e5-a8fd-c360-eec843ed1e20.png)
名前を設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/a31bae16-b56a-c12b-2b9e-7d100eaf44d4.png)
作成できました。アタッチ前のため状態がdetachedになっています。
今回作成したVPCにアタッチ(インターネットとの通信を有効に)します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/3bd63cd3-1311-9381-1f80-100ddc188b2f.png)
作成したVPCにアタッチされました。

# ルートテーブルの作成
<b>ルートテーブル</b>とは、ルートの記されたテーブルのこと。
VPCを利用する場合は一連のルールに従い、ルートと呼ばれるネットワーク経路を選択する。
VPCルートテーブルの仕組みはネットワークルーティングテーブルと同等の考え方です。

VPCを作成した際に自動でルートテーブルが作成されるため、今回はそれを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/dcee0130-dc94-41a7-4c5e-38ddc8beea60.png)
分かりやすいように名前を変えました。
ルートの編集をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/371d113b-6d83-94fc-0288-6ccaa0d933ca.png)
送信先は「0.0.0.0/0」とします。これは全てのIPv4アドレスを指します。
ターゲットは先ほど作成したインターネットゲートウェイを設定します。

続いて、サブネットの関連付けをします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/6c895615-7ea2-17cc-10e9-ef9d392c4f41.png)
先ほど作成したサブネットを選択し、関連付けします。

# WEBサーバーの設置
EC2でインスタンスを起動します。
<b>インスタンス</b>とは、AWS上で稼働する仮想サーバのこと。

AMI(Amazonマシンイメージ)の設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/e331cebb-dc53-f8bd-a2f7-bfebfa8cb5d6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/be1483e6-5f1e-6f4f-ab4c-dae3aad79057.png)
今回はCentosを使いたいので、無料枠のCentosを選択します。

インスタンスタイプの設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/f5ea5d53-5f57-9988-a3bd-624be34a5902.png)
無料枠ではt1.microとt2.microが利用できますが、今回はt2.microとします。

キーペアの設定をします。
これから作成するEC2インスタンスへの接続のため、キーペアを作成する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/460f4c11-4e29-8d10-1bd2-6f149656ae87.png)
EC2への接続に必要なキーとなるため、なくさないように管理すること。
また、このキーはプロジェクトに無関係な人には配布しないこと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/738a8c8d-b7fc-2d74-8ef8-e96dcfa3dd11.png)
作成したキーペアを設定しました。

ネットワーク設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/7110d1ea-0cd2-686f-e89d-c9dcb0e857cc.png)
VPC、サブネットは先ほど作成したものを選択します。パブリックIPの自動割り当ては有効とします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/20faa8b6-f3a0-cd59-0c6e-881a537cb29a.png)
セキュリティグループを新しく作成して設定しました。
ソースタイプを自分のIPとすることで自信が利用している外部IPアドレスが自動的に入力されます。

ストレージの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/d3bdbdf1-8672-ca57-ecae-5a93f334046f.png)
EBSのボリュームタイプには用途に沿った種類があります。
説明は省きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/66b0c1a1-85fe-6559-14bb-0d323181fe48.png)
インスタンスの作成、起動ができました。

# 最後に
tertermで接続できるか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/dfd370a0-f72b-1837-ff09-a508a7d14a02.png)
Centosの初期ユーザーはcentos、秘密鍵は先ほど作成したキーペアを設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3142287/e141caee-7e38-d51f-6a61-ef3c70366b54.png)
接続できました。サーバーが起動しているのが分かります。

次回はここにtomcatサーバを立て、アプリのデプロイをします。