Ruby on Railsチュートリアルを読み進めるための開発環境を、Vagrant+VirtualhostのゲストOS上で構築する。
ゲストOSはCentOS 7.5。
$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
ruby 2.4のインストール
ruby 2.4をインストールするため、SCL(Software Collections)を導入する。
yumのリポジトリを管理するためにyum-utilsをインストールし、
$ sudo yum install -y yum-utils
SCLをインストールする。
$ sudo yum install -y centos-release-scl
そして、SCLのリポジトリを有効化する。
$ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms
SCLを有効にしたら、ruby2.4をインストールする。
$ sudo yum install -y rh-ruby24 rh-ruby24-ruby-devel
SCLで管理するパッケージは、インストールしただけでは利用できない。
利用するには、scl
コマンドから実行しなければならない。
$ scl enable rh-ruby24 'ruby --version'
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]
毎回このコマンドを使用するのは面倒なので、ログイン時にsclを有効になるようにbashrcを設定する。
$ cat ~/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
source scl_source enable rh-ruby24
最後の行の
source scl_source enable rh-ruby24
これがsclを有効にする設定。こうするとログインすると
$ ruby --version
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]
scl
コマンド無しで、rubyを利用できる。
パッケージの追加インストール
railsやgemのパッケージで必要になるライブラリをインストールする。
- zlib-devel
- sqlite-devel
$ sudo yum install -y zlib-devel sqlite-devel
Node.jsのインストール
railsで使用するExecJSはJavaScriptのランタイムが必要である。
ランタイムがない状態で実行すると
$ rails server
/home/vagrant/.gem/ruby/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
...
このようなエラーが発生して、rails server
が実行できない。
ここでは、サポートされているランタイムの中からNode.jsをインストールする。
パッケージのインストール
Node.jsに必要なパッケージをインストールする。
$ sudo yum install -y gcc-c++ make
yumリポジトリの追加
Node.js 10.15.0 LTSをyumでインストールするため、リポジトリを追加する。
curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
Node.jsのインストール
yumを使ってNode.jsをインストールする。
sudo yum install -y nodejs
インストールできたら、バージョンを確認する。
$ node -v
v10.15.0
$ npm -v
6.4.1
ポートの設定
rails server
で使用するポートを開けて、ホスト上のブラウザで確認できるようにする。
ここではrails server
のデフォルトの3000を開ける。
Vagrantの設定
Vagrantfileでポートフォワーディングを有効にして
# Vagrantfile
config.vm.network "forwarded_port", guest: 3000, host: 3000
設定を適用する。
$ vagrant reload
CentOSの設定
firewall-cmd
でpublicゾーンにポート3000/tcpを登録し
$ sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent
設定を適用する。
$ sudo firewall-cmd --reload
設定の確認
設定が終わったら、実際にrails server
を実行して確認する。
$ rails server
=> Booting Puma
=> Rails 5.1.6.1 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.4.3-p205), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
ゲストOSでrails server
を実行して、ホストOSのブラウザから http://localhost:3000/ にアクセスし、railsのページが表示されることを確認する。