AWS に Rails のアプリをデプロイする方法 ~ Rails アプリを起動するまで

AWS に Rails のアプリをデプロイする方法 ~ Rails アプリを起動するまで

link です。

この記事は前回 AWS に Rails のアプリをデプロイする方法 ~ EC2 インスタンスに接続するまでの続きになっています。

前回は EC2 インスタンスに接続するまでをやりました。

今回は EC2 インスタンス上に Rails アプリの起動に必要なライブラリーをインストールしてブラウザ上で Rails アプリに接続するまでの手順を紹介します。

また、今回デプロイする Rails アプリは GitHub リポジトリからクローンします。

前提条件

  • Windows 11
  • WSL2(Ubuntu 22.04)
  • Amazon Linux 2023
  • Ruby 3.2.2

Git, Ruby などをインストール

この先で必要になる Git, Ruby などを一式インストールします。

以下のコマンドを実行します。

インストール
$ sudo yum -y install git make gcc-c++ patch libyaml-devel libffi-devel libicu-devel zlib-devel readline-devel libxml2-devel libxslt-devel ImageMagick ImageMagick-devel openssl-devel ruby ruby-devel

Node.js をインストール

nvm を使って Node.js をインストールします。

以下のコマンドを実行します。

Node.jsインストール
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
$ . ~/.nvm/nvm.sh
$ nvm install 16

Rails アプリを EC2 インスタンスにクローン

Rails アプリを GitHub のプライベートリポジトリからクローンします。

ただし、デフォルトのままだと permission denied エラーが発生するので、先に EC2 インスタンスの SSH 公開鍵を GitHub に登録する必要があります。

SSH 公開鍵を GitHub に登録

EC2 にログインして、 ssh-keygen -t rsa -b 4096 を実行します。

すると以下のようにコンソール上に表示されると思います。

公開鍵作成
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ec2-user/.ssh/id_rsa
Your public key has been saved in /home/ec2-user/.ssh/id_rsa.pub
The key fingerprint is:
??? ec2-user@ip-172-31-81-143.ec2.internal
The key's randomart image is:
+---[RSA 4096]----+
|=o o             |
| o*..        .   |
|oo.o. .     o    |
|.o o.  = . o .   |
|= +.  = S = .    |
| = o...o.= o     |
|  . o=.oo .      |
|   ooo+*o.       |
| .o.oo=Eoo       |
+----[SHA256]-----+

cat ~/.ssh/id_rsa.pub で SSH 公開鍵を表示できますので、表示された文字列をすべてコピーします。

その後、 https://github.com/settings/keys にアクセスして、「NEW SSH KEY」をクリックして、 Key 欄にコピーした公開鍵を貼り付けます。

SSH公開鍵

SSH公開鍵

最後に「Add SSH KEY」をクリックして完了です。

EC2 上で ssh -T git@github.com を実行して、以下のように表示されることを確認しましょう。

ユーザー名 が自分の GitHub のユーザー名になっていれば OK です。

途中で 1 回 yes を入力する必要があります。

Github確認
$ ssh -T git@github.com
The authenticity of host 'github.com (140.82.112.3)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access.

Rails アプリのクローン

Rails アプリを GitHub リポジトリからクローンします。

まず、 Rails アプリを保存するディレクトリを作成します。

保存先ディレクトリの配置はどこでもいいですが、本記事では /var/www/ としています。

保存先ディレクトリ作成
$ sudo mkdir /var/www/
$ sudo chown ec2-user /var/www/
$ cd /var/www/

あとは git clone リポジトリURL でクローンすれば完了です。

gem のインストール

EC2 インスタンスに gem をインストールします。

EC2 ではなく、ローカル環境の Rails アプリを開き、以下のコマンドを実行します。

bundle確認
$ bundler -v

これで表示された bundle と同じバージョンを EC2 に入れます。

bundleインストール
$ gem install bundler -v 2.4.8

Rails アプリのディレクトリ内で bundle install を実行して gem のインストールは完了です。

ポート開放

EC2 上の Rails アプリにアクセスできるようにポートを開放します。

セキュリティグループのインバウンドルールにタイプを「カスタム TCP」、ポートを「3000」、アドレスを 0.0.0.0/0 に設定したものを追加して保存します。

インバウンドルール設定

インバウンドルール設定

これで Rails アプリに接続する準備は完了です。

アプリ起動と接続

Rails アプリのディレクトリ内で bundle exec rails server -p 3000 -b 0.0.0.0 を実行します。

http://Elastic IP:3000/ にアクセスして Rails アプリが表示されることを確認しましょう。以下の画像はアプリ作成直後の画面です。

アクセス画面

アクセス画面

参考サイト

まとめ

今回は EC2 インスタンスに Ruby 等をインストールして、 Rails アプリにアクセスできることを確認するところまでやりました。

ただ、実際に外部公開するにはクライアントからのリクエストをさばく Web サーバーを導入する必要があります。

次回は大量のリクエストに対応できる Web サーバー上で Rails アプリを起動させる方法を紹介したいと思います。

それではまた、次の記事でお会いしましょう。

linkohta