みなさん、こんにちは!
今回は、AmazonLinux2023環境でRailsアプリケーションを動かすための環境構築手順をご紹介します。対象読者は「AWSにRailsを手動でデプロイすることは検索しながらならできるくらいの技術レベル」の方々です。
前提条件:
- AmazonLinux2023インスタンスが起動済みであること
- 以下のサンプルアプリで動作確認済みであること
本記事で紹介している手順は、上記サンプルアプリが問題なく動作することを前提として書かれています。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パスワードなどを適宜変更しましょう!
簡単に説明すると、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を使えば、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やデータベースの接続設定などを行った後、アプリケーションサーバーを起動して動作確認ができれば完成です!