Linux(Amazon EC2 AMI)にrbenv+Ruby 2.0 環境を構築

Macには何回かセットアップしているRuby on Rails環境を,今回はLinux(Amazon EC2)上にセットアップしてみます.

rbenvを利用して,システム既存のRubyはそのまま残し,Rubyの最新バージョンをインストールしてみたいと思います.

まずは,何はなくともGitが必要ですので,まずはGitからインストール

$ sudo yum install git-core

Gitの環境設定をしておきます.

$ git config --global user.name "Taro Kagoshima"
$ git config --global user.email "foo@hoge.jp"
$ git config --global color.ui auto
$ git config --list
user.name=Taro Kagoshima
user.email=foo@hoge.jp
color.ui=auto

GCC等開発ツールも入っていなかったので,一挙にグループインストール.

$ sudo yum groupinstall "Development Tools"

あと,Rubyのビルドで必要な,readlineとopensslのライブラリもインストール.

$ sudo yum install readline-devel
$ sudo yum install openssl-devel

さて,ここからがrbenvのセットアップです.
デフォルトでは,ユーザホームの「~/.rbenv」にセットアップされるのですが,ここではシステムワイド(ここでは「/opt/rbenv」)にセットアップしたいと思います.

まずは,ディレクトリを用意して,そのパスを環境変数 RBENV_ROOT に設定します.

$ sudo mkdir /opt/rbenv
$ export RBENV_ROOT=/opt/rbenv

それでは,gitを利用して,rbenvとruby-buildをインストールしてやります.

$ sudo git clone https://github.com/sstephenson/rbenv.git /opt/rbenv
$ sudo git clone https://github.com/sstephenson/ruby-build.git /opt/rbenv/plugins/ruby-build
$ sudo /opt/rbenv/plugins/ruby-build/install.sh
$ PREFIX=/opt/rbenv sudo /opt/rbenv/plugins/ruby-build/install.sh
$ sudo mkdir /opt/rbenv/versions
$ sudo mkdir /opt/rbenv/shims

すべてのユーザがこのrbenv環境を利用できるよう,/etc/profile.d に次のファイルを作成しておきます.

$ sudo vi /etc/profile.d/rbenv.sh

[rbenv.sh]

export RBENV_ROOT="/opt/rbenv"
PATH="/usr/local/bin:$RBENV_ROOT/bin:$PATH"
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

ここからは,root にスイッチして,最新のRubyをセットアップしていきます.

$ sudo -s

現在,セットアップ可能なRubyのリストを表示します.

# rbenv install -l

Ruby(CRuby)のVerion 2.0.0-p353 を指定してインストールします.

# rbenv install 2.0.0-p353

しばし時間がかかります...

無事に終われば,現在インストール済みのRubyのバージョンを見てみます.

# rbenv versions
* system (set by /opt/rbenv/version)
2.0.0-p353

現在は,システム既存のRubyが有効になっていますので,先ほど入れたバージョンの方を有効にします.

# rbenv global 2.0.0-p353
# rbenv rehash

現在のバージョンを確認してみます.

# ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]

Gemは個別にBundlerで管理しますので,システムにインストールするGemはbundlerだけ.

# gem install bundler
Fetching: bundler-1.3.5.gem (100%)
Successfully installed bundler-1.3.5
Parsing documentation for bundler-1.3.5
Installing ri documentation for bundler-1.3.5
 1 gem installed

忘れずにrehashしておきます.

# rbenv rehash

ここからは,一般ユーザに戻って,Rails環境を構築していきます.

# exit

Rails環境をセットするディレクトリ(ここでは「sample」)を作成して,そのディレクトリに移動しておきます.

$ mkdir sample
$ cd sample

コマンド「bundle init」を実行して,「Gemfile」を生成します.

$ bundle init
Writing new Gemfile to /home/furuya/work/sample/Gemfile

Gemfileの内容を一部書き換えます.

[Gemfile]

 # A sample Gemfile
source "https://rubygems.org"

gem "rails"
:

コメントを外し,rails gemのインストールを有効にします.

コマンド「bundle install」を実行して,必要なGemをインストールします.そのときに,システムには入れず,現在のパス配下の「vendor/bundle」にインストールさせます.

$ bundle install --path vendor/bundle

現在のディレクトリにRailsのファイル群を生成します.

$ bundle exec rails new .
 :
Installing sqlite3 (1.3.8)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

/opt/rbenv/versions/2.0.0-p353/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
An error occurred while installing sqlite3 (1.3.8), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.8'` succeeds before bundling.

sqlite3のインストールに失敗しました.sqlite3のネイティブライブラリが必要です.yumでシステムにインストールしておきます.

$ sudo yum install sqlite-devel

再度,「bundle install」

$ bundle install

うまく行きました.では,早速railsのサーバプログラムをスタートさせてみます.

$ bundle exec rails s
/home/furuya/work/sample/vendor/bundle/ruby/2.0.0/gems/execjs-2.0.2/lib/execjs/
runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github
.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

JavaScript runtimeがないということでうまく行きませんでした.そうでした Node.JS を予めインストールしておかなければなりませんでした.

各システムにおける Node.JS のセットアップ方法は,次のサイトに書いてあります.

Installing Node.js via package manager · joyent/node Wiki · GitHub

まずは,EPELリポジトリを有効にします.Amazon EC2 の AMI には,EPELリポジトリは既にインストールされていました.

$ sudo rpm -qa | grep epel
epel-release-6-8.9.amzn1.noarch

では,サイトに書いてあるように,次のようにコマンドをたたいてNode.JS,npm をインストールします.

$ sudo yum install nodejs npm --enablerepo=epel

再度,Railsサーバを起動してみます.

$ bundle exec rails s
 => Booting WEBrick
 => Rails 4.0.2 application starting in development on http://0.0.0.0:3000
 => Run `rails server -h` for more startup options
 => Ctrl-C to shutdown server
 [2013-12-16 09:44:29] INFO WEBrick 1.3.1
 [2013-12-16 09:44:29] INFO ruby 2.0.0 (2013-11-22) [x86_64-linux]
 [2013-12-16 09:44:29] INFO WEBrick::HTTPServer#start: pid=16052 port=3000

Webブラウザにて,「http://(ホスト名):3000/」のURLでアクセスしてみます.

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中