Amazon Linux 2へのRuby on Railsのインストール方法と動作確認【AWS】

2018年12月29日土曜日

Web技術

Amazon Linux 2へのRuby on Railsのインストール

こんにちは、財前航介です。

本日は、AWS上でAmazon Linux 2のサーバーを立て、Ruby on Railsをインストールし、動作確認するまでの一連の方法を見ていきましょう。

この説明で用いている環境は以下のものです。

Amazon Linux 2


インストールされるRuby on Railsのバージョンは、以下のものです。

Ruby ruby 2.5.0 [x86_64-linux]
Rails 5.2.2


それでは、サーバーを作成して、Ruby on Railsをインストールする手順を見ていきましょう。

※ AWSを用いず、通常のLinuxにRuby on Railsをインストールされる方は、以下の目次の「1-2. LinuxへのRuby on Railsのインストール」からご参照ください。


Amazon Linux 2へのRuby on Railsのインストール方法と動作確認


Amazon Linux 2のEC2インスタンスの作成


AWSのEC2インスタンス管理画面から、「インスタンスの作成」を選択します。

AWSのEC2インスタンス管理画面から、「インスタンスの作成」を選択します。


「Amazon Linux 2」を選択します。
「Amazon Linux 2」を選択


無料利用が可能な「t2.micro」を選択しましょう。
Amazon Linux 2 インスタンスタイプの選択


内容を確認し、「作成」を押下します。
Amazon Linux 2インスタンス作成の確認


既にキーペアをお持ちであれば、「既存のキーペアの選択」からキーペアを選択し、チェックボックスにチェックを入れます。
その後、「インスタンスの作成」をクリックします。
Ruby on Rails


作成ステータスが表示されるので、「インスタンスの表示」をクリックします。

Amazon Linux 2 インスタンス作成ステータス


初期化中になっているので、完了するまで待ちます、
Amazon Linux 2 インスタンス初期化中


完了したら、その行をクリックします。
Amazon Linux 2 チェック合格


作成したインスタンスの、パブリックIPを記録しておきましょう。
(後ほど接続する時に利用します。)
AWSパブリックIPアドレス


ローカルPCからサーバーへのSSH接続が可能なソフトウェアを開きます。
(今回は、PuTTYを用います。)
PuTTYを用いてAmazon Linux 2に接続


「Session」から、先ほど確認したパブリックIPを入力します。
AWSサーバーのIPを入力


「SSH」配下の「Auth」を開き、「Private key file for authentication」に、ローカルに配置されているキーのパスを入力します。
(Browseボタンから選択できます。)
AWSサーバーに対するキーを選択


再度「Session」に戻り、今の設定を、PuTTYに保存しておきましょう。
「Saved Sessions」に任意の名前を入力して、「Save」をクリックします。
Ruby on Rails


保存したセッション名を選択して、「Open」をクリックします。
Amazon Linux 2に接続


ターミナルが立ち上がり、「login as」と言うメッセージが表示されたら、「ec2-user」というユーザー名を入力し、Enterキーを押下。
その後、上記のキーペアに紐づいたパスワードを入力し、Enter。
Amazon Linux 2へのログイン


下記のような画面が表示されれば、EC2サーバーへのログインは成功です。
Amazon Linux 2 へのログイン成功


LinuxへのRuby on Railsのインストール


Ruby on Railsのインストールは、下記のコマンドを、一行ずつ入力していくだけです。

一行ずつこのブログからコピーして、右クリックでターミナルに貼り付け、Enterキーで実行してみてください。

また、もしログイン直後のパスから移動してしまった人は、「cd $home」と入力し、ユーザーフォルダ直下に移動してから、下記のコマンドを実行しましょう。

※ 一旦すべてのコマンドを列挙しますが、後ほど画面キャプチャ付きで、1コマンドずつ解説をします。
1.
sudo yum install -y git gcc openssl-devel readline-devel zlib-devel sqlite-devel

2.
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

3.
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

4.
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

5.
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

6.
source ./.bash_profile

7.
rbenv install --list

8.
rbenv install 2.5.0

9.
rbenv global 2.5.0

10.
rbenv rehash

11.
gem install bundler sqlite3 rails

12.
rails --version

13.
rails new testApp

14.
cd testApp

15.
sudo yum install curl

16.
sudo yum install epel-release

17.
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

18.
sudo yum install nodejs

19.
rails s


上記のコマンドを1行ずつ実行していってくれれば問題ないですが、
念のため、1コマンドずつ、実行の過程のキャプチャを見ていきましょう。

1.
sudo yum install -y git gcc openssl-devel readline-devel zlib-devel sqlite-devel

上記のコマンドで、yum installを行います。
完了すると、下記のような画面が表示されます。

Amazon Linux 2 yum install完了

「Complete!」と表示されているのが分かりますね。


2.
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

Gitのリポジトリをクローンしてきます。
Amazon Linux 2 Gitリポジトリのクローン


Amazon Linux 2 Gitリポジトリのクローン完了



3.
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

同様に、Gitのリポジトリをクローン。
Amazon Linux 2 Gitリポジトリのクローン2


Amazon Linux 2 Gitリポジトリのクローン完了2


4.
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

bash_profileにパスの情報を追記します。
Amazon Linux 2 パス追記


5.
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

同様にbash_profileに追記。
Amazon Linux 2 bash_profile追記


6.
source ./.bash_profile

bash_profileに変更を加えた内容を、環境に反映させます。
Amazon Linux 2 環境に反映


7.
rbenv install --list

rbenvからインストールできるRubyのパッケージを確認。
Rubyパッケージ確認


一覧が表示されます。
Rubyパッケージ一覧


8.
rbenv install 2.5.0

バージョンを指定して、インストール。
Amazon Linux 2 へのRubyインストール


指定したバージョンのRubyがインストールされました。
Amazon Linux 2 へのRubyインストール完了


9.
rbenv global 2.5.0

システム全体で使う、Rubyのバージョンを指定します。
Amazon Linux 2 でのRubyバージョン設定


10.
rbenv rehash

リハッシュを行えば、Rubyのインストールは完了です。
Amazon Linux 2 でのRubyリハッシュ


11.
gem install bundler sqlite3 rails

今度は、Railsのインストールを行います。
Amazon Linux 2へのRuby on Railsインストール


無事Railsがインストールされました。
Amazon Linux 2へのRuby on Railsインストール完了


12.
rails --version

無事インストールされていることを確認するために、Railsのバージョンを確認してみましょう。
Amazon Linux 2へのRuby on Railsインストール確認

Enterキー押下後にバージョンが返されれば、Railsのインストールは成功です。


13.
rails new testApp

試しに、動作確認用のアプリケーションの雛形を作成してみましょう。
Amazon Linux 2でのRuby on Railsアプリケーション作成


上記のコマンドを入力すると、バンドルインストールが開始し、アプリケーションに必要な資材が準備されます。
Amazon Linux 2でのRuby on Railsアプリケーション作成完了


14.
cd testApp

試しに、作成したアプリケーションのフォルダ内に入ってみましょう。
Amazon Linux 2内のRuby on Railsアプリケーションフォルダ

この時点で、Webサーバーを起動してみても良いのですが、この時点ではまだ、サーバーを起動しても、「JavaScriptのランタイムが見つからない」という趣旨のエラーが出てしまうはずです。

これを解消するために、Node.jsをインストールします。


15.
sudo yum install curl

curlをyumインストール。
Railsサーバー起動のためにNode.jsインストール1


確認メッセージが表示されるので、「y」を入力し、Enterキーを押下してください。
Railsサーバー起動のためにNode.jsインストール2


「Complete!」と表示されれば成功です。
Railsサーバー起動のためにNode.jsインストール3


16.
sudo yum install epel-release

epel-releaseをインストールします。
Railsサーバー起動のためにNode.jsインストール4


既にインストールされていれば、「Error: Nothing to do」と表示されますので、そのまま先に進みます。
Railsサーバー起動のためにNode.jsインストール5


17.
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

Node.js v8リポジトリからインストールを行うため、コマンドを実行します。
Railsサーバー起動のためにNode.jsインストール6


Railsサーバー起動のためにNode.jsインストール準備完了


18.
sudo yum install nodejs

Node.jsのインストールを行います。
Railsサーバー起動のためにNode.jsインストール実行


確認メッセージが表示されるので、「y」を入力し、Enterキーを押下してください。
Railsサーバー起動のためにNode.jsインストール実行2


再度確認メッセージが表示されますので、同様に「y」を入力します。
Railsサーバー起動のためにNode.jsインストール実行3


「Complete!」と表示されたら、Node.jsのインストールは成功です。
Railsサーバー起動のためにNode.jsインストール完了


19.
rails s

サーバーの起動コマンドを入力し、Enterキーを押せば、Railsのサーバーが起動します。
Ruby on Railsサーバー起動


「Ctrlキー + C」でサーバーが停止できる旨と、ポート番号3000でWebサーバーにアクセスできる旨が表示されます。
Ruby on Railsサーバー起動完了

以上でWebサーバーが起動しているので、外部のWebブラウザーからアクセスができるようになります。

しかし、AWS側の設定で、該当のポート番号に対する通信を有効にしなければいけません。


Ruby on Railsの動作確認と、セキュリティグループの設定


Ruby on RailsのWebサーバーが正常に立ち上がっているかを確認するために、皆さんがお持ちのコンピューターのWebブラウザから、試しに接続してみましょう。

アドレスバーに、以下のように入力してみましょう。
[グローバルIPアドレス]:3000

※ グローバルIPアドレスは、上記でPuTTY接続に用いたものです。
Amazon Linux 2をローカルPCから閲覧


AWSから3000番ポートへのHTTPアクセスを受け付けてもらえないため、エラーが表示されてしまいます。
Amazon Linux 2をローカルPCから閲覧エラー


AWSの操作画面から、セキュリティーグループをクリックしましょう。
Amazon Linux 2のセキュリティグループ


該当のセキュリティーグループを選んで右クリックをしてください。
Amazon Linux 2のセキュリティグループ選択


「インバウンドルールの編集」をクリック。
Amazon Linux 2のセキュリティグループ右クリック


ここでは動作確認のため、タイプを「すべてのトラフィック」とし、
ソースを「任意の場所」としましょう。
(セキュリティについて考慮する場合は、適宜適切な設定を行ってください。)
Amazon Linux 2のセキュリティ設定


再び「IPアドレス:3000」を入力します。
(Google Chromeの場合、「http://」という記載はあっても無くても同じなので、どちらでも良いです。)
Amazon Linux 2へ再接続


「Yay! You're on Rails!」と表示されれば、正常にサーバーが立ち上がっています。
Amazon Linux 2上でRuby on Railsが動作している


「You're on Rails!」
とは、
「あなたはレールに乗りました」
という意味ですが、
このレールという言葉は、その名の通り、Ruby on Railsの特徴をよく表しています。

Ruby on Railsの基本理念の一つに、
「設定より規約」
というものがあります。

いちいち開発者が設定を行うのではなく、あらかじめRails側で「規約」を設けておき、開発者はそれに従って開発をすることによって、煩わしい全体設計から、開発者を開放しているのが、Ruby on Railsのすごいところです。

Ruby on Railsのメリット・デメリットは、以下の記事にまとめているので、興味がある方はご参照ください。

Ruby on Railsのメリット・デメリット【初心者にもわかりやすく解説】 >>


この記事が皆様の学習のお役に立てば幸いです。
最後までお読みくださり、ありがとうございました。