20210205_アウトプット(AWS EC2によるデプロイ)
2/5行ったこと 3時間55分
新しい発見について
AWS EC2によるデプロイ(やっと全体像を理解)
- ローカル環境にて、GitHubを使いながら開発。
---デプロイ---
(1)Webサーバー👉Nginx
クライアントからのリクエストに対し、
①静的コンテンツならすぐ返す!
②動的コンテンツなら(2)へ聞きに行ってから結果を返す!
という役割をする。
(2)アプリケーションサーバー👉Unicorn
ローカル環境においてrails s
でpuma
を起動していたように、GitHubのマスターにある情報をプルした後、 仮想サーバー内でアプリケーションのオンオフを担う。
gemのインストール、環境変数の設定、オプションでメモリ増強のためのスワップファイルの作成を行った!
(3)データベース👉Maria DB
AWSでMySQLを使用するためにMaria DBを使用。
(今回は、Amazon Linux 2のため)
手動デプロイ
(1)(2)(3)に関わるコマンドについて、
ssh
接続の上、コマンド実行する。ローカル環境と違う点としては、本番環境においてアセットコンパイルは自動で行われないので自分で行う必要がある。なぜならばパフォーマンスを重視するためアクセス毎にコンパイルされないような設定になっているため。
自動デプロイ
毎回、
ssh
接続しながらそれぞれのコマンドを打つのは面倒・・そんな時に便利なのが、Capistrano!
ssh
せずに、ローカル環境(カレンとディレクトリが現在のアプリ)からコマンド一つで実行できる。具体的にはGitHubの最新情報チェック・プル、アセットコンパイル、DBマイグレート、ユニコーンの起動などをコマンド一つで実行してくれるよ。
SSH keys
エラーが出て上手くいかなかった時、この緑に光っているのと光っていない違いはなんだろう?と思った。
結論は、デプロイで接続されるとグレーから緑になることがわかった💡
接続しているssh keysなのか判断する時に使える。
動的コンテンツと静的コンテンツの違い
JavaScriptについて、エンドポイントを設定し、コントローラーと協力しながらサーバーとのやりとりを行うのが「動的コンテンツ」と理解。
なので、require
で読み込んでいるだけのclick
やhover
をイベントリスナーとしたJavaScriptは「静的コンテンツ」になる💡
EC2インスタンス
- インスタンスの生成ごとに、
ssh keys
やec2-users
が作られる☺️
インスタンスを停止したら・・・
[ec2-user@ip-172-31-25-111 ~]$ sudo systemctl restart mariadb [ec2-user@ip-172-31-25-111 ~]$ sudo systemctl restart nginx
を行ってから、bundle exec cap production deploy
感想
嬉しかったのは、ブログを書いてアウトプットしたことによって、AWS EC2の意味がわかったこと!!昨日の記事を書いていたら、全体を通してAWSでのデプロイはこういう流れでこういう意味で行うのか?とだんだんわかってきて、自分の言葉で説明できるようになった。
今思うと、1回目の時は、流れもわからず、途中に「DSLプログラム」とか「インスタンス」など聞いたことない単語の意味もわからず、一通りデプロイできたものの「???」という感じだった。
2回目は意味もちゃんと理解したい!と思いもう一度チャレンジして、エンジンエックスってWebサーバーで表面のところやりとりしてくれていたのね、とかキャピストラーノで
ssh
接続しなくていいの本当に楽だなとか、それぞれの持つ役割が理解できて嬉しかった。そして、インスタンスの停止したらエラーになってしまい焦ったけれど、もう一度データベース等を再起動したらできたのでよかった。
寝不足すぎて、頭痛💦今日は早く寝る。
覚書(12/29計画の見直し)
(1)やるべきこと (2)やりたいこと (3)やれること
(1)やるべきこと
- 卒業要件の完成
(2)やりたいこと
追加実装を学ぶためのミニアプリ作成
オリジナルアプリの作成
PHPの勉強
面白そうだから参加したい・見たい(済:やめ太郎さんのキータ表彰・yahooイベント)
読書
(3)やれること
メンタル:楽しみながら、ゲーム感覚でいく🎮😎
時間で区切り(達成すればよし)
- 1日 15分以上勉強する
追加実装のミニアプリを作り、引き出しを増やす
優先順位 | 内容(機能) | 締め切り | 達成度 |
---|---|---|---|
1 | AWS S3 | 12/18 | 完了(フリマアプリ)に実装) |
2 | AWS EC2 | 12/24 | 完了(フリマアプリに実装) |
3 | ウィザード形式 | 12/27 | 完了 |
4 | SNS認証 | 12/28 | 完了 |
5 | 複数条件検索 | 12/29 | 完了 |
6 | タグ付 | 12/31 | 完了 |
7 | 画像プレビュー | 1/2 | 完了※フォーク |
8 | 複数枚写真OK | 1/4 | 完了※7に追加実装 |
9 | コメント機能(即時更新) | 1/8 | 完了 |
10 | クレカ登録 | 1/10 | 完了 |
11 | パンくず | 1/14 | 完了 |
12 | 日本語エラー | 1/18 | 完了 |
身に付ける力(直近)
PHP7
Docker