カテゴリー
サインイン 新規登録
学習時間 20時間
難易度 中級
質問投稿
価格 ¥2,980
月額 ¥2,980
Unlimited会員はこちらの教材を含む100種類以上のUnlimited対象教材が学び放題

RailsアプリケーションをAWSに自動デプロイする方法を学ぼう!

本教材では、Railsチュートリアルで作成するアプリケーションをCIツールであるGitHub Actionsで自動テストし、AWS(EC2)に自動デプロイする仕組みの構築方法を学びます。

5
最終更新 2022/8
やんばる

RailsをAWS(EC2)に自動デプロイする方法を学ぶ

本教材では、Railsチュートリアルで作成するアプリケーションをCIツールであるGitHub Actionsで自動テストし、AWS(EC2)に自動デプロイする仕組みの構築方法を学びます。

本教材は、Railsチュートリアル完走者向け読み物ガイドの中でも、次のステップの教材のひとつとして紹介されています。

なぜ自動デプロイを学習するのか?

このようなCI/CDパイプラインをあらかじめ構築しておくことで、バグの発生を抑えつつ、アプリケーションの機能追加などを1日に何回も本番環境にリリースすることが可能となります。

CI/CDについての補足

CI/CDとは、以下のような仕組みのこととなります。

  • CI(継続的インテグレーション)
    • 変更されたソースコードがGitHubなどのリポジトリに提出(プッシュ)されるたびに自動でテストを行うことで、変更後のソースコードをリポジトリのメインライン(mainブランチなど)に統合(gitで言うところのマージ)可能な状態にする仕組み
  • CD(継続的デリバリー)
    • メインラインのソースコードを自動で本番環境などにデプロイする仕組み

よりモダンな構成を取るのであればEC2ではなく、ECS(Fargate)などのコンテナサービスにデプロイすることが望ましいと考えられますが、Herokuデプロイぐらいまでしか経験の無いインフラ初心者であれば、まずはEC2での環境構築とデプロイ方法から学ぶことをおすすめします。

学習内容

本教材を通じて、以下について学ぶことができます。

  • RailsチュートリアルのアプリケーションをAWS(EC2) + nginx + pumaの環境で動かす方法
  • GitHub Actionsでの自動テストの実行方法
  • GitHub ActionsからAWS(EC2)にRailsアプリケーションをデプロイする方法
    • GitHub ActionsからEC2にSSHログインしてデプロイ
    • GitHub Actions + Capistranoを使ってEC2にデプロイ
    • プライベートサブネットにあるEC2へ踏み台サーバー経由でデプロイする方法も解説

また、周辺知識として以下も解説していきます。

  • nginxの設定ファイルの構文
  • Linuxで新規ユーザーを作り、SSHログイン可能とする方法
  • pumaをsystemdで管理する方法
  • HTTPS化
    • Route53での独自ドメイン登録
    • ACMでの証明書発行
    • ALBリスナーの登録
    • Route53へのALIASレコードの登録

作成物のイメージ

本教材完了時点のインフラ構成図

Image from Gyazo

GitHub Actionsによる自動テスト・自動デプロイ

Image from Gyazo

Image from Gyazo

自動デプロイによる画面デザイン変更

Image from Gyazo

本教材の対象者

  • Railsチュートリアルを終えて、AWS(EC2)への自動デプロイ方法を学びたい人
  • Rubyの主要なデプロイツールであるCapistranoの使い方を学びたい人
  • GitHub Actionsの使い方を学びたい方

受講における必要条件

  • Railsチュートリアルを終えている、またはRailsで簡単なアプリを作ったことがあること
  • AWSアカウントを持っており、AWSのマネジメントコンソールにログイン可能な、管理者権限(AdministratorAccess)を持ったIAMユーザーを用意できること
  • Gitの初歩的な知識があること(ブランチを作る、コミットする、などが行える)
  • GitHubの初歩的な知識があること(アカウントを持っていて自分のリポジトリを作ったことがある、プルリクエストを立てることができる)
  • Linuxのコマンドの初歩的な知識があること(ls, cd, pwd, mkdir, catを使ったことがある)

AWSの利用料金について

本教材で利用するAWSリソースについては、一部従量制料金の対象のものがあります。

無料利用枠が設定されたスペックのものを使用するなど教材全体で極力料金を抑えるようにしていますが、無料利用枠の無いNATゲートウェイなども作成するため、利用状況に応じた費用が発生します。

あらかじめご了承ください。

学ばないこと

本教材はメインテーマである自動デプロイを集中的に学べるよう、AWSのインフラ構築や自動テストについて解説を最小限としている箇所があります。

具体的には、以下の2点について教材の取り扱い範囲外としています。

1. 登場するAWSリソースの構築方法を漏れなく解説すること

本教材で登場するAWSのリソースの大半はテンプレートファイル(CloudFormation)を使って自動で作成します。具体的には以下のAWSリソースとなります。

  • VPC、サブネット、ルートテーブル、インターネットゲートウェイ、セキュリティグループ、Elastic IP、EC2

よって、これらのAWSリソースに関しては、AWSの入門教材などでよく登場するような、AWSのマネジメントコンソール(管理画面)でひとつひとつ作成する方法を説明していません。ご注意ください。

なお、以下については詳細に解説します。

  • Railsを動かすために必要なソフトウェアをEC2にインストールする手順
  • S3とIAMロールの作成
  • NATゲートウェイの作成とプライベートサブネットのルーティング設定
  • ALBの作成
  • 踏み台サーバー(EC2)の作成

2. RSpecの解説やRuboCopの追加

GitHub Actionsで実施する自動テストでは、Railsチュートリアルで実装したRSpecによるテストをそのまま実行するだけに留めています。

RSpecのテストを追加したり、RuboCopによるコードの静的解析を追加するといったことは行なっていませんのでご了承ください。

本教材の対応バージョン

  • Rails 6.0.3.6
  • nginx 1.20
  • puma 4.3.6
  • Capistrano 3.x
  • Amazon Linux 2

本教材で質問対応可能なOSや環境

  • Mac OS(M1 Mac含む)
  • Cloud9

本教材のローカル開発環境は、教材で用意したDockerの環境をMac OSまたはCloud9から起動させて構築します(構築・利用にあたって必要となるDockerコマンドについては解説するので、Dockerに関する事前知識は不要です)。

なお、このDocker環境はWindowsから直接起動させることも可能だとは思いますが、Windowsは教材の質問対応の対象外としていますのでご注意ください。

回答可能な質問内容とそうでない質問内容

教材を進める中で生じたエラーに関する質問や、教材本文の説明内容がわかりにくい場合に再説明を求める質問に関しては回答可能です。

教材で取り扱っているWeb技術に対する広く一般的な質問は回答対象外としていますのでご了承ください。そうした質問はメンターサービスなどをご利用ください。

また、教材のアプリを参考にして作った、独自の実装部分が含まれるアプリのエラーや不具合に関する質問も回答対象外としております。

カリキュラム

Section 0 はじめに
  • 0-1 RailsをAWSに自動デプロイしよう!
  • 0-2 Dockerについて
  • 0-3 Dockerを使う準備(Mac)
  • 0-4 Dockerを使う準備(Cloud9)
  • 0-5 サンプルアプリケーションのコピー
  • 0-6 Railsの開発環境構築
  • 0-7 Herokuへのデプロイについて
  • 0-8 Herokuアカウントの作成
  • 0-9 クレジットカードの登録
  • 0-10 Heroku CLIのインストール
  • 0-11 Herokuアプリケーションの作成とアドオン追加
  • 0-12 Mailgun関連の設定
  • 0-13 Herokuへのデプロイと動作確認
Section 1 GitHub Actionsでテストを実行する
Section 2 RailsをEC2向けに修正する
  • 2-1 本章の流れ
  • 2-2 nginxとpumaの連携
  • 2-3 dotenv-railsの使用
  • 2-4 環境変数の使用
  • 2-5 master.keyの作成
  • 2-6 HTTP通信への対応
  • 2-7 rbenvへの対応

講師のプロフィール

教材のレビュー

5.0
3件の評価
100%
0%
0%
0%
0%
kou1206 1年以上前
いつもこちらの執筆者さんにはお世話になってます。 AWSでアプリケーションデプロイするという情報はネットの記事にもありますが、断片的な情報が多かったり、環境に差異が多々あったりする中でこちらの教材はローカル開発環境でdockerを使用してレクチャーして下さったり、再現性を求めれるような教材内容でした。 また、質問にも的確にお答え頂いたりして、この金額ではありえないような素晴らしい教材だと思いました もっと見る
moyomoto3 1年以上前
こちらの教材でGitHub Actions、Capistrano、AWSを用いた自動テスト・自動デプロイの方法とその流れを一通り学ぶことができました。一部つまづく箇所もありましたが、質問にも丁寧に回答いただき無事最後までやり通すことができたので、教材の内容・教材のサポートともに大満足です。今回学んだことを元に自身のオリジナルアプリケーションもブラッシュアップしようと思います。ありがとうございました もっと見る
tryoma0326 1年以上前
丁寧な解説でとてもわかりやすかったです! 完走できました。 曖昧だったところの理解が深まりました。