ローカルマシン(Mac)で作ったRailsプロジェクトをVagrant + Virtual Box(CentOS 6.5, WEBrick)で動かす

今更ながら、Vagrantの勉強です。
備忘録がてら書いて行きます。

まず、ローカルマシンでRailsプロジェクトを作成して
WEBrickで画面表示できるかどうか確認をします。

次にローカルマシンにVagrantとVirtual Boxをインストールします。

  • Vagrant 1.6.2 # 2014/05/25時点で最新版です。
  • Virtual Box 4.2.16 # 2014/05/25時点で最新版ではありません。

以下のコマンドを実行して、CentOSをVirtual Boxに追加します。
$ vagrant box add [任意の名前(ここでは、centos65にしました)] [url]
urlは以下のページからCentOS 6.5を選択しました。


ローカルマシンで作成したRailsプロジェクトのディレクトリに移動して、以下のコマンドを実行

$ vagrant init centos65

実行した後、Railsプロジェクト直下にVagrantfileというのが作成される。

Vagrantfileを編集して、ホストのMacから接続できるIPアドレスを設定します。
次がコメントアウトされているので、コメントを外します。

  config.vm.network "private_network", ip: "192.168.33.10"

コメントを外すと同時に次が記述されていること確認します。

  config.vm.box = "centos65"

CentOSを起動します。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> 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 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 4.3.6
    default: VirtualBox Version: 4.2
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => [Railsプロジェクトのディレクトリ]
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.

sshで接続します。

$ vagrant ssh

CentOSをアップデートします。

$ sudo yum update 

rbenvを使い、Rubyをインストールします。

$ sudo yum -y install git
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

vagrantを再起動して、rbenvのパスが通っていることを確認

$ rbenv -v

任意のRubyをインストール。今回は最新版をインストールする。
さらにインストールしたRubyを使うように設定。

$ rbenv install —list
$ rbenv install 2.1.2
$ rbenv rehash
$ rbenv versions
$ rbenv global 2.1.2
$ ruby -v # 2.1.2になっていればOK

その他、以下のコマンドを実行

$ gem update —system
$ rbenv exec gem install bundler
$ sudo yum install sqlite-devel # sqliteでアプリを作成している場合のみ実施

Macからアクセスできるようにiptablesを更新する。

$ sudo iptables -L -v
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
$ sudo /etc/init.d/iptables restart
$ sudo iptables -L -v # 設定が追加されていることを確認

bundle installを実行する。

$ cd /vagrant
$ bundle install # 動かなかった場合、rbenv exec bundle install

WEBrickを起動する

$ rails s

※以下のエラーが発生した場合

Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

Gemfileの末尾に以下の記述をして、再度bundle installすれば解決しました。

gem 'therubyracer'

192.168.33.10:3000にアクセスして画面が出れば完了。

次は、Nginxとunicornで動くものを作ってみます。