AmazonLinux2023でRailsを動かすためのセットアップ方法
スポンサーリンク

みなさん、こんにちは!

今回は、AmazonLinux2023環境でRailsアプリケーションを動かすための環境構築手順をご紹介します。対象読者は「AWSにRailsを手動でデプロイすることは検索しながらならできるくらいの技術レベル」の方々です。

前提条件:

本記事で紹介している手順は、上記サンプルアプリが問題なく動作することを前提として書かれています。Railsアプリケーションの内容によって再現しない場合は、適宜調整を行なってください。

それでは、さっそく手順に入りましょう!

dnfを使ったセットアップ

必要パッケージのインストール

sudo dnf install -y vim git which tar gcc rust patch make bzip2 openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel ImageMagick g++

上記コマンドを叩いて、Railsアプリをビルドするのに必要なパッケージ群をインストールしていきます。

また、後のYarnインストール時に発生するエラーを回避するためにgnupg2パッケージを入れ直して起きます。

sudo dnf -y install gnupg2 --allowerasing

これはデフォルトでインストールされるgnupg2-minimalパッケージにはgpg-agentが含まれていないため、asdfでYarnをインストールしようとすると「/usr/bin/gpg-agentがインストールされていない」というエラーになってしまうからですね。

そのため、gpg-agentが同梱されたgnupg2パッケージをインストールしておくのです。

MySQLのセットアップ

続いて、データベースを使うためにMySQLをインストールし、起動までしちゃいます。

sudo dnf -y localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

sudo dnf -y install mysql mysql-community-client mysql-devel mysql-server

sudo systemctl start mysqld

MySQLの起動ができたら、rootパスワードなどを適宜変更しましょう!

どうしてAmazonLinux2023ではdnfを使うの?
AmazonLinux2はyumを使っていたのに、なぜAmazonLinux2023ではdnfを使うようになったのか、気になりますよね。
簡単に説明すると、dnfはFedoraプロジェクトが開発したyumの新しい版で、yumよりも高速で扱いやすいパッケージ管理ツールだからです。
Red Hat Enterprise Linuxの次期バージョンでもdnfが導入されるため、AmazonLinux2023でも先手を打ってdnfに移行したようですよ!

asdfを使ったセットアップ

ここからはasdfというツールを使ってRailsを起動するために必要なものをセットアップしてきます。

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0
$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
$ source ~/.bashrc

上記が完了したら、バージョンを確認してasdfコマンドが実行できるか確認してみましょう。下記のようにバージョンが表示されていたらOKです。

$ asdf --version
=> v0.14.0-ccdd47d
どうしてasdfを使うの?メリットはあるの?
手順の中でasdfというツールを使っていますが、asdfにはいくつかメリットがあります。

複数バージョンの管理が簡単 asdfを使えば、RubyやNode.jsなどの複数バージョンを簡単にインストールし、管理することができます。プロジェクトごとに最適なバージョンを使い分けられるので便利なのですよね。

また、asdfは様々な言語に対応しており、RubyやNode.js、Erlang、Elmなど、多くの言語とそのパッケージ管理ツール(Bundler、Yarn等)をサポートしています。

また、プロジェクトディレクトリ単位の切り替えが可能で、 .tool-versionsファイルにバージョンを記述しておくと、そのディレクトリ内で指定のバージョンが自動的に使われるようになります。

このようにasdfは、環境構築や複数バージョン管理を合理化できるので、手動での導入に比べて心強い味方になってくれるというわけです。

Rubyのセットアップ

それでは続いてRubyのセットアップを次の手順で行っていきましょう。

asdf plugin-list-all | grep ruby # rubyがasdfのプラグインとして提供されているか確認
asdf plugin add ruby
asdf list all ruby | grep 3.2.3 # rubyの3.2.3がinstallできるか確認
asdf install ruby 3.2.3
asdf global ruby 3.2.3

セットアップができたらrubyのバージョンを確認し、希望のバージョンがインストールできているか確認しましょう。

ruby -v
=> ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [x86_64-linux]

Bundlerのセットアップ

この調子でbundle installに必要なbundlerもasdfでセットアップしちゃいましょう。

asdf plugin-list-all | grep bunlder # bundlerがasdfのプラグインとして提供されているか確認

asdf plugin add bundler

asdf list all bundler | grep 2.3.14 # bundlerの2.3.14がinstallできるか確認

asdf install bundler 2.3.14

セットアップが完了したらバージョン確認も忘れずに。

bundler -v
# => Bundler version 2.4.19

Nodejsのセットアップ

この調子でNodejsも次の手順でセットアップしていきましょう。

asdf plugin-list-all | grep nodejs # nodejsがasdfのプラグインとして提供されているか確認

asdf plugin add nodejs

asdf list all nodejs | grep v17.9.1 # nodejsの17.9.1がinstallできるか確認

asdf install nodejs v17.9.1

asdf global nodejs v17.9.1

こちらもセットアップが完了したらNodejsのバージョンを確認し、希望のバージョンがインストールできているか確認しましょう。

node -v
=> v17.9.1

yarnのセットアップ

Yarnのセットアップに移りましょう。手順はこれまでと同様です。ただし、冒頭のようにgnupg2パッケージを入れ直していないと、正常にセットアップが完了しないので注意しましょう。

asdf plugin-list-all | grep yarn # yarnがasdfのプラグインとして提供されているか確認

asdf plugin add yarn

asdf list all yarn | grep 1.22.19 # yarnの1.22.19がinstallできるか確認

asdf install yarn 1.22.19

asdf global yarn 1.22.19

これまで同様バージョンを確認して、希望のバージョンがインストールできていればOKです。

yarn -v
# => 1.22.19

まとめ

ここまでお疲れ様でした!

あとはRailsアプリケーションのあるディレクトリに移動し、bundle installやデータベースの接続設定などを行った後、アプリケーションサーバーを起動して動作確認ができれば完成です!

スポンサーリンク
おすすめの記事