AWSを用いてrailsアプリをデプロイするプロセスを頑張って噛み砕いてみるvol.2

## 近況報告
　連投ではありますけど，近況報告のネタはたくさんあります。ついさっきテックキャンプの最終課題発表会が終わり，無事転職活動に進めることになりました。ほんとメンバーに助けられた〜。これからは今持ってる力を磨きながらぶつかっていく戦いが続きます。頑張ります。

#今回の目的
・インフラ整備での各アクションの言語化
・コードを単に打っているだけでは理解しきれないし，他に応用できないので言語化して整理
・AWSでアカウント作成，ほか諸々の準備は割愛してターミナルでの操作をメインに

##おおまかな流れ
本番環境用のデーダベース作成(MySQL)
アプリケーションサーバーの準備（githubの認証）

##事前準備
[前回の内容](https://qiita.com/aaabb6211/items/6194fa53f29061dc5444)の続き

### 本番環境用のデーダベース作成
EC2は本番環境を整備して土地を提供してくれるけど，そこに建てる建造物や木材は持ち込みです。開発環境のようにデータベース，アプリケーション，それに加えて，遠隔操作するためのロボット（ここではNginxとかUnicornをさす）を作っていきます。


データベースはカリキュラムでおなじみのMySQLを使っていきます。amazon linuxはコマンドで呼び出せるので

```
EC2
$ sudo yum -y install mysql56-server mysql56-devel mysql56　←インスト
$ sudo service mysqld start　←起動
$ sudo service mysqld status　←状態確認
$ sudo /usr/libexec/mysql56/mysqladmin -u root password "パスワード設定"
```
sudo,yumの説明はvol.1にて行なっています。
次にMySQLのパスワードの設定を行います，データベースの改ざんの予防です。””のなかに**ゼロから始まらない**パスワードを作成しましょう。

登録すると多分以下の英文が出てきます↓

```
Warning: Using a password on the command line interface can be insecure.
```
　厳密には違うけど，**パスワードが環境変数とかそういう保証（セキュア）されてないよー**って意味らしい。パスワードの登録エラーというわけではないので，カリキュラムではそのまま進んでいますが，気になる方はwarning文をコピペすれば解決策がすぐでてきます。

MySQLのなかに入ってできることに関しては[私の一番最初の投稿](https://qiita.com/aaabb6211/items/5245f3d1c6472ecf0ad8)で取り扱っているので見てみてください。

### アプリケーションサーバーの準備
railsが動く，DBもある，ということで，今度はアプリケーションをサーバーに設置しましょう。

設置方法はGitHubからのクローンです。ただ，ラップトップのようなローカル環境はともかく，本番環境にクローンするとなると，githubは警戒してクローンさせてくれません。

なので，githubに許可証を登録する必要があります。許可証であるSSHキーを作成した後に取り出してgithubに取り込みます。

```
EC2
$ ssh-keygen -t rsa -b 4096 ←ssh鍵をgenerateします，型はRSA，4096bitでつくるよ

Generating public/private rsa key pair.　←キーペア作るよ（この後三回Enter押す）
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ec2-user/.ssh/id_rsa.
Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub.
The key fingerprint is:
3a:8c:31:0f:ca:63:fa ec2-user@ip0000
The key's randomart image is:
+--[ RSA 4096]----+
|                 |
| . . =           |　　←環境変数とimage図で生成
|  = . o .        |　　　（環境変数だとGithubは読み取れないから読み取れる状態の物を抽出）
| *               |
|  *     S        |
|.*       .       |
|    +            |
| .E+     (´･_･`)　|
| .o              |
+-----------------+
$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2E...... ←ここに出てくる文字列全てコピーしてGithubへ
```
catはLinuxにおいてファイルの閲覧，結合を行うコマンド。（concatnateの略）
キーをコピーしたら，Github>右上のプロフィールのタブからSetting>personalSettingのSSHKeyのとこ>NewSSHKey>名前は任意，キーを格納して登録。では，アクセスできるか確認していきます。

```
EC2
$ ssh -T git@github.com ←sshよりgit@githubにアクセス

The authenticity of host 'github.com (14.40.48)' can't be established.
RSA key fingerprint is *****.
RSA key fingerprint is *****.
Are you sure you want to continue connecting (yes/no)? yes
⇨あれ，初めてのアクセスぽいな。認証の確立できてなかったわ。キーあるし，このまま繋げてもいいか？
Warning: Permanently added 'github.com,14.40.48' (RSA) to the list of known hosts.
⇨これでgithubのホストの情報がEC2へ流れるようになったから！
Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.
GithubからのアクセスはできないけどEC2側からの認証は成功したよ！
```
もしPermission denied (publickey)が表示されたら，認証ができなかったから，キーのとこからやり直そう。

###終わりに
この部分に限らずデプロイ周りははじめて触った時は何をしていたのか全くわからなかったけど，３回目となると，大枠が理解できているから，なんでこんなことするのかがとてもよくわかるね。次回はユニコーンを噛み砕きます。

少しでも参考になったらLGTM，アドバイスもお待ちしています！