#1　Djangoのwebアプリケーションをデプロイするまで（AWSのEC2でインスタンス構築編）

#はじめに
私はプログラミング言語の初学者です。
その為、読み間違いや理解不足の部分があると思います。
その場合はコメントで教えて頂けると幸いです。

「ゴール」は事前に作成したPythonのwebアプリケーションをデプロイする所まで行きたいと思います。出来るだけ初学者向けに書くつもりです。

作成手順

* AWSのEC2でインスタンスを構築後に、SSH通信をする　←**現在はここです。**
* 構築したインスタンスの中にPythonの環境を構築する
* インスタンスの中に仮想環境を構築し、Django等をインストール（フレームワーク）
* PostgreSQLを設定する（データベース）
* インターネット上にアプリケーションが接続出来るように設定する（デプロイ前半）
* NginxとGunicornの設定する（デプロイ後半）

## インスタンスの作成の仕方
###ステップ１（インスタンスの作成）
AWSのEC2を選択し、この画面に移動します。
画面右上の矢印がある所をクリックします。（ここはリージョンというものを選択する所です。）
＊特にこだわりが無ければどこでもいいですが、EC2を使用する前はここを必ずチェックしましょう。
「インスタンスの作成」をクリックします。
![インスタンス作成画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/9d4f1e6a-2db9-45e8-51b8-c1a62b789d69.png)

###ステップ２（Amazon マシンイメージの選択）
「インスタンスを作成」をクリックすると、この画面に移動すると思います。
ここで仮想サーバを決めます。
今回はUbuntu Server 18.04 LTS (HVM), SSD Volume Type - ami-0bcc094591f354be2 (64 ビット x86) / ami-0bc556e0c71e1b467 (64 ビット Arm)を使います。
![ステップ１マシンイメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/b36bf8c9-b1db-9124-7fe9-a43ab0316055.png)

###ステップ３（インスタンスタイプを選択）
インスタンスタイプは「　t2.micro 無料利用枠の対象　」を選択
＊ここで「無料利用枠の対象」の物を選択しないと、お金が掛かります。
![ステップ２　インスタンスタイプの選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/fdb40c9f-7558-1056-6b40-5fd5f7e392b3.png)

###ステップ４（ストレージの設定）
「ステップ７：インスタンス作成の確認」の所まで何も考えずに「次へ」ボタンをクリックします。
＊必要なことがあれば、作成した後でも変更ができると思います。
![ステップ３　インスタンスの詳細の設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/3ad4d842-fd6c-4e72-9f15-90275944f8ec.png)
![ステップ４　ストレージの追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/322f2ebb-1466-1dcd-c7b4-1675b7b23bfb.png)
![ステップ５　タグの追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/74d1d516-dae1-57e2-fb35-65295d5d28d9.png)
![ステップ６　セキュリティグループの設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/8eb851a1-b1b8-acee-d378-e42787ff18fa.png)
![ステップ７　インスタンス作成の確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/f24a5355-8e33-7b3a-5cad-d82f8d370879.png)

###ステップ５（キーペアの作成＋ダウンロード）
「ステップ７：インスタンス作成の確認」のページの「起動」をクリックします。
すると、この画面になると思いますので「新しいキーペアの作成」を選択します。
「キーペア名」はご自身の好きな名前にしてください。
＊ここでは[test]にしておきます。
そしてダウンロードします。
＊このインスタンスの使用中は必ず削除しないでください。また誰にも渡らないようにしてください。
ちなみにダウンロードがされると、filderの中にダウンロードがされると思いますのでDesktopに移動しておいてください。後で使います。
![キーペアの作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617421/f3552e18-28cd-0a45-cf2d-826815c24911.png)

###ステップ６（SSH通信をしてみる）
キーペアのダウンロードされているか確認してください。
その後にDesktopの中に移動してあることが前提で進めます。
キーペアはXXX.pemというファイルでダウンロードされていると思いますが、このファイルをchmodコマンドでパーミッションを変更しないとSSH接続できません。

* 'hostname'ですが、インスタンスの説明の中にあるパブリック DNS: xxx.amazonaws.comです。
* XXX.pemの'XXX'はステップ５で決めた「キーペア名」になります。
* ubuntuはデフォルトの名前になります。

```
パーミッションは下記のコードを打ちます。
$ chmod 400 XXX.pem

SSH接続できるか確認します。
$　ssh -i XXX.pem 'user name'@'hostname'

この記事ではこうなります。
$ ssh -i test.pem ubuntu@ec2.00-000-000-00.compute-1.amazonaws.com
```
ターミナルで(yes/no)聞かれるので、yesと打ちます。
そうすると
ubuntu@ip-000-00-00-000:~$ というプロンプトになるはずです。

続きは次の記事に書きます。

##番外編：IPアドレスを固定します。（Elastic IP)
インスタンスを起動したり、停止するとIPアドレスが変更されてしまいます。
IPアドレスは、

* SSH接続する時に変更されると不便
* Djangoファイルの中に書いているので、デプロイする時に不便

などの問題点があります。
なのでElasticIPというもので、IPアドレスを固定しちゃいます。

１　「EC2　ダッシュボード」をクリック
２　「Elastic IP」をクリック
３　「Elastic IPアドレスの割り当て」をクリック
４　「Elastic IPアドレスの設定」のネットワークボーダーグループは、インスタンスを作成しているリージョンに合わせます
５　「パブリック　IPv4　アドレスプール」は一番上の「Amazon の IPv4 アドレスプール」を選択し、「割り当て」をクリック
６　上部にある「この　Elastic IP アドレスを関連付ける」をクリック
７　「リソースタイプ」は、「インスタンス」を選択、下の「インスタンス」の検索フォームで割り当てたいインスタンスを選択
８　ついでに「プライベートIPアドレス」も検索フォームで、割り当てたいIPアドレスを選択
９　「この Elastic IP アドレスの再関連付けを許可する」のチェックを選択しておく
１０　「関連付ける」をクリック
１１　「Elastic IPアドレス」が関連付けられているか確認する

以上でIPアドレスを固定出来たと思います。