※この記事は、2016年8月に他のブログで書いた記事をQiitaに移行したものです。
Ruby on Rails4アプリケーションプログラミング という本で、Ruby on Railsの勉強を始めました。
その際に、WindowsにRailsの仮想開発環境を構築した際の手順です。
- Vagrant upに失敗する
- Railsのインストールでエラーが出る
などの問題で躓きましたが、最終的には構築できました。
1. Windows10に仮想環境を整える
Windows上でVirtualBox+Vagrant+CentOSによる仮想環境構築
こちらの記事を参考にしました。
ただ、「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のイメージを使ったらドイツ語になったので英語にする
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
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
あらためて、Railsをインストールする。
[vagrant@localhost ~]$ gem install rails
[vagrant@localhost ~]$ rails -v
Rails 4.2.6
無事インストールできた。
追記
WEBrick起動後に、ホストOSのブラウザからゲストOSのhttp://localhost:3000/にアクセスできませんでした。
原因は、
- CentOS7からFirewallの設定が違う
- rails4.2から、WEBrickが仮想マシンからのみアクセスを許可するようになった
ことでした。
下記2点記事を参考にして解決できました。