CentOSにruby on railsをインストールする

CentOSにrailsをインストールするまでの手順を説明します。
最初はけっこうつまづくのですよ、これ。

さてrailsを入れるにはまずrubyを入れます。
rubyはyumとかでも入れられますが、rbenvってのを使ってインストールするのが主流です。
rbenvのインストールにはgitってのが必要です。

ってことで、まずはgitを入れましょう。



Gitのインストール




sudo yum install git.x86_64


rbenvをインストール



次にgitのcloneでrbenvをインストールします。
ホームディレクトリに入れる人と/usr/local/に入れる人がいるみたいですね。
前者はユーザーごと、後者は全ユーザー共通で使えます。
ただし前者はパーミッションで怒られること多いです。


git clone https://github.com/sstephenson/rbenv.git /usr/local/rbenv


もしくは

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv


これでインストールができました。

環境設定



次は環境設定が必要です。
毎回ログインするたびに環境設定をするのは面倒臭いので、ログイン時に呼ばれる .bash_profileに設定します。


vi ~/.bash_profile

下記を追記します。rbenvを~/.rbenvに入れた方は修正してください。


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


bash_profileを読み直します。

source ~/.bash_profile


ruby_buildをインストール


次はruby-buildをインストールします。


git clone https://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins/ruby-build


これもrbenvを~/.rbenvに入れた方は修正してください。
僕が以前やった時はインストールシェルを叩かないと駄目でした。

sudo /usr/local/rbenv/plugins/ruby-build/install.sh


rubyをインストールする


続いてruby本体をインストールします。


rbenv install --list


色々なバージョンが表示されるので、入れたいバージョンをインストールしてください。


rbenv install 2.2.0


これでインストールできます。
少々時間がかかりますが、/tmp/ruby-build.20150722231922.1512.logとかいう感じのログが出力されるのでtail -fで進捗を確認できます。

エラーが出たらResults logged to /tmp/ruby-build.20150722231453.20780.logとか出力されていると思うのでそれを確認。

もしこんなエラーが出ていたら

/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
./libffi-3.2.1/.libs/libffi.a: could not read symbols: Bad value

libffiをインストールしてください。

yum install libffi-devel


こんなのも要求されるかもしれません。

yum install -y readline-devel


次は環境を読み直します。

rbenv rehash


んでインストールされているか確認してみましょう。

rbenv versions


インストールされていれば、次のコマンドで使えるようになります。

rbenv global 2.2.0


試しに実行してみましょう。

[tea@localhost ~]$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]


ちゃんと使えるみたいですね。

Ruby on Railsをインストール


さてラスト。railsを入れます。
rbenvインストールした時点でgemっていうツールが使えるようになっているため、これを使います。
まずは探してみましょう。

gem search -r rails


いっぱい出てくるかと。
この中のrails本体を入れます。

gem install rails


インストール終わったら試しに何か作ってみましょう。
ちなみにsqlite入ってないとコケます。

rails new first
cd first
rails server


こんなエラーが出た場合、Gemfileを修正しましょう。

/home/tea/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/execjs-2.5.2/lib/execjs/runtimes.rb:48:in `autodetect': Could not find a JavaScript runtime.


Gemfileを開いて、

vi Gemfile

下記コメントを外します。

# gem 'therubyracer', platforms: :ruby

インストールをやり直して、

bundle install

再度起動。

rails server


さらにこんなエラーが出た場合、もう一つ入れるものがあります。

Sorry, you can't use byebug without Readline. To solve this, you need to
rebuild Ruby with Readline support. If using Ubuntu, try `sudo apt-get
install libreadline-dev` and then reinstall your Ruby.

これ一度直しちゃうと基本的にもう出なくなるから、大抵のサイトにメモが無かったりするのですよね。

Gemfileを開いて、

vi Gemfile

下記行を追加します。どこでもいいです。

gem 'rb-readline'

インストールをやり直して、

bundle install

再度起動。

rails server


これで終了。

アクセスする


railsはhttpdよりもアクセスが大変だったり。
ただrails serverするだけだとlocalhostからはつなげますが、外部からはつなげません。
すなわちCentOS上のFirefoxからlocalhost:3000とすればつなげますが、windowsやMacから192.168.88.128:3000とやってもつなげないのです。
ってことでVMやvpsからつなぐ場合はifconfigで自分のipを見て、-bオプションをつけましょう。

rails server -b 192.168.88.128


もちろんファイアーウォールとかSELinuxにも気をつけて。
CentOSのファイアウォールとSELinux設定解除方法

ぼちぼち使ってみよう編も書きます。