LoginSignup
4
3

More than 3 years have passed since last update.

ゼロからmacにVagrantとVirtualBoxを使ってCentOSを入れてから、Ruby on Railsの環境構築を整えるまでの手順

Last updated at Posted at 2017-09-05

はじめに

基本的に参考サイトに書いている内容を真似してもらえれば、大丈夫です。つまずきそうな部分や、上手くいかない部分を補足的に書いています。

1. centOSをmacに入れる

http://qiita.com/okmn/items/461e5cd3ff234d4b73ff
を参考にして入れてください。

*使わなくなった仮想環境を削除する方法は
http://qiita.com/mochizukikotaro/items/52f4434c3f69c4ba1f54
を参考してください。

2.zshとpreztoを入れる

zshは、補完機能など、bashよりも使いやすいので、入れると便利です。また、preztoはzshをカラフルにデコレーションしてくれるフレームワークで、コマンドが見やすくなります。なので、別にいいって方は、飛ばしても大丈夫です。

2.1 zshのインストール

zshのインストールをします。yumを使うと、腐ったものが入って、preztoが使えないので、ソースから取ってくる必要があります。

$ wget http://sourceforge.net/projects/zsh/files/zsh/5.0.6/zsh-5.0.6.tar.gz

解凍する

$ tar zxvf zsh-5.0.6.tar.gz
$ ls
zsh-5.0.6  zsh-5.0.6.tar.gz

コンパイルしてインストール(おまじない感)

$ cd zsh-5.0.6
$ ./configure --enable-multibyte
$ make
$ sudo make install

無事インストールできたことを確認する。

$ zsh --version
zsh 5.0.6 (x86_64-unknown-linux-gnu)
./configure時にエラーが出た場合
①gccを入れるパターン
configure: error: no acceptable C compiler found in $PATH

というエラーが出た場合

C言語のコンパイラを入れろということなので

$ sudo yum install gcc

をする。

②ncurses-develを入れるパターン
configure: error: "No terminal handling library was found on your system.
This is probably a library called 'curses' or 'ncurses'.  You may
need to install a package called 'curses-devel' or 'ncurses-devel' on your
system."

というエラーが出た場合

ncurses-develを入れれば解決できる

$ sudo yum install ncurses-devel

これで、解決!

起動時にインストールしたzshが起動するようにする

zshを使えるようにはなりましたが、毎回毎回zshコマンドを打つのは面倒くさいので、起動時にzshを起動させるために、zshをログインシェルに設定します。
ここで、ログインシェルに設定するには、chsh -s コマンドで、zshのパスを設定してあげれば良いのですが、そのパスが、/etc/shellsというファイルの中に記述されていないと、エラーとなってしまうらしいので記述していきます。実際に見てみるとわかりやすいです。

$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

インストールしたzshのパスは当然ない。

zshのパスを確認する

$ which zsh
/usr/local/bin/zsh

よって、write権限を持っているsudoで、vimを開き書き換える

$ sudo vi /etc/shells #書き換える
$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/usr/local/bin/zsh #追加した

ここで、ログインシェルを/usr/local/bin/zshに設定する

chsh -s /usr/local/bin/zsh

*注意
パスワードを要求されますが、パスワードとユーザー名は初期ではvagrantです。

2.2 preztoを入れる

まずはgitを追加する(railsをインストールするときにも、gitのインストールをしていますが、ここでしているので、railsの時はとばしてください。)

$ sudo yum install git

zshを起動

$ zsh

公式に載ってるコマンドを実行していく

$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

#初期設定のファイルを追加する(これもおまじない感)
$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

反映させる(再起動してもいい)

$ source ~/.zshrc

参考
http://yuk.hatenablog.com/entry/2014/09/09/014115

3. ruby on railsを入れる

https://tsuchikazu.net/linux_ruby_on_rails_install/
を参考に入れてください。

詰まったところ

①rbenv installでエラーがでた。

$ rbenv install 2.4.0
Downloading ruby-2.4.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2
error: failed to download ruby-2.4.0.tar.bz2

BUILD FAILED (CentOS Linux 7 using ruby-build 20170523-7-g2de7a29)

http://qiita.com/kanuu/items/7efcbec499222802be3b
を参考にして

$ RUBY_BUILD_CURL_OPTS=--tlsv1.2 rbenv install 2.4.0

を打つと、インストールできた。

②echoコマンドがよくわからなかった。

https://eng-entrance.com/linux-command-echo
がとてもわかりやすくて、スッキリ。

③rails newでエラーが出てきた

$rails new railbookと打つと

An error occurred while installing sqlite3 (1.3.13), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.13'` succeeds before bundling.

In Gemfile:
  sqlite3
         run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`

と、エラーが出てきた。
http://qiita.com/NaokiIshimura/items/dfabac823cbad04d5ace
を参考にすると
sqlite-develを入れるらしい。

# インストール
$ sudo yum -y install sqlite-devel
$ bundle install

...
Bundle complete! 16 Gemfile dependencies, 71 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

$ rails g controller hello
      create  app/controllers/hello_controller.rb
      invoke  erb
      create    app/views/hello
      invoke  test_unit
      create    test/controllers/hello_controller_test.rb
      invoke  helper
      create    app/helpers/hello_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/hello.coffee
      invoke    scss
      create      app/assets/stylesheets/hello.scss

となり、解決できました。

④rails g contoller でいっぱいエラーが出た

$ rails generate controller hello
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:85:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
Backtrace for gem load error is:
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs.rb:4:in `<top (required)>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:5:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:5:in `<top (required)>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:82:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:82:in `block (2 levels) in require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `each'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `block in require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `each'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler.rb:108:in `require'
/home/vagrant/railbook/config/application.rb:7:in `<top (required)>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require_application_and_environment!'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/generate/generate_command.rb:19:in `perform'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/base.rb:63:in `perform'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command.rb:44:in `invoke'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands.rb:16:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Bundler Error Backtrace:
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:81:in `block (2 levels) in require'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `each'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `block in require'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `each'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `require'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler.rb:108:in `require'
    from /home/vagrant/railbook/config/application.rb:7:in `<top (required)>'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require_application_and_environment!'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/generate/generate_command.rb:19:in `perform'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/comman# Use CoffeeScript for .coffee assets and views
d.rb:27:in `run'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/base.rb:63:in `perform'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command.rb:44:in `invoke'
    from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands.rb:16:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

http://krs1.hatenablog.com/entry/2016/05/30/120000
を参考にするとGemfileの中にtherubyracerを入れる必要があるらしい

gem 'therubyracer'

bundle installする

$ bundle install



Bundle complete! 17 Gemfile dependencies, 74 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

$ rails g controller hello
create  app/controllers/hello_controller.rb
      invoke  erb
      create    app/views/hello
      invoke  test_unit
      create    test/controllers/hello_controller_test.rb
      invoke  helper
      create    app/helpers/hello_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/hello.coffee
      invoke    scss
      create      app/assets/stylesheets/hello.scss

となり、解決できました。

⑤localhost:3000/にアクセスできなかった

rails sでサーバーを立ててもブラウザで、
localhost:3000/
にアクセスすると何も表示されない。

http://mokokko.hatenablog.com/entry/2014/05/04/221452
を参考にすると、ネットワーク設定をするらしい。

一度、centOSから出る

$ exit

Vagrantfileを編集する

Vagrantfile
#次の1行を追加する
config.vm.network "forwarded_port", guest: 3000, host: 3000

Vagrantを再起動する

$ vagrant reload

これで、もう一度$rails s をして、ブラウザで、localhost:3000/
にアクセスすれば、表示できた!

おわりに

色々、つまずいた...

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3