MacユーザがCentOS8にRuby環境を構築する

MacユーザがCentOS8にRuby環境を構築する

Table of Contents

Mac上にrbenvによるRuby環境を構築したりRailsアプリを作ったことあるが、Linux(CentOS8)ではまだの人向けに記事を書きました。

Linux自体の初期セットアップは済ませておく

ローカルPCであれば問題はないですが、VPSなど外部にLinuxサーバを立てた場合は、Ruby環境の前にLinux自体のセキュリティセットアップを実施することをおすすめします。

セットアップに関しては、「CentOS8で不正SSHログイン対策したLinuxサーバ構築する 」にまとめてあります。

Macと違ってHomebrewがない

Mac環境下ではrbenvはHomebrewを使ってインストールします。 しかし、CentOSではHomebrewがありません。 しかもCentOS用パッケージ管理ソフトウェアであるyumにもrbenvがありません。

GitHubからrbenvを直接ダウンロードする

CentOS8ではgitを使いGitHubから直接rbenvやrbenv用プラグインをインストールします。 rbenvのプラグインにあたるruby-buildも同様です。

Ruby環境構築の流れ

gitのインストールから始まり、rbenvとRubyのインストールするまでの流れになります。

  1. yumでgitをインストール
  2. GitHubからrbenvとruby-buildをインストール
  3. yumで依存パッケージをインストール
  4. rbenvでRubyをインストール

CentOS8にyumでgitをインストール

最初にGitHubからダウンロードに必要なgitをyumからインストールします。yumでなくともdnfでも問題ありません。

$ sudo yum -y install git
$ git --version
git version 2.27.0

GitHubからrbenvをインストール

gitが使えるようになったら、GitHubからrbenvとプラグインとなるruby-buildをダウンロード(クローン)します。 ダウンロード先はrbenv、Rubyを実行したいユーザーのhomeディレクトリ(~)にします。

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

rbenvとsstephensonの違い

ネット記事ではURLがhttps://github.com/sstephenson/rbenv.gitとなっている記事を多数見かけますが、ブラウザでアクセスすると分かりますが、rbenvにリダイレクトされています。なのでどちらも同じものと見て良いです。 個人的にはsstephensonよりもrbenvのほうが覚えやすいです。

rbenvを初期化

rbenv, ruby-buildをダウンロードしたら、普段Macで叩いてるrbenvが、~/.rbenv/bin/rbenvに配置されています。 これにinitを渡して実行するとセットアップ方法が表示されます。

$ .rbenv/bin/rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

指示に従って~/.bash_profileeval "$(rbenv init -)"を記入して.bash_profileをリロードするとエラーが発生します。

$ source .bash_profile
-bash: rbenv: コマンドが見つかりません

理由はrbenvにパスが通っていないためです。eval "$(rbenv init -)" を動かすには rbenvにパスを通す必要があります。パス設定をeval "$(rbenv init -)"の手前に追加して、rbenvにパスを通します。 .bash_profileの末尾に次の2行がある状態です。

export PATH="~/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

この状態でもう一度.bash_profileをリロードすれば今度はエラーは発生しないはずです。 Linux上のログインシェルをzshにしてる方は適宜置き換えてください。
.bash_profile.zshrc or .zprofile

これでCentOS上にrbenvのインストールが完了しました。 MacではHomebrewがパス周りをいい感じにやってくれてるし、インストール後のセットアップ処理もbrewのインストール完了したら表示してくれるので優しいし楽ですね。

yumで依存パッケージをインストール

rbenvがインストールできたら後はMac同様にrbenvを使ってRubyをインストールするだけ…って感じではなさそうです。 Rubyをビルドするために必要なパッケージをyumからインストールが必要です。

$ sudo yum -y install bzip2 gcc openssl-devel readline-devel zlib-devel

なおいくつかのパッケージ名の後ろについている-develとはデビル(devil)ではなくdevelopの短縮文字です。 通常と比べて開発に必要なヘッダーファイル等が含まれます。

rbenvからRubyをインストール

準備が整ったらrbenvを使ってRubyをインストールします。 MacでもCentOS(Linux)でもrbenvのコマンドの使い方に違いはありません。(全部確認はしていませんが)

インストール可能なバージョンを確認

$ rbenv install --list
2.5.8
2.6.6
2.7.2
3.0.0

Rubyバージョン指定してインストール

今回は2.7.2をインストールします。 Mac同様Rubyのインストールには時間がかかります。

$ rbenv install 2.7.2
Downloading ruby-2.7.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.bz2
Installing ruby-2.7.2...

デフォルトのバージョンを設定

インストールされたRubyバージョンをglobalを設定しておきます。

$ rbenv versions
  2.7.2
$ rbenv global 2.7.2
$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]

local(.ruby-version)で上書きされない限りはこのバージョンが使われます。

rubygemsを更新する

Rubyに付属するRuby用パッケージマネージャーRubygemsを更新します。

$ gem update --system

Ruby動作確認する

Rubyのインストールが完了したら、最後にねんのためコード実行して動作確認します。

$ mkdir test
$ echo 'puts "hello world"' > test/helloworld.rb
$ ruby test/helloworld.rb
hello world

ここまで通ればCentOSにrbenvとRubyのインストールは完了です。

CentOS8上にnginxとPumaとRailsアプリを構築する

Ruby環境が整ったら、次のステップとしてはRailsアプリをCentOS8上にデプロイして動かしてみることです。 また実際のアプリではPumaがWebサーバとして動くのではなくnginxを前段においてリバースプロキシが一般的です。 それらをAnsibleやCapistranoを使わずgitとSSHなど手作業で構築することは体系的な知識構築に大いに貢献できます。

それらに関する記事を「CentOS8上にnginxとpumaとRailsを手作業で構築した後に手動でデプロイする 」にまとめてあります。

このエントリーをはてなブックマークに追加