Windows10にVagrant + Virtualbox + CentOS7でRails の開発環境を構築する


※この記事は、2016年8月に他のブログで書いた記事をQiitaに移行したものです。

---


**Ruby on Rails4アプリケーションプログラミング**　という本で、Ruby on Railsの勉強を始めました。  
その際に、WindowsにRailsの仮想開発環境を構築した際の手順です。

* Vagrant upに失敗する
* Railsのインストールでエラーが出る

などの問題で躓きましたが、最終的には構築できました。

<!--more-->

## 1. Windows10に仮想環境を整える

[Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築](http://qiita.com/hiroyasu55/items/11a4c996b0c62450940f)  
こちらの記事を参考にしました。  
ただ、「Vagrant upができない」という問題でつまづきました。

### Windows10+Vagrant+Virtualboxが動かない

Windows10+Vagrantに、最新のVirtualboxだと動かないという問題があるようです。  
私の場合、Virtualboxを5.0.10に戻したら動きました。

## 2. CentOS7にRuby, SQLite, Node.js, Railsをインストールする

最初は、**CentOS6.7でやろうとした**　のですが、  
gemでrailsをインストールしようとした際に、「Rubyのバージョンを1.9.3以上にしてください」という旨のエラーが出ました。  
**CentOS6.7のyumでRuby1.9.3以上をインストールするのは面倒くさそう**　なので、  
私はCentOS7にしてやりました。

### CentOSの言語設定がドイツ語になっていたので、日本語にしてみる

    [vagrant@localhost ~]$ localectl status
       System Locale: LANG=de_DE.eucjp
           VC Keymap: de
          X11 Layout: de
    [vagrant@localhost ~]$ sudo localectl set-locale LANG=ja_JP.utf8

参考サイト : [VagrantからダウンロードしたCentOSのイメージを使ったらドイツ語になったので英語にする](http://websandbugs.hatenablog.jp/entry/2015/10/02/192331)

### Rubyのインストール

    [vagrant@localhost ~]$ sudo yum -y install ruby
    読み込んだプラグイン:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: ftp.tsukuba.wide.ad.jp
     * extras: ftp.tsukuba.wide.ad.jp
     * updates: ftp.tsukuba.wide.ad.jp
    パッケージ ruby-2.0.0.598-25.el7_1.x86_64 はインストール済みか最新バージョンです
    何もしません

と出た。CentOS7のVagrant用Boxだと、最初からRubyが入っているのか？

    [vagrant@localhost ~]$ ruby -v
    ruby 2.0.0p598 (2014-11-13) [x86_64-linux]

確認してみると、確かに入っている。

### SQLiteのインストール

「Ruby on Rails 4 アプリケーションプログラミング」の本では、データベースにSQLiteを使うので。

    [vagrant@localhost ~]$ sqlite3 -version
    3.7.17 2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668

こちらもインストール済みのようだ。

### Node.jsのインストール

Railsでアプリケーションを動作させるには、あらかじめNode.jsをインストールしておく必要がある。

    [vagrant@localhost ~]$ sudo yum -y install epel-release
    [vagrant@localhost ~]$ sudo yum -y install nodejs npm

参考サイト : [CentOS7 node.jsのインストールメモ - Qiita](http://qiita.com/daskepon/items/16a77868d38f8e585840)

### Ruby on Railsのインストール

    [vagrant@localhost ~]$ gem install rails
    Fetching: i18n-0.7.0.gem (100%)
    Successfully installed i18n-0.7.0
    Fetching: thread_safe-0.3.5.gem (100%)
    Successfully installed thread_safe-0.3.5
    Fetching: tzinfo-1.2.2.gem (100%)
    Successfully installed tzinfo-1.2.2
    Fetching: minitest-5.9.0.gem (100%)
    Successfully installed minitest-5.9.0
    Fetching: activesupport-4.2.6.gem (100%)
    Successfully installed activesupport-4.2.6
    Fetching: rack-1.6.4.gem (100%)
    Successfully installed rack-1.6.4
    Fetching: rack-test-0.6.3.gem (100%)
    Successfully installed rack-test-0.6.3
    Fetching: mini_portile2-2.1.0.gem (100%)
    Successfully installed mini_portile2-2.1.0
    Fetching: pkg-config-1.1.7.gem (100%)
    Successfully installed pkg-config-1.1.7
    Fetching: nokogiri-1.6.8.gem (100%)
    Building native extensions.  This could take a while...
    ERROR:  Error installing rails:
            ERROR: Failed to build gem native extension.

        /usr/bin/ruby extconf.rb
    mkmf.rb can't find header files for ruby at /usr/share/include/ruby.h


    Gem files will remain installed in /home/vagrant/.gem/ruby/gems/nokogiri-1.6.8 for inspection.
    Results logged to /home/vagrant/.gem/ruby/gems/nokogiri-1.6.8/ext/nokogiri/gem_make.out

エラーが起きた。ruby-develをインストールすると解決するようだ。

    [vagrant@localhost ~]$ $ sudo yum -y install ruby-devel

参考サイト ["mkmf.rb can't find header files for ruby"の対応 - Qiita](http://qiita.com/satzz/items/0361a7093a57b459e15b)  
あらためて、Railsをインストールする。

    [vagrant@localhost ~]$ gem install rails
    [vagrant@localhost ~]$ rails -v
    Rails 4.2.6

無事インストールできた。

<iframe style="width: 120px; height: 240px;" src="https://rcm-fe.amazon-adsystem.com/e/cm?t=mokuo-22&o=9&p=8&l=as1&asins=B00LBPDNSY&ref=qf_sp_asin_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" width="300" height="150" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<iframe style="width: 120px; height: 240px;" src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=mokuo-22&o=9&p=8&l=as1&m=amazon&f=ifr&ref=qf_sp_asin_til&asins=4774164100" width="300" height="150" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>

## 追記

WEBrick起動後に、ホストOSのブラウザからゲストOSのhttp://localhost:3000/にアクセスできませんでした。  
原因は、

* CentOS7からFirewallの設定が違う
* rails4.2から、WEBrickが仮想マシンからのみアクセスを許可するようになった

ことでした。  
下記2点記事を参考にして解決できました。

* [仮想サーバ上の WEBrick にローカルマシンから接続できない？！ - Rails つまみぐい](http://rails.hatenadiary.jp/entry/2016/06/24/210114)
* [Vagrant + rails + CentOS7の組み合わせでゲストOSのlocalhost:3000に接続できない場合 - Qiita](http://qiita.com/kota2_0/items/27530febaf24a3bf285f)