RailsアプリをAWS EC2にデプロイする方法その②DB.サーバー構築編

AWSを使って本番環境にデプロイさせたので今回はその方法を簡潔に分かりやすく4段階にわけて書いて行きます。

1・下準備編

RailsアプリをAWS EC2にデプロイする方法その①下準備編 - 21歳フリーターからrailsエンジニアになるまで

2・DB.サーバー構築編⇦今回ここ

RailsアプリをAWS EC2にデプロイする方法その②DB.サーバー構築編 - 21歳フリーターからrailsエンジニアになるまで

3・デプロイ編①

RailsアプリをAWS EC2にデプロイする方法その③デプロイ編① - 21歳フリーターからrailsエンジニアになるまで

4・デプロイ編②

RailsアプリをAWS EC2にデプロイする方法その③デプロイ編② - 21歳フリーターからrailsエンジニアになるまで

 

 第2章ということで頑張っていくぞ!!

 

6・EC2インスタンス作成

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

f:id:yamasey712:20191012144733p:plain

さあいよいよサーバー本体を作っていきます!!テンション上がりますね!!

top→EC2→インスタンスインスタンス作成を選択

f:id:yamasey712:20191012145017p:plain

すると、AMIを選択する画面へと移行します。

f:id:yamasey712:20191012145216p:plain

今回は、無料枠の範囲内で、一番上のAmazon Linuxを利用していきましょう!

 

お次はEC2インスタンスのタイプ選択です。
パソコンのスペックを決めるように、メモリやCPUなどを決めていきます。

f:id:yamasey712:20191012145430p:plain

この無料枠を選択しましょう!!

 

次はEC2インスタンスの詳細設定です。
まずは僕の設定を下記に記載致します。

インスタンス数:1

スポットインスタンスのリクエスト:チェックなし

ネットワーク:作成したVPC

サブネット:作成したサブネット

自動割り当てパブリックIP:有効化

IAMロール:なし

シャットダウン動作:停止

削除保護の有効化:チェック

モニタリング:チェックなし

テナンシー:共有

 

とこんな感じ設定してください!!

 

お次はルートボリュームに関する設定です。

今回は

ボリュームタイプ:汎用

サイズ:8GB

 これでいきましょう。

次のページでは、作成しているEC2インスタンスにタグを設定出来ます。

f:id:yamasey712:20191012154401p:plain

Name:CHARME-instance 

とでもしておきましょう。

最後はセキュリティグリープの設定です。

こちらは前半で作成したセキュリティグループを適応させる為

1・既存のセキュリティーグループを選択する

2・前章で作成したセキュリティーグループを選択

 この流れで紐付けを行なっていきます!!

f:id:yamasey712:20191012154819p:plain

その後、内容を確認し、作成を選択してください。

以上でEC2インスタンスの作成は終了です!!

ですが、もう1つだけしなければいけないことがあります!!

 

7・Elastic IPの作成&紐付け

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

詳しい説明は省きますが

取得→紐付けまでの流れを見ていきましょう。

1・サイドバーの「Elastic IP」を選択

2・「新しいアドレスの割り当て」を選択

3・「関連付ける 」

 これによりアドレスを取得できます。

次に

1・取得したElasic IPを選択

2・「アクション」

3・「アドレスの関連付け」 を選択

4・インスタンス:先ほど作成したインスタンス

を選択

5・「関連付ける」

 問題なく処理が完了すれば、EC2インスタンスのパブリックIPが今取得したElastic IP担っていると思います!

 

これにてDB.サーバー構築編はおしまい!!!!

疲れたあぁ

次からは実際にアプリをアップロードするデプロイ編を書いていきます!!!

 

次章:デプロイ編①

RailsアプリをAWS EC2にデプロイする方法その①下準備編

はじめに

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

先日自身初となるポートフォリオを完成させました!

そしてAWSを使って本番環境にデプロイさせたので今回はその方法を簡潔に分かりやすく4段階にわけて書いて行きます。

1・下準備編⇦今回ここ

RailsアプリをAWS EC2にデプロイする方法その①下準備編 - 21歳フリーターからrailsエンジニアになるまで

2・DB.サーバー構築編

RailsアプリをAWS EC2にデプロイする方法その②DB.サーバー構築編 - 21歳フリーターからrailsエンジニアになるまで

3・デプロイ編①

RailsアプリをAWS EC2にデプロイする方法その③デプロイ編① - 21歳フリーターからrailsエンジニアになるまで

4・デプロイ編②

RailsアプリをAWS EC2にデプロイする方法その③デプロイ編② - 21歳フリーターからrailsエンジニアになるまで

 

少しでも僕と同じ境遇の人の役にたてたら光栄です。

 

また、今回はこちらの記事を参考にしました。同じような内容になってしまいますが初学者なりに簡潔に書いてくことを心がけます。

qiita.com

今回はCHARMEという仮想のアプリをデプロイして行きます。

それじゃ、レッツラゴー!!

 

1・VPCの作成

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

f:id:yamasey712:20191012131355p:plain

まずは、AWSという広い広い土地の中から自分専用の土地を作ります。

この自分専用の土地の中に環境を構築していくイメージです。

 

トップ画面より「VPC」をクリックして

詳細ページの左上「VPCの作成」をクリックしてください。

f:id:yamasey712:20191012132220p:plain

入力する項目が出てきますので

それぞれに

ネームタグ:VPC_for_CHARME (なんでも良いよ)

CIDRブロック:10.0.0.0/16

テナンシー:デフォルト

 このようにします。

いい調子だ(^ ^)

 

2・サブネットの作成

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

f:id:yamasey712:20191012132925p:plain

サブネットとは、一言で言えば 「ネットワークグループ」 といったところでしょうか。

「これらは外部との通信だけを行う」「これらは内部通信だけを行う」
といった具合に、同じVPCの中でも役割の異なるいくつかのグループが出来上がります。
このグループを「外部接続グループ」「内部接続グループ」といった具合に単位毎に分けてくれるものが、サブネットと呼ばれます。

f:id:yamasey712:20191012133113p:plain

 

ここでの入力は4つ!!

ネームタグ:subnet_for_CHARME(なんでも良いよ)

VPC:さっき作ったVPCを選択

アベイラビリティーゾーン:ap-northeast-1a

CICRブロック:10.0.0.0/24 

 

このアベイラビリティーゾーンは選択するリージョンによって違いますが、よっぽどのことがない限り「アジアパシフィック(東京)」を選択し進めて行きましょう。

リージョンはログイン後の右上の部分で選択できます。

 

3・インターネットゲートウェイの作成

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

f:id:yamasey712:20191012133907p:plain

インターネットゲートウェイとは名前の通り「インターネットの入り口」にあたります。

1で作成したVPCは、あくまでAWS内での占有領域です。

外部との接続を行う際は、その領域から外に出ていかなければなりません。
その窓口となるのが、今回のインターネットゲートウェイなのです。

f:id:yamasey712:20191012135016p:plain

ここでの作業はいたって簡単で2ステップです

ゲートウェイの名前を決める

ネームタグ:gateway_for_CHARME 

 ②ゲートウェイVPCを紐づける

「アクション」をクリックし「VPCにアタッチ」を選択

さっき作成したVPCを選択

 

状態の欄が赤色の文字から、緑色で「attached」に変化したかと思います。

これにてインターネットゲーウェイの作成は終了です!

 

疲れてきた??頑張ろう!

 

4・ルートテーブルの作成

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

f:id:yamasey712:20191012135720p:plain

ルートテーブルは、 通信に関するルールブック みたいなものです。

「この場合はこっちに通信を送る」「この場合はこっち」
みたいなものをまとめたものがルートテーブルです。

 

f:id:yamasey712:20191012135942p:plain

ここまでくるとやることが一緒ですね。

名前タグ:table_for_CHARME

VPC:作ったやつを選択 

 

そしてこのルートテーブルに、
「インターネットゲートウェイをルーティングするというルール」を記載したいと思います。

作成したルートテーブルを選択した状態で、
下のタブ「ルート」を選択し、
「ルートの編集」を選択します。

 

f:id:yamasey712:20191012140817p:plain

すると、新たな入力欄が出ますよね?

送信先:0.0.0.0/0

ターゲット:先ほど作成したゲートウェイ 

 このように設定し保存ボタンをクリックします。

 

そして最後にサブネットとの紐づけになります。

1・サイドバーの「サブネット」を選択

2・関連づけを変更するサブネットを選択

3・画面下のルートテーブル選択

4・編集

5・先ほど作成したルートテーブルを選択

6・保存 

こんな感じで紐付けを行います!

 

5・セキュリティーグループの作成

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

f:id:yamasey712:20191012141348p:plain

下準備編もラストになりましたので頑張りましょう!!

 

セキュリティーグループは、 セキュリティーに関するルールを記載したもの です。

「この通信は許可」「この通信は拒否」といった具合に、
適応されたグループ毎にルールを設定できます。

 

サイドバーのセキュリティグループを選択し作成をスリック

f:id:yamasey712:20191012141814p:plain

入力する項目は3つ

セキュリティーグループ名:CHARME_securitygroup

説明:セキュリティーグループ名と同じ名前でいいよ
VPC:さっき作ったVPC

 ここら辺はすんなり行きましょう!

 

次はルールの設定です。

ここからなんだかややこやしくなってくる所ですが、ここでは解説なしで簡潔に書きますので解説が必要な方はググってくだいな(ごめんなさい(涙))

1・作成したセキュリティーグループを選択

2・下のインバウンドルールを選択

3・ルールの編集を選択

ここからルールを記述していきますよ!

2種類を記述します。

タイプ:SSH

プルトコル:自動選択

ポート範囲:自動選択

ソース:マイIPを選択*自動で ***.***.***/32をやってくれる 

 

タイプ:HTTP

プルトコル:自動選択

ポート範囲:自動選択

ソース:カスタムを選択し0.0.0.0/0を記述

 

ここでは詳しく解説はしませんがこれにて下準備編は終了です!!

お疲れ様でした!!

次はDB.サーバー構築編です!!頑張っていきましょう!!

 

次章:DB.サーバー構築編

Rails未経験者の初ポートフォリオ

さて、先日やっと自身初のポートフォリオが完成しました!!!(涙)

それがこちらです!!

 

テーマは魅力を共有しましょう!!っていうアプリです。

 

ポートフォリオhttp://54.95.23.50/

GitHubhttps://github.com/yamasey/CHARME

 

じゃん!!!!ってドヤ顔できるほどの作品では無いけど頑張りました。(涙)

計1ヵ月ちょっと掛かってしまいました(ハマりにハマったので笑)

この1ヵ月は『よーし!!』と『おいおいまたかよ(涙)』の繰り返しでした。

 

ということで今回は僕のポートフォリオ製作の苦戦した点を書いていきます!!

 

苦戦した点

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

僕は大きく3つの部分で苦戦しハマりまくって泣きそうになりました。笑 

  1. 環境構築
  2. Devise周辺
  3. AWSでのデプロイ

 

1. 環境構築

僕ははじめはRails6のバージョンで開発を進めようとしました。

しかし何やら6からはWebpackerならぬものが導入されたみたいでプラグインをなんとかしろ!!って何回も怒られてしまいここで詰まるくらいならバージョンを下げようということでRails5のバージョンで開発を進めていきました。

 

2. Devise周辺

Deviseは調べれば割と簡単に実装はできてしまします。しかし実装できる機能が多彩すぎるので初学者は多少苦労するかもしれません。

僕は実装の部分では苦労しませんでしたが、なぜかサインナップとログインをしようとすると読み込み状態が続くバグに見舞われ5日ぐらいハマりました。(いきなり治った)ここは流石に参考資料などがなかったため心が折れそうになりました。。

 

3. AWSでデプロイ

これが自分にとっての最大の山場でした。

時間にして約1週間かかりました。(涙)

本当に何度herokuで妥協しようかなと思ったことか。

 中でもAWSの環境構築と画像投稿の部分でハマりまくりました。

環境構築の部分はコンピュータ側の知識も必要となってくるためググりまくってなんとかデプロイに成功しました。永遠にページが読み込めません。から画面が本番環境に自分のアプリのページが出た時には死ぬほど嬉しかったです。

喜んだのもつかの間S3を使った画像投稿機能もかなりハマり泣きそうになりました。

グーグルには本当にお世話になりましたよ。

(時間があればデプロイの仕方のブログもあげますね)

 

なんでAWS

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

 これはいたってシンプルで差別化をしたかったからです。

一番初めは大体の人がherokuでデプロイをすると思います。

ここで AWSでデプロイをすることで少しでも採用する方が『お?』となってくれればと思い難易度は高かったですが頑張りました。

 

最後に

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

ここで終わったわけではなく最後の一番大事な部分の就活があります。

自分の納得できる会社に入れるよう最後まで気を抜かずに頑張っていきます。

 

 

プロフィールを書きますよ

すごく久しぶりになってしまった。

『忙しいのは理由にならない!』と言われてしまったら終わりですが定期的に書かなくちゃいけないですね。

ということで今回は自分のプロフィールを詳しく書いていきます。

誰得なのかは分かりませんが、もしみた方はこんな人なんだなぁぐらいに思っていてください。笑

 

簡単な自己紹介

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

・1998年7月12日生まれの21歳

 

静岡県浜松市三ヶ日町という田舎で育つ(田舎だけどとてもいい町)

 

・小中高と野球に捧げる(ポジションはずっとセンター)

 

・高校卒業後は大学に行かずオーストラリアに行ったり劇団四季で働いてみたりとやりたいことをやりたいだけしいた。

 

・そして現在エンジニアとして就職活動をスタートさせる(なんか決意表明みたい)

 

とまぁ簡単にまとめるとこんな感じです。。。よくいそうですね。笑

 

なんで大学に行かなかったの??

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

いい質問ですね。(自作自演だよね)

 理由は大きく2つあります。

 

1つ目は母子家庭だったからです。

いわゆる『金銭的に。。。』みたいな感じでよくあることですね。

これは言ってしまえば単なる後ずけのような物なのでそこまで自分の中で辛かったなどの気持ちはありません。

 

2つ目は大学というものに価値を見出せなかったことです。

これが自分の中で1番大きな理由でした。

それまでは大きな『夢』がありませんでした。このまま高額な学費も払って理由もなしにただ大学に進学するだけの自分を想像した時に、絶対4年間が何も得られずに終わってしまうなと思い大学に行く。という気持ちは早い段階から消えてました。

 

じゃあ何してたの??

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

いい質問ですね。(これも自作自演)

 

まず前提として、大学に行かなくて本当によかったと思っています!大学に行っていたら決してできなかった経験を詰めたからです。

 

高校3年生の夏。10年続けた野球に一区切りがつき今後のことを考えた時に『大学には興味ないけど海外には興味がある』ということで、高校卒業後6ヶ月間アルバイトをして10月からオーストラリアへ1人スーツケース1つでいきました。

ここでは数えきれないほどの刺激を受けました。

全てが新しいことで毎日が楽し行くて充実した日々を過ごせました。今まで当たり前だと思っていたことがこっちでは常識でなかったり、全く違う考えを持った人たちと関わることで自分の中での教養が育ちました。

また、自発的になんでも行動する力が身につきました。

この経験と生い立ちがあったからこそ後にエンジニアを目指すきっかけにもなることができたので決して間違った事はしてないと信じてます!

 

なんでエンジニア??

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

きっかけはささいな事でした。

僕は堀江貴文さんが昔から好きでよく動画を見ていました。

そしてあの日も何気なく動画を見ているとその日はエンジニア(Progate) の会社の代表とのコラボ動画を出していました。

見ているとプログラミングの事について話していたりとても面白い内容でした。

そして僕もやってみたい!!と思い始めたのが全ての始まりでした。(6月ぐらいだったかな)

そして、進めていくうちにさらに理解、関心が深まり、エンジニアという職業は自分のやりたいサービスを自分の手で作り上げていけるすごく面白い仕事だなと思うようになりました。

 

本当にエンジニアという仕事を知り興味を持ててよかった(涙)

 

最後に

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

先日就活用のポートフォリオが完成しいよいよ完成したのでこれからエンジニアになるべく頑張っていきます!

僕自身にとって初めてやりたい!と心から思える仕事に出会えたので頑張ります!