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

## 近況報告
　黒子のバスケを一気見したせいでバスケが無性にしたくなりました。高校はバスケ部入っていればよかったかなぁ笑 今までの人生は大谷翔平のようにでかいことしているわけではないけど唯一無二の人生を歩んでいる誇りはあるので，自分を肯定し始めてから後悔はほとんどなくなったの。ただ，殊に高校生活に関しては三年間常に受け身で過ごした後悔は絶対忘れない。

　後悔は自信を持って選択をしていけば生じない。選択した先には選択しなかった未来では得られなかった同等の価値あるものがきっとあるはずだから。後悔するってことは，その時の選択に迷いがあったから。後悔は過去に生じることじゃなくて，今，自分の行動に生じてる。**自分がコントロールできる運命を変える**。

#今回の目標
・インフラ整備での各アクションの言語化
・コードを単に打っているだけでは理解しきれないし，他に応用できないので言語化して整理
・テックキャンプ受講生支援
##大まかな流れ
・サービス公開の準備　swap領域
・gemのインストール
・環境変数の設定
・railsの起動
##事前準備
[vol.1](https://qiita.com/aaabb6211/items/6194fa53f29061dc5444)
[vol.2](https://qiita.com/aaabb6211/items/2f8c5034b791767dee7a)
[vol.3](https://qiita.com/aaabb6211/items/ed338de73ec123851308)

ポートの解放
AWSにログインしてセキュリティグループタイプで新しくカスタムTCP，ポート範囲を３０００，ソースを0.0.0.0/0を追加

### サービス公開の準備　swap領域
　今の状態でもサービスを開始できますが，現状，予想外のメモリの使用があった場合，EC2で処理がしきれず落ちる可能性があります。その現象が起こらないように**SWAP領域**を設定します。

　コンピュータが処理を行う際、メモリと呼ばれる場所に処理内容が一時的に記録されます。メモリは容量が決まっており、容量を超えてしまうとエラーで処理が止まってしまいます。Swap領域は、メモリが使い切られそうになった時にメモリの容量を一時的に増やすために準備されるファイルです。

⬆︎がカリキュラムの説明なのですが，補足。メモリは１０GBだとしたら処理時に１１GBになる，ということはありません。では，なぜ「増やす」と記述しているかというと，**メモリの中の処理に関わっていないプログラムを一時的に他の場所（例えばハードディスク)に移して使用できる領域を相対的に増やしている**のです。まさにそのプログラムの保存場所がSWAP領域，ということです。そういうわけで，絶対的なメモリの容量を超えなければ融通を効かせることができます。

swap領域をサーバー内に用意します。

```EC2.
$ cd ←ホームディレクトリに移動
$ sudo dd if=/dev/zero of=/swapfile1 bs=1M count=512
⇨　if以下のフォルダをswapファイルに移動させます。ブロックサイズは１Mで，５１２回コピーを行います（５１２＊１MBの領域のファイルを作成）
512+0 レコード入力
512+0 レコード出力
536870912 バイト (537 MB) コピーされました、 5.19004 秒、 103 MB/秒　←生成結果

$ sudo chmod 600 /swapfile1　←所有者のみ中身の変更許可に権限変更
$ sudo mkswap /swapfile1　←swapfile1をスワップ領域に設定

スワップ空間バージョン1を設定します、サイズ = 524284 KiB
ラベルはありません, UUID=2d804e0c-b0c9-4407-8e1c-2b94e4123390
$ sudo swapon /swapfile1　←作成したスワップ領域を有効化
$ free ←swapファイルが有効化しているか確認できる。menはメモリのこと
             total       used       free     shared    buffers     cached
Mem:       1009148     922400      86748         60      41728     344776
-/+ buffers/cache:     535896     473252
Swap:       524284          0     524284
$ sudo sh -c 'echo "/swapfile1  none        swap    sw              0   0" >> /etc/fstab'
⇨ブートした時に有効になるように設定
```
スワップファイル削除は

```EC2.
$ swapoff -v ←スワップファイルがあるディレクトリで実行。有効化をとめます。
$ rm /swapfile 
```
で削除できます。
### Gemのインストール
ここでGemのインストールを行います。理由は，bundle installを行う際にメモリをたくさん使うのですが，SWAP領域が確保できたので心置きなく実行できるのです（なおインストールに時間がかかります）。

```EC2
$ cd /var/www/自分のリポジトリ
$ ruby -v ←bundle install前にローカル環境とバージョンが同じか確認
$ gem install bundler -v 2.1.4　←自分のバージョンのをインストール
$ bundle install (時間かかる)
```
###環境変数の設定
 githubから必要なファイルはコピーできましたが，ローカル（自分のパソコン）にしかないデータ，つまりシークレットキーとかは本番環境にないので，直書きして用意し環境変数にします。

まず，cookie暗号化に用いるSECRET_KEY_BASEを用意します。

```EC2.
$ rake secret ←SECRET_KEY_BASEを作成
4444444444444444444444←コピー
$ sudo vim /etc/environment　←vim形式でenvironmentの中身を閲覧する。
```
iでインサートモードに変更

```environment.
 DATABASE_PASSWORD='MySQLのrootユーザーのパスワード' 
 SECRET_KEY_BASE='先程コピーしたsecret_key_base' 
```
：wqで退室

```EC2.
$ exit ←反映させるためにログアウトして入り直す。
```
```EC2.
$ env | grep SECRET_KEY_BASE　←環境変数のファイルのなかで，SECRET_KEY_BASEを探して
SECRET_KEY_BASE='~~~登録したキーが表示される~~~'
```
 確認できたらオッケーです。rake secretでエラーが生じる場合はbundlerとか事前の導入を忘れている可能性があるので確認してください。

##おわりに
railsの起動までかけなかったー！
次回こそ本番環境でrailsを起動します！

微量でも参考になったらLGTM，ご指導はコメント欄にお願いします！