デプロイ方法①(AWS/EC2)

※デプロイの方法の手順①　今後の自分のメモ用に

#EC2インスタンスを作成

AWSアカウントにログイン。トップページに遷移したら、左上の「サービス」から「EC2」を選択。
<img width="1440" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/f8ac5d6b-ae40-dd92-4256-7172a2e85adf.png">

操作画面を旧バージョンに切り替えるため、左上のスイッチのアイコンをクリック。「New EC2 Experience」
<img width="1440" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/dc300517-b28b-ab95-4837-f35ee9845122.png">

アンケート用のダイアログが開くのでキャンセルを選択。
<img width="1440" alt="3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/b215a900-ec8a-e779-3ada-d3d138f44e87.png">

以下の画像の「インスタンスの作成」をクリック。
<img width="1440" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/5be8e875-82ee-3456-336d-bef98423a2da.png">


####AMIの選択
AMIとは、「Amazon Machine Image」の略語で、サーバのデータをまるごと保存したデータのこと。
この中には、OSやWEBサーバなどが事前にインストールされているものもあり、自分でゼロからインストールする手間を削減することができます。

「 Amazon Linux AMI 」という、AWSが独自にカスタマイズしたAMIを利用しましょう。

<img width="1440" alt="5.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/72bf2d2c-38b8-e99a-4cf7-bf8b98df4a63.png">
・「AMIの選択」になっていることを確認
・「クイックスタート」を選択
・Amazon Linux AMIを選択
※「 Amazon Linux2 AMI 」ではなく、「 Amazon Linux AMI 」を選択


####EC2インスタンスのタイプ選択
EC2ではさまざまなインスタンスタイプが用意されており、CPUやメモリなどのスペックを柔軟に指定することができます。無料枠で利用できる「t2.micro」を選択。
<img width="1440" alt="6.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/de54d5e3-09ba-83b2-0db1-313dd6facac1.png">
・「インスタンスタイプの選択」になっていることを確認
・「t2.micro」になっていることを確認
・「確認と作成」をクリック

<img width="1440" alt="7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/062550fa-b73f-858d-6818-3bc1d8ff7b62.png">
・起動をクリック


####キーペアのダウンロード
内容を確認する際に、「キーペア」をダウンロードすることが出来ます。こちらはインスタンスにSSHでログインする際に必要となる「秘密鍵」です。これがないとEC2インスタンスにログインできないので、必ずダウンロードしてパソコンに保存しておきましょう。また、間違って他人に渡さないよう気をつけてください。

キーペアの名前はご自身で決めて大丈夫です。

※キーペアの名前にスペースが含まれているとこの後の作業でエラーが発生する可能性があります。 スペースを含まない名前の秘密鍵を作成するようにしましょう！
<img width="1440" alt="8.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/0b9131b1-2dd0-da75-ad68-8862d365cc6e.png">
・「新しいキーペアを作成」を選択
・キーペア名の名前を入力（App名）
・「キーペアのダウンロード」クリック
↓
・キーペアのダウンロードが完了すると、クリック出来ない状態になっていた「インスタンスの作成」が、クリックできるように変更されます。そちらをクリックして、EC2インスタンスを作成。


####インスタンスの作成
インスタンス一覧画面に戻り、作成した「インスタンスID」をコピーしてメモしておきましょう。


#Elastic IPの作成と紐付け

作成したEC2インスタンスには、作成時にIPアドレスが自動で割り振られています。これをパブリックIPと言います。
しかし、サーバーを再起動させるたびにこのパブリックIPが変わってしまうという欠点を持っています。IPが変わってしまうということは、設定ファイル等をその都度書き換えなければいけません。これを解決してくれるのが、Elastic IPです。

###Elastic IP
Elastic IPとは、AWSから割り振られた固定のパブリックIPアドレスのこと。
このパブリックIPアドレスをEC2インスタンスに紐付けることで、インスタンスの起動、停止に関わらず常に同じIPアドレスで通信をすることが可能になります。


![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/1c0466a5-1ee9-4334-a857-d0c62b2afb05.png)

・Elastic IPを取得するために、「Elastic IP」を選択し、「新しいアドレスの割り当て」をクリック

<img width="669" alt="10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/77ed759a-8a35-6e37-ddf5-5ee2f01cc38c.png">
・Amazonプールを選択
・「割り当て」をクリック
・ELAstic IPを確認し、「閉じる」をクリック

次に、取得したElastic IPアドレスを、作成したEC2インスタンスと紐付け
先ほど、取得したElastic IPアドレスを選択し、「アクション」から「アドレスの関連付け」へ
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/a79a1977-45f6-b0af-e6fe-1b673b2b8776.png)

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/94480c0e-758f-431a-14b6-a9deb577d523.png)

インスタンスを選択すると、その下にあるプライベートIPアドレスが自動で選択されます。
再びインスタンス一覧画面に戻り、作成したインスタンスの「パブリック IP」と「Elastic IP」が同じものに設定されていることを確認しましょう。

以降、このIPアドレスはあなたの所有物のようになり、意図的にAWSに返却しない限り、変更されることはありません。

![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/0b8ce832-1de3-78fb-e6f9-ef6231d86313.png)

#ポートを開く
立ち上げたばかりのEC2インスタンスはSSHでアクセスすることはできますが、HTTPなどの他の接続は一切つながらないようになっています。そのため、WEBサーバとして利用するEC2インスタンスは事前にHTTPがつながるように「ポート」を開放する必要があります。

###セキュリティグループとは
ポートの設定をするためには、「セキュリティグループ」という設定を変更する必要があります。
セキュリティグループとは、EC2インスタンスが属するまとまりのようなもので、複数のEC2インスタンスのネットワーク設定を一括で行うためのものです。

###セキュリティグループのポートを設定する
セキュリティグループのポートを設定。
EC2インスタンス一覧画面から、対象のインスタンスを選択し、「セキュリティグループ」のリンク（図中では「launch-wizard-1」）をクリック。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/e341d8ec-fe97-cf42-f068-c026bff7abf5.png)

インスタンスの属するセキュリティグループの設定画面に移動するので、「インバウンド」タブの中の「編集」をクリック。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/c10e94dc-07a8-1410-258a-cbc9c3a73abd.png)

モーダルが開くので、「ルールの追加」をクリック。
タイプを「HTTP」、プロトコルを「TCP」、ポート範囲を「80」、送信元を「カスタム / 0.0.0.0/0, ::/0」に設定。
「0.0.0.0」や「::/0」は「全てのアクセスを許可する」という意味
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551425/8bdd719f-a91f-4204-34b5-b3f7337b5ca7.png)

#####※必ず「ルールの追加」を行い、元の「ssh」の設定がなくならないよう注意してください
以上で、ポートの開放が完了です。

この作業が終わっていないと、WEBサーバを起動した時にアクセスできなくなるので注意してください。

#EC2インスタンスへのログイン

EC2インスタンスを作成すると、ec2-userというユーザーと対応するSSH秘密鍵が生成されました。
本来はこのec2-userではなく、サービスを稼働させるためにより権限を小さくしたユーザーを作成して運用していきますが、ここでは簡易化のためにこのec2-userを使って作業を進めていきます。

####ec2-userでログイン

1. 以下の「ダウンロードした鍵の名前」の部分は、直前にご自身がダウンロードした.pemというファイルの名前に置き換えてください。
2. pemキーが本当にDownloads以下に存在するかFinderで確認しましょう
※存在しなければ他のディレクトリを確認しましょう

```Bash
$ cd ~

$ mkdir ~/.ssh
# .sshというディレクトリを作成
# File existsとエラーが表示されたとしても、.sshディレクトリは存在しているということなので、そのまま進みましょう。

$ mv Downloads/ダウンロードした鍵の名前.pem .ssh/
# mvコマンドで、ダウンロードしたpemファイルを、ダウンロードディレクトリから、.sshディレクトリに移動します。

$ cd .ssh/

$ ls
# pemファイルが存在するか確認しましょう

$ chmod 600 ダウンロードした鍵の名前.pem

$ ssh -i ダウンロードした鍵の名前.pem ec2-user@作成したEC2インスタンスと紐付けたElastic IP
#（例えばElastic IPが123.456.789であれば、ssh -i ダウンロードした鍵の名前.pem ec2-user@123.456.789 というコマンドになります）
#（ダウンロードした鍵を用いて、ec2-userとしてログイン）
```
Elastic IP は、AWSアカウントから確認してください。

以下の様なメッセージが表示されることがありますが、「yes」と入力して下さい。

```
$ ssh -i aws_key.pem ec2-user@52.68.~~~~~~
The authenticity of host '52.68.~~~~~~ (52.68.~~~~~~)' can't be established.
RSA key fingerprint is eb:7a:bd:e6:aa:da:~~~~~~~~~~~~~~~~~~~~~~~~.
Are you sure you want to continue connecting (yes/no)? 
```

ターミナルのコマンド待ちの際の左側の表示が、
[ec2-user| ...

となればログイン成功。