EC2環境構築【Rails編】

最終更新日:2026年8月10日

この記事でわかること

Ruby on Railsを利用したいけど、色々と通過点が多かったり、構築が難しすぎてできない、と思ったことはありませんか。確かに簡単ではありませんが、言葉の意味や仕様を理解する中で徐々にできるようになっていきます。その中でもAWSは、初心者でもある程度利用しやすい仕様になっています。今回はAWSにてRails利用環境を構築していきます。

■Ruby on Railsとは

Ruby on Rails(ルビーオンレイルズ)は、Webアプリケーション開発用のフレームワークです。アプリを作成するのに必要な機能や構造がひとつにまとまったもので、フレームワークを利用することにより開発者は必要最低限のプログラムを書くだけになり、作業効率が上がり、負担を大きく減らすことができます。

■Ruby on Railsの特徴(基本理念)

MVCアーキテクチャ

モデル(Model)、ビュー(View)、コントローラー(Controller)の3つがそれぞれの機能を果たしながら開発していく考え方で、コントローラーはユーザーからの情報に基づき、モデルとビューを制御します。機能によって分担して開発が行えるので、メンテナンスのし易さ、業務の効率化において利点があります。分割することにより、コードの再利用性を高めることもできます。

同じことを繰り返さない

Ruby on Railsでは、一度書いたコードや内容は何度書かなくても済むように設計されており、それはDRY原則(Don’t Repeat Yourself)とも言われています。記述個所を少なくすることで、仕様変更時などにおける修正漏れなどを防ぐことができます。

設定より規約

Ruby on Railsが持つ規約に沿ってコーディングをすることで、より効率的に開発ができるという考え方です。例えば、「apple」というデータベースを使用する場合、Railsが規約に沿って自動で判断し、appleという名前のモデルを使用します。これにより開発者はデータベースとモデルクラスを紐づける設定ファイルを記述せずに利用することができます。

■EC2環境構築

Railsをデプロイするために、AWSのEC2インスタンス環境構築をする必要があります。

【構築する環境を理解する】

構築に必要な環境は一言でいうと「Web3層構成」です。それぞれの層が役割を担うのに必要なソフトウェアをインストールし、それらを関連付けることで構築していきます。以下の3つの層で成り立っています。

・Webサーバー層
Webブラウザからのアクセス要求を処理する層を示します。必要に応じて、Webアプリケーション層へリクエストを要求します。

・Webアプリケーション層
Webサーバーから受けたリクエストをもとに、バックエンドで動作するJavaやPHP、Rubyなどを実行したり、データベースへのアクセスや処理を行います。

・データベース層
入力したデータやアプリケーションで参照するデータを補完する役割持ちます。

AWSにおけるWeb3層構成(Webサーバー層・Webアプリケーション層・データベース層)を示す図

■AWSにてRailsを動作させるために、実際に必要な手順

【まず下準備!1~5】

1、VPCの作成

VPCとは「Virtual Private Cloud」の略で、AWSの中に自分の使用領域を設定するといったイメージです。

・ネームタグ:任意の名前
・CIDRブロック:このVPCが使用できるIPの範囲を指定
・テナンシー:VPC作成時にハードウェアを占有有無を選択(占有する場合は追加料金)

2、サブネットの作成

サブネットは一言でいうと「ネットワークグループ」です。外部接続グループや内部接続グループなど、同じVPCの中でも異なるいくつかのグループを作成します。

・ネームタグ:任意の名前
・VPC:現在作成しているサブネットがどのVPCに属しているかを選択
・アベイラビリティゾーン:EC2作成時に選択したリージョンから指定
・CIDRブロック:VPC作成時に指定したIP範囲

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

その名の通り「インターネットの入口」になります。1で作成したVPCはあくまでAWS内での占有領域のため、外部と接続を行う際はその領域から出ていかなければなりません。その窓口となるのがインターネットゲートウェイです。

・ネームタグ:任意の名前
・VPCにアタッチ:作成したVPCと紐づけ

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

ルートテーブルとは、通信に関するルールブックのような概念です。サブネット単位で設定が可能なため、状況により通信を分ける際はここで設定します。

・ネームタグ:任意の名前
・VPC:作成したVPCと紐づけ

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

セキュリティに関するルールを記載したものを設定します。適応されたグループごとに通信の許可/拒否を設定できます。

・ネームタグ:セキュリティグループを認識するタグ名
・グループ名:セキュリティグループの名前(ネームタグと同じでも可)
・説明:インバウンドルルールかアウトバウンドルールかの選択
・VPC:セキュリティグループを適応させるVPC

【データベース・サーバー構築!6~8】

6、RDSインスタンスの作成

RDSは「Relational Database Service」の略で、AWSにおいてのデータベースのことです。AWSでDBを利用する場合、EC2インスタンスにDBのシステムそのものをインストールするか、RDSを利用するかの2択から選択できます。EC2インスタンスにインストールする場合は、この設定は不要になります。

●インスタンスの仕様
・DBインスタンスのクラス:t2_micro
・マルチAZ配置:いいえ
※上記は別のものを選択した場合、無料枠での使用が不可。無料利用枠の対象インスタンスタイプは変更される場合があるため、最新の対象範囲はAWS公式サイトでご確認ください。

7、EC2インスタンスの作成

EC2とは「Elastic Compute Cloud」の略で、AWSにおけるクラウド上の仮想サーバー本体にあたります。

・AMI選択:OSのタイプ選択
・インスタンスタイプ選択:「無料枠」にて選択(登録から1年以上経過している場合は表示なし)

8、Elastic IPの作成、紐づけ

パブリックIPの変動による欠点を解消するためElastic IPを作成し、それをパブリックIPとしてEC2インスタンスに紐づけます。

・インスタンス:作成したElastic IPを紐づけるインスタンスを選択

【EC2インスタンスへデプロイ!9~15】

9、SSH通信によるインスタンスへのログイン

SSH通信とは「Secure Shell」の略で、セキュリティの強固な通信方法のことです。SSH通信を用いた情報は暗号化され、内容が簡単に外部に出ない仕組みになっています。

・使用するSSH通信の仕様に従って設定を実施

10、EC2インスタンスの環境構築

作成したインスタンス内でRubyやその他の環境が動くように設定していきます。

・yum:設定ファイルのインストール
・node.js:サーバーサイドで動作するJavaScriptのインストール
・rbenv:複数のRubyのバージョン管理などを可能とするツールのインストール
・ruby-build:Rubyをインストールするためのrbenvプラグインをインストール
・Ruby:Rubyのインストール

【要注意】Amazon Linux 2のサポート終了について
本記事のyumコマンドによる環境構築はAmazon Linux 2(AL2)を想定した内容です。AL2は無償のセキュリティアップデート提供が2026年6月30日に終了しているため、新規にEC2インスタンスを構築する場合はdnfコマンドを使用する後継のAmazon Linux 2023(またはそれ以降のバージョン)の利用をご検討ください。パッケージ名やコマンド体系が一部異なる場合があります。

11、gitとの連携、アプリのクローン

Rubyの実行環境が整ったので、Railsアプリをgitからクローンし、EC2インスタンス内に配置します。

・gitに関する設定ファイルを作成
・Railsアプリを配置するディレクトリを作成
・公開鍵を使用し、gitと接続させる
・git cloneの実行

12、Unicornの設定

Unicornとは、アプリケーションサーバーの一種で、アプリ本体を格納するためのサーバーです。

・Unicornのインストール

13、Nginxの設定

NginxはWebサーバーにあたり、受付窓口の役割をになっています。

・Nginxのインストール

14、MySQLの設定

入力したデータやアプリケーションで参照するデータを補完する役割をするデータベースです。

・MySQLのインストール
※権限が原因で起動ができない場合があるため、その場合は関連ファイルの権限変更を実施。

15、Nginxの起動

設定したNginxをsudoにて起動します。もし起動がうまくできない場合は、以下を確認します。

・Unicornの起動確認
・Nginxの再起動
・プリコンパイルが出来ていない可能性がある場合は、Unicornの停止→rake assents:precompile RAILS_ENV=productionの実行→Unicornの再起動

■上記でもうまく動作しない場合

環境構築は簡単ではありません。使用している機器や環境によって多少動作が変わったり、うまく操作できない場合があります。その場合は原因がどこか探るためにひとつづつ精査しなければなりません。大変ですが、再度ひとつひとつ設定などを確認していきましょう。

押さえておきたいポイント

項目 AWS Microsoft Azure Google Cloud
世界シェア 約33%(首位) 約22% 約11%
強み サービス数・実績 Microsoft製品連携 データ分析・AI
無料枠 12ヶ月+常時無料 12ヶ月無料 常時無料枠あり
主な資格 CLF / SAA / SAP AZ-900 / AZ-104 ACE / PCA
  • RailsのEC2デプロイは「VPC・サブネット・IGW・ルートテーブル・セキュリティグループ」というネットワーク層の準備と、「RDS・EC2・Elastic IP」というサーバー層の準備、そして「Ruby・Unicorn・Nginx・MySQL」というアプリケーション実行環境の構築という3段階に分けて考えると理解しやすい。
  • 無料利用枠の対象条件(インスタンスタイプや期間)はAWSの制度変更により変わることがあるため、構築前に必ずAWS公式サイトで最新の対象範囲を確認する。
  • Amazon Linux 2は無償セキュリティアップデートの提供期間が終了しているため、新規構築では後継OS(Amazon Linux 2023等)への切り替えを検討する。

よくある質問

Q. AWSでRailsアプリを動かす場合、必ずRDSを使う必要がありますか?

必須ではありません。本記事のRDS(手順6)はマネージド型のデータベースサービスを使う場合の手順です。EC2インスタンス上に直接MySQLなどのデータベースをインストールして運用することも可能で、その場合はRDSの設定は不要です。運用の手間を減らしたい場合はRDS、コストや自由度を優先する場合はEC2上への直接インストールが選ばれる傾向があります。

Q. UnicornやNginxを使わずにRailsを動かす方法はありますか?

あります。本記事の構成はUnicorn(アプリケーションサーバー)とNginx(Webサーバー)を組み合わせた構成ですが、Pumaなど他のアプリケーションサーバーを使う構成も広く使われています。目的や求める性能・運用のしやすさに応じて構成を選ぶとよいでしょう。

Q. 環境構築の途中でエラーが出て進めなくなった場合はどうすればよいですか?

まずはエラーメッセージを正確に確認し、どの手順(VPC作成・EC2作成・Ruby環境構築など)で発生しているかを切り分けることが重要です。設定ファイルの記述ミスや権限不足が原因になっているケースが多いため、ひとつずつ設定を見直しながら進めることをおすすめします。

■あとがき

AWSは本当にサービスが豊富です。豊富ゆえに、初学者のエンジニアが手を出すと、何から手を付けて良いのか分からないという側面もあります。
AWSには無料利用枠が用意されており、この機会にAWSへのデプロイに挑戦してみるのもよいと思います。

【要注意】AWS無料利用枠の仕組みが変更されています
本記事にある「無料枠内での使用であれば1年間の無料期間が付与される」という説明は、主に従来のアカウント向けの制度に基づくものです。2024年7月以降に作成された新規AWSアカウントでは、無料利用枠の一部が「アカウント作成後6か月間で利用できる200ドル分のクレジット」を中心とした仕組みに変更されています。対象サービスや期間・条件は変更される場合があるため、最新の内容は必ずAWS公式サイトでご確認ください。

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →