rails-dev-box を使うと以下の手順よりも簡単に環境構築出来るかもしれません (手順はこちらをご参考)。
以下の手順で作る環境と rails-dev-box で出来上がる環境は色々違うので自分にあったものを選ぶといいと思います。
この手順でつくる環境
種類 | バージョン |
---|---|
CentOS | 7.0-x86_64 |
rbenv | rbenv 0.4.0-98-g13a474c |
Ruby | 2.1.3 |
Rails | 4.1.6 |
1. 仮想マシン作成
-
VirtualBoxインストール
-
Vagrantインストール
-
CentOS のBoxを取得
Boxを配布している Vagrantbox.es からCentOSのBoxを適当に選んで追加。
terminal$ vagrant box add CentOS7 https://dl.dropboxusercontent.com/s/w3lbekm7eunrskm/centos-7.0-x86_64.box
実行結果==> box: Adding box 'CentOS7' (v0) for provider: box: Downloading: https://dl.dropboxusercontent.com/s/w3lbekm7eunrskm/centos-7.0- x86_64.box ==> box: Successfully added box 'CentOS7' (v0) for 'virtualbox'!
-
仮想マシンを作成
terminal$ vagrant init CentOS7
実行結果A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
-
Vagrantfileを編集
terminal$ vi Vagrantfile
27行目の
# config.vm.network "private_network", ip: "192.168.33.10"
をコメントを外す。Vagrantfile# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # All Vagrant configuration is done here. The most common configuration # options are documented and commented below. For a complete reference, # please see the online documentation at vagrantup.com. # Every Vagrant virtual environment requires a box to build off of. config.vm.box = "CentOS7" # Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs # `vagrant box outdated`. This is not recommended. # config.vm.box_check_update = false # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine. In the example below, # accessing "localhost:8080" will access port 80 on the guest machine. # config.vm.network "forwarded_port", guest: 80, host: 8080 # Create a private network, which allows host-only access to the machine # using a specific IP. config.vm.network "private_network", ip: "192.168.33.10" # Create a public network, which generally matched to bridged network. # Bridged networks make the machine appear as another physical device on # your network. # config.vm.network "public_network" . . .
-
仮想マシンを起動
terminal$ vagrant up
実行結果Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'CentOS7'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: sandbox_default_1411431118266_81879 ==> default: Fixed port collision for 22 => 2222. Now on port 2200. ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: hostonly ==> default: Forwarding ports... default: 22 => 2200 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2200 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... ==> default: Configuring and enabling network interfaces... ==> default: Mounting shared folders... default: /vagrant => /Users/yamagh/GoogleDrive/Local/dev/ruby/sandbox
-
仮想マシンにSSHでログイン
terminal$ vagrant ssh
実行結果Last login: Wed Aug 20 14:47:28 2014 [vagrant@vagrant-centos7 ~]$
2. 準備
-
CentOSに入ってるRubyはバージョンが古いのでアンインストール
terminal$ sudo yum -y remove ruby
実行結果[root@vagrant-centos7 vagrant]# yum -y remove ruby 読み込んだプラグイン:fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ ruby.x86_64 0:2.0.0.353-20.el7 を 削除 . . . 省略 . . . rubygem-bigdecimal.x86_64 0:1.2.0-20.el7 rubygem-io-console.x86_64 0:0.4.2-20.el7 rubygem-json.x86_64 0:1.7.7-20.el7 rubygem-psych.x86_64 0:2.0.0-20.el7 rubygem-rdoc.noarch 0:4.0.0-20.el7 rubygems.noarch 0:2.0.14-20.el7 完了しました!
-
gitをインストール
terminal$ sudo yum -y install git
実行結果[root@vagrant-centos7 vagrant]# yum -y install git 読み込んだプラグイン:fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 puppetlabs-deps | 2.5 kB 00:00:00 . . . 省略 . . . 依存性関連をインストールしました: libgnome-keyring.x86_64 0:3.8.0-3.el7 perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-4.el7 perl-TermReadKey.x86_64 0:2.30-20.el7 rsync.x86_64 0:3.0.9-15.el7 完了しました!
-
開発環境では不要なのでファイアウォールを停止
-
CentOS7の場合
terminal$ sudo systemctl stop firewalld $ sudo systemctl mask firewalld
-
CentOS6以前の場合
terminal$ sudo service iptables stop $ sudo chkconfig iptables off
3. rbenvインストール
3-1. 特定のユーザー用にインストールする場合
-
rbenvリポジトリをclone
terminal$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
実行結果Cloning into '/home/vagrant/.rbenv'... remote: Counting objects: 1889, done. remote: Total 1889 (delta 0), reused 0 (delta 0) Receiving objects: 100% (1889/1889), 298.61 KiB | 197.00 KiB/s, done. Resolving deltas: 100% (1178/1178), done.
-
PATHを通す
terminal$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
-
ターミナル(bash)実行時に
rbenv init
を実行するように設定terminal$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
-
確認
terminal$ cat ~/.bash_profile
実行結果# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
手順2と3でechoした内容が末尾2行に追加されていることを確認する。
-
.bash_profile のリロード
terminal$ source ~/.bash_profile
-
インストール確認
terminal$ rbenv --version
実行結果rbenv 0.4.0-98-g13a474c
-
ruby-buildをインストール
terminal$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
実行結果Cloning into '/home/vagrant/.rbenv/plugins/ruby-build'... remote: Counting objects: 3786, done. remote: Compressing objects: 100% (31/31), done. remote: Total 3786 (delta 16), reused 2 (delta 0) Receiving objects: 100% (3786/3786), 661.69 KiB | 361.00 KiB/s, done. Resolving deltas: 100% (1859/1859), done.
3-2. 全ユーザー用にインストールする場合
-
rbenvリポジトリをclone
terminal$ git clone git://github.com/sstephenson/rbenv.git /usr/local/
-
PATHを通す
terminal$ echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile $ echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile $ echo 'eval "$(rbenv init -)"' >> /etc/profile
-
ruby-buildプラグインをインストール
terminal$ mkdir /usr/local/rbenv/plugins $ git clone git://github.com/sstephenson/ruby-build.git /usr/local/rbenv/plugins
4. Rubyのインストール
-
Rubyの最新バージョンを確認
terminal$ rbenv install -l
実行結果Available versions: 1.8.6-p383 1.8.6-p383 1.8.6-p420 . . . 省略 . . . 2.1.3 2.2.0-dev 2.2.0-dev 2.2.0-preview1 2.2.0-preview1 jruby-1.5.6 jruby-1.5.6
rubyのバージョン一覧がずらずらと表示されるので、中から最新のバージョンを確認。上の実行結果の場合だと
2.1.3
が最新の安定バージョン。 -
Rubyのインストール
terminal$ rbenv install 2.1.3
実行結果Downloading ruby-2.1.3.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/ 0818beb7b10ce9a058cd21d85cfe1dcd233e98b7342d32e9a5d4bebe98347f01 Installing ruby-2.1.3... Installed ruby-2.1.3 to /home/vagrant/.rbenv/versions/2.1.3
ここで以下の様なエラーが表示される場合は、OpenSSLのライブラリが必要なためインストールする。
エラー:The_Ruby_openssl_extension_was_not_compiled._Missing_the_OpenSSL_lib?[vagrant@vagrant-centos7 ~]$ rbenv install 2.1.3 Downloading ruby-2.1.3.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/0818beb7b10ce9a058cd21d85cfe1dcd233e98b7342d32e9a5d4bebe98347f01 Installing ruby-2.1.3... BUILD FAILED (CentOS Linux 7 using ruby-build 20140919-2-g04fe8ab) Inspect or clean up the working tree at /tmp/ruby-build.20140923014200.3430 Results logged to /tmp/ruby-build.20140923014200.3430.log Last 10 log lines: rake 10.1.0 rdoc 4.1.0 test-unit 2.1.3.0 installing rdoc: /home/vagrant/.rbenv/versions/2.1.3/share/ri/2.1.0/system installing capi-docs: /home/vagrant/.rbenv/versions/2.1.3/share/doc/ruby The Ruby openssl extension was not compiled. Missing the OpenSSL lib? Configure options used: --prefix=/home/vagrant/.rbenv/versions/2.1.3 LDFLAGS=-L/home/vagrant/.rbenv/versions/2.1.3/lib CPPFLAGS=-I/home/vagrant/.rbenv/versions/2.1.3/include
terminal$ sudo yum -y install openssl-devel
実行結果. . . インストール: openssl-devel.x86_64 1:1.0.1e-34.el7_0.4 依存性関連をインストールしました: keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.11.3-49.el7 libcom_err-devel.x86_64 0:1.42.9-4.el7 libselinux-devel.x86_64 0:2.2.2-6.el7 libsepol-devel.x86_64 0:2.1.9-3.el7 libverto-devel.x86_64 0:0.2.5-4.el7 pcre-devel.x86_64 0:8.32-12.el7 zlib-devel.x86_64 0:1.2.7-13.el7 完了しました!
次のようなエラーが表示される場合、こちらの記事の手順で対処する。
原因はRubyのOpenSSL Extensionに関する既知の問題でRuby 2.0.0-p247 以下のバージョンを Fedora/RedHat にインストールしようとすると発生するとのこと。[vagrant@vagrant-centos7 ~]$ rbenv install 2.0.0-p0 Downloading yaml-0.1.6.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749 Installing yaml-0.1.6... Installed yaml-0.1.6 to /home/vagrant/.rbenv/versions/2.0.0-p0 Downloading ruby-2.0.0-p0.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed Installing ruby-2.0.0-p0... BUILD FAILED (CentOS Linux 7 using ruby-build 20141113-8-g63f6fa2) Inspect or clean up the working tree at /tmp/ruby-build.20141124022257.6330 Results logged to /tmp/ruby-build.20141124022257.6330.log Last 10 log lines: ^ ossl_pkey_ec.c:821:29: エラー: ‘EC_GROUP_new_curve_GF2m’ が宣言されていません (この関数内での最初の使用) new_curve = EC_GROUP_new_curve_GF2m; ^ ossl_pkey_ec.c:821:29: 備考: 未宣言の識別子は出現した各関数内で一回のみ報告されます make[2]: *** [ossl_pkey_ec.o] エラー 1 make[2]: ディレクトリ `/tmp/ruby-build.20141124022257.6330/ruby-2.0.0-p0/ext/openssl' から出ます make[1]: *** [ext/openssl/all] エラー 2 make[1]: ディレクトリ `/tmp/ruby-build.20141124022257.6330/ruby-2.0.0-p0' から出ます make: *** [build-ext] エラー 2
-
デフォルトで使用するRubyのバージョンを設定
terminal$ rbenv global 2.1.3
-
インストール結果を確認
terminal$ ruby -v
実行結果ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux]
5. Railsのインストール
-
multi_jsonのインストール
terminal$ gem install multi_json -v '1.10.1'
実行結果Fetching: multi_json-1.10.1.gem (100%) Successfully installed multi_json-1.10.1 Parsing documentation for multi_json-1.10.1 Installing ri documentation for multi_json-1.10.1 Done installing documentation for multi_json after 0 seconds 1 gem installed
これを入れずに手順2のBundlerをインストールすると次のエラーになったのでインストール。
エラーAn error occurred while installing multi_json (1.10.1), and Bundler cannot continue. Make sure that `gem install multi_json -v '1.10.1'` succeeds before bundling.
-
Bundlerのインストール
terminal$ rbenv exec gem install bundler
実行結果Fetching: bundler-1.7.3.gem (100%) Successfully installed bundler-1.7.3 Parsing documentation for bundler-1.7.3 Installing ri documentation for bundler-1.7.3 Done installing documentation for bundler after 2 seconds 1 gem installed
terminal$ rbenv rehash
-
インストールするRailsのバージョン確認
terminal$ gem search -r rails | grep "^rails ("
実行結果rails (4.1.6)
-
Railsインストール
terminal$ gem install rails
バージョンを指定する場合は
--version
オプションを付ける。terminal$ gem install rails --version 4.1.6
〜コーヒータイム〜
MacBookAir13inchi(2012)でやったときは11分くらい--no-ri
--no-rdoc
をオプションで付けるとドキュメントのインストールを省略できるので少しは早くなるかも。実行結果. . . Done installing documentation for actionmailer, actionpack, actionview, activemodel, activerecord, activesupport, arel, builder, erubis, hike, i18n, mail, mime-types, minitest, rack, rack-test, rails, railties, sprockets, sprockets-rails, thor, thread_safe, tilt, tzinfo after 417 seconds 24 gems installed
terminal$ source ~/.bash_profile
-
アプリケーション作成
terminal$ rails new cat
このとき
--skip-bundle
を付けてbundle install
を実行しないということもできる。
すでにbundle install
を実行済みであれば付けた方が早く処理がおわってよい。もし次のエラーが表示された場合は
実行結果. . . Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /home/vagrant/.rbenv/versions/2.1.3/bin/ruby extconf.rb checking for sqlite3.h... no sqlite3.h is missing. Try 'port install sqlite3 +universal', 'yum install sqlite-devel' or 'apt-get install libsqlite3-dev' and check your shared library search path (the location where your sqlite3 shared library is located). *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. . . .
sqliteをインストールする。
terminal$ sudo yum -y install sqlite-devel
実行結果. . . インストール: sqlite-devel.x86_64 0:3.7.17-4.el7 完了しました!
-
Gemfile編集
terminal$ vi cat/Gemfile
15行目の
# gem 'therubyracer', platforms: :ruby
のコメントアウトを外す。Gemfile01 source 'https://rubygems.org' 02 03 04 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 05 gem 'rails', '4.1.2' 06 # Use sqlite3 as the database for Active Record 07 gem 'sqlite3' 08 # Use SCSS for stylesheets 09 gem 'sass-rails', '~> 4.0.3' 10 # Use Uglifier as compressor for JavaScript assets 11 gem 'uglifier', '>= 1.3.0' 12 # Use CoffeeScript for .js.coffee assets and views 13 gem 'coffee-rails', '~> 4.0.0' 14 # See https://github.com/sstephenson/execjs#readme for more supported runtimes 15 gem 'therubyracer', platforms: :ruby 16 17 # Use jquery as the JavaScript library 18 gem 'jquery-rails' . . .
-
Gemfileを編集したのでbundleinstall
terminalcat/bin/bundle install
次のエラーが表示されたら
terminalGem::Ext::BuildError: ERROR: Failed to build gem native extension. /home/vagrant/.rbenv/versions/2.1.3/bin/ruby extconf.rb creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling rr.cpp make: g++: コマンドが見つかりませんでした make: *** [rr.o] エラー 127 make failed, exit code 2 Gem files will remain installed in /home/vagrant/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/therubyracer-0.10.2 for inspection. Results logged to /home/vagrant/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0-static/therubyracer-0.10.2/gem_make.out An error occurred while installing therubyracer (0.12.1), and Bundler cannot continue. Make sure that `gem install therubyracer -v '0.12.1'` succeeds before bundling.
gcc++が無くてjavascriptエンジン(v8)のコンパイルに失敗している可能性があるためインストールする。
terminal$ sudo yum -y install gcc-c++
-
Server起動
terminal$ cd cat $ rails s
※ Rails4.2 以上の場合は
$rails s -b 0.0.0.0
とする。 -
動作確認
http://192.168.33.10:3000 にアクセスしてこんな感じに表示できればOK!
参考URL
- rbenv+ruby-buildをインストールする手順 (CentOS/RedHat) | WEB ARCH LAB
- Rubyをrbenv+ruby-buildを利用してインストールする手順 (CentOS/RedHat) | WEB ARCH LAB
- LinuxにRuby on Railsをインストールする
- vagrantでrails動かしてみたら、localhost:3000にアクセスできない (´゚д゚`)エー!
- Ruby:Rails4 で Could not find a JavaScript runtime エラー
- Qoosky - rbenvおよびbundlerの基本的な使用方法
- installing with native extensions stall · Issue #62 · cowboyd/libv8
- Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /home/arup/.rvm/rubies/ruby-2.1.1/bin/ruby extconf.rb checking for sqlite3.h. - Getting Started - Rails Forum
- rbenv を利用した ruby のインストール中にエラーとなる場合の対応