EC2にRailsアプリをデプロイ① ~EC2インスタンス作成~

##はじめに
EC2のデプロイが成功したので私が行った手順を数回にわたり残しておきたいと思います。
初めてのデプロイですので必要なツールなどの導入などもしていく予定です。
今回は無料範囲でデプロイするように行います。


よろしくお願いします。

## EC2インスタンスの作成
今回は下準備のEC2インスタンスの作成〜設定を完了するところまでが、目標です。
AWSのアカウントは作成しているものとします。

###EC2インスタンス
EC2インスタンスとはAWSにおける仮装マシンと呼ばれるものです。
AWSは全てのサーバーを物理的に用意してくれているわけではなくて、仮想マシンと呼ばれるソフトウェアを利用して仮装的に一つのLinuxサーバーを利用できる仕組みを利用します。

まずは AWSの公式サイトからルートユーザーでログインします。
ログインした際、ユーザーのリージョンが「アジアパシフィック（東京） ap-northeast-1」となっているか確認しておきます。もし違ったら、設定しなおしといてください。

確認し終わったら、EC2のコンソールへ移動します。
検索フォームでEc2と打てばすぐ出てきます。

移動できたらインスタンスを起動というオレンジのボタンをクリックします。
プルダウンが出てきたら、同じようにインスタンスを起動をクリックします。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/575c5eb1-b7af-3468-0154-e6c3e3167db2.png)


###AMI(Amazon Machine Image)を選択
AMIとはサーバーのデータを丸ごと保存したデータのことで、いくつも種類があります。
中にはOSなどが事前時インストールされているものもあるので、自分で最初からいろんなツールをインストールする手間を省くことができます。

**「Amazon Linux 2 AMI」**というものを使用します。
画像の一番上のやつです。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/a379c273-1a8b-31a8-a13a-8adbb12e02ce.png)

64ビット（x86)のところにチェックが入っているか確認してから選択をクリックします。

###インスタンスタイプを選択
続いて、インスタンスタイプの選択ですが、今回は無料枠で行うので**「t2.micro」**を選択します。
*※画像でチェックされているやつです*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/d0763dd8-1370-62c1-2eea-d1b26262a18e.png)

選択したら「確認と作成」をクリックします。その次のページで「起動」をクリックします。

##キーペアをダウンロード
続いてキーペアというものをダウンロードします。

キーペアはインスタンスへログインするための「秘密鍵」のことです。
逆に言えばこれがないとログインできませんので非常に大事なものです。

「新しいキーペアの作成」を選択しキーペア名を決めましょう。
名前は自由に決めて問題ありませんが、スペースは含めないようにします。

キーペア名の入力が完了したら、「キーペアのダウンロード」をクリックしダウンロードします。
その後青色の「インスタンスの作成」をクリックします。


これで作成は完了です。

インスタンスの表示を押せば作成したインスタンスが確認できます。
そのインスタンスをクリックしたら、インスタンスの概要が把握できます。

そこにある「インスタンスID」をコピーしておいてください。

##サーバーを起動させる準備

EC2インスタンスを作成したときにIPアドレスが自動で割り振られています。
これを**パブリックIP**と言います。このパブリックIPはサーバーを再起動させるたびに変わってしますので**Elastic IP**というものを使用します。

Elastic IPはAWSから割り振られるパブリックIPアドレスです。これをEC2インスタンスに紐づけることで、サーバーの再起動に関わらず、毎回同じIPアドレスで通信できます。

Elastic IPの作成を行います。

AWSのサイトの左側の選択欄から「Elastic IP」を選択します。
「ネットワーク&セキュリティ」の枠組みの中に存在します。

するとオレンジ色のボタンで「Elastic IPアドレスの割り当て」がありますのでクリック。

ページが遷移したら、Elastic IPアドレスの設定の中の「AmazonのIPv4アドレスプール」にチェックが入っていることを確認してオレンジの割り当てボタンをクリックします。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/171f060a-6dfa-771d-87bd-3439a46337c2.png)

次に取得したElastic IPアドレスとEC2インスタンスの紐付けをします。

「アクション」をクリックしてプルダウンで出てきた「Elastic IPアドレスの関連づけ」をクリックします。
画面が遷移したら、「インスタンス」にチェックが入っていることを確認し、そのしたにあるインスタンスの入力欄をクリックすると、先ほどコピーしたインスタンスがプルダウンで表示されるので、選択して、「関連づける」をクリックします。

上記が完了したら、左側の一覧から「インスタンス」をクリックし、インスタンス一覧画面に移動し、インスタンスをクリックして、概要を確認すると、「Elastic IPアドレス」が割り当てられています。

##インスタンスの設定を変更
先ほど作成したインスタンスは**ssh**というシェルを使えば、アクセスはできますが、HTTPなどではつながらないようになっています。

「ポート」という、サーバーとクライアントを繋ぐ仕組みを使って、HTTPが繋がるようにポートを解放してあげると可能になります。

このポートの設定をするには、複数のEC2インスタンスのネットワーク設定を一括で行うための「セキュリティーグループ」で設定します。

それではセキュリティグループでポートを設定します。

まずインスタンスの概要画面の下の方にあるセキュリティのタブをクリックすると、セキュリティグループと書かれたのが出てきます。(launch-wizard-1)と書いてあるやつです。
それをクリックすると。「インバウンドルール」というタブの中の「インバウンドルールを編集」をクリックします。

もしくは私みたいに英語で「Edit inbound rules」と書かれている場合もあります。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/f6dc1e4a-8c35-9495-bd68-9f257f09127c.png)

ページが移動したら次のように操作してください。

「ルールを追加」をクリック
→タイプは「HTTP」を選択
→ソースのところの虫眼鏡を押して「0.0.0.0/0」を選択

もう一度「ルールを追加」をクリック
→タイプは「HTTP」を選択
→ソースのところの虫眼鏡を押して「::/0」を選択

下記の写真のようにできたら「ルールを保存」してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/5ea7e0bf-5448-5c1a-76a3-4d3f6a6de09a.png)

これでポートの解放は完了です。

ひとまず、インスタンス作成〜設定が完了しましたので今回はここまでで終了します。
次回はターミナルからEC2インスタンスへログインして必要なツールなどをインストールしていきます。