ローカルマシン(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を選択しました。
- http://www.vagrantbox.es/
- CentOS 6.5 x86_64 (https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box)
ローカルマシンで作成した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でアプリを作成している場合のみ実施
$ 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で動くものを作ってみます。