(概要)RailsアプリをAWSにデプロイする大まかな流れ

おだやんです。

アプリ開発を学習し始めて5ヶ月。あと一ヶ月でお酒と料理のペアリングアプリがデプロイできそうです。

が!インフラ周りの作業で苦しんでます。

そんな地獄のような環境構築作業はちょっとの期間でも離れてしまうと毎回忘れてしまいます。なので大枠を備忘録として残しておきます。この記事では詳細な設定は説明しません。あくまで大きな流れを書くのみとします。

あくまで備忘録なのでこの通りやってエラーが出ても責任は負えませんので悪しからず・・

環境
Ruby 2.6.0
Rails 5.2.0
Capistrano 3.11.0
AWS linux
Nginx
Unicorn

1・Rails newの前に・・

・bundle init

・railsのコメントアウト外す

・bundle install –path vendor/bundle

2・Railsプロジェクトを作る

・Rails new

・GemfileにGem追加してインストール

3・ローカル環境とGitの連携

Git連携準備

・Githubにてアカウント作成

・git init→add→commit

・githubにてレポジトリ作成

・レポジトリにpushする

SSH接続の準備

・秘密鍵と公開鍵を生成

・公開鍵をgithubに登録

・~/.ssh/configにてssh接続設定

・ssh接続テスト

・remoteにURL登録

・pushできるかチェック

4・EC2(AWS)設定

【4-0・IAM設定】

ルートユーザーでなくIAMユーザーを作成してそちらで操作する。

【4-1・ネットワーク環境設定】

・VPCの作成
・サブネット
・インターネットゲートウェイ
・サブネットとルートテーブルの関連付け
・セキュリティグループの作成

【4-2・RDS設定】

・サブネットグループの作成
・DBインスタンスの作成

【4-3・AWSにてEC2設定】

・インスタンスの作成
・Elastic IPの割り当て
・インスタンスにSSHでログイン

【4-4・サーバーの環境構築】

・Nginxの設定
・管理ユーザーの作成
・ドキュメントルート領域を作成
・プラグインのインストール
・MySQLをセットアップ
・パラメータグループを作成

【4-5・Railsアプリのデプロイ】

・GitHubとEC2の連携
・アプリケーション格納用の領域を作成
・GitHubからRailsアプリをクローン
・nginxの設定
・Unicornの設定

【4-6・ロードバランサー(AWS)の設定】

【4-7・アプリ起動】

5・独自ドメインを紐付ける

5-1・お名前.comで独自ドメインを取得

5-2・Route53(AWS)にて設定

5-3・お名前.comにてネームサーバー変更

5-4・コマンドラインにてネームサーバーの確認

5-5・Route53にてCreate Record Setを作成

5-6・サーバーでNginx設定

5-7・Unicornのプロセスをkill

5-8・Nginx&Unicorn再起動

5-9・Unicornも再起動。

5-10・ドメインにアクセスしてアプリの表示テスト

6・SSL(https)接続設定を行う

6-1・AWSのCertificate Managerで各種設定

設定を行いリクエストを送信。届いたメールを承認する。

6-2・EC2にて設定

EC2→ロードバランサー→リスナーを編集しhttpをhttpsに変更。
次の画面でACMの既存の証明書(CMで発行したもの)をチェック。
保存する。

6-3・Route53にて設定

Hosted Zone→対象ドメインを選んでGo to Record Setsへ。
Type:Aドメインを選択してAliasをYesに。
TargetにELBを選ぶ。

6-4・Nginx(サーバー側)のhttps設定

(何を記述するか調査中)

6-5・ローカルでenvironments/production.rbを編集

config.force_ssl = trueのコメントアウト外す。

6-6・Unicornのプロセスkillして、Nginx再起動&Unicorn再起動

6-7・ブラウザからドメインにアクセス

 

以上です。

より細かい流れは以下の記事、もしくは最下部の参考記事をご覧ください。

(詳細)RailsアプリをAWSにデプロイする手順

 

(参考にした記事)

初心者向け:AWS(EC2)にRailsのWebアプリをデプロイする方法

RailsアプリをAWSにイチからデプロイするまでの手順メモ

コメントを閉じる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA