ztbuz@dev

人生に絶望しているZが、それでも技術を身につけようと必死になるブログ

Vagrant上でRuby on Railsを動作させる方法

最終的にはgit cloneしてvagrant upしたらRailsが動くところまでやりたいのですが、今回はまずVagrant上でRailsを動作させてみます。 あらかじめ、VirtualBoxとVagrantをインストールしておく必要があります。

Railsの作成〜Vagrantの起動まで

ローカル側でRailsを作成する

まず、ローカル側でRailsを作成します。 Rails自体はローカル側ではなくVagrantで動かすので、bundleはいりません。

$ rails new hoge --skip-bundle
$ cd hoge

Vagrantの初期設定をする

次に、ローカル側にVagrantのBoxを追加します。 Boxとは言ってみればOSのテンプレートのようなものです(たぶん)。

以下のサイトにBoxがたくさんあるので、すきなものをaddします。

たとえば、上記サイトで配布されているCentOS 6.4をcentos64という名前で追加するには、以下のように実行します。

$ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box
$ vagrant init centos64

ポートフォワーディングの設定をする

Vagrant上で動かすRailsのポート番号はデフォルトで3000番です。 そのため、ローカル側からhttp://localhost:3000/でアクセスしたときに、Vagrant側でRails3000番に割り当てる必要があります。

これは、vagrant init実行時に生成されたVagrantfileという設定ファイルから編集できます。

# config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 3000, host: 3000

Vagrantを起動する

以下のコマンドでVagrantが起動します。

$ vagrant up

仮想サーバの設定

VagrantにSSH接続する

まず、Vagrantに接続します。

$ vagrant ssh

ファイアウォールを停止する

次にファイアウォールを停止します。 こうしないと、Railsで用いる3000番を受け付けてくれません。

$ sudo service iptables stop
$ sudo chkconfig iptables off

あるいは、3000番を受け付けるようiptablesに記述してもよいと思います。 ローカルなので、offでいいと思いますが。。。

yumでいろいろインストールする

yumをつかって、いろいろとインストールします。 makeとかgccとかはデフォルトで入っているようですが、正直なにが必要かわからないので、必要そうなものを適当にyum installします(すみません)。

$ sudo yum -y update
$ sudo yum -y install make gcc curl-devel libyaml-devel openssl-devel readline-devel zlib-devel git

rbenvをインストールする

今回はrbenvをつかってrubyをインストールするので、以下のようにrbenvをインストールします。

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

ruby-buildをインストールする

rbenvをつかうにはruby-buildも必要なので、あわせてインストールします。

$ git clone https://github.com/sstephenson/ruby-build.git ~/ruby-build
$ sudo ~/ruby-build/install.sh

rubyをインストールする

では、rubyをインストールします。 rbenv installまで打ってTAB2回押しでインストール可能なリストが表示されるので、安定版を適当にインストールします。

$ rbenv install 2.0.0-p353
$ rbenv global 2.0.0-p353

gemを設定する

次にgemの設定をします。 Railsではbundlerをつかうので、これをインストールします。 インストールし終えたら、rbenv rehashするのを忘れません。

$ gem update --system
$ gem install bundler
$ rbenv rehash

Railsの設定

bundle installの実行速度を早くする

Vagrant上でbundle installをするとものすごく遅くなるときがあります。 これは、以下のように設定することで解決します。

$ sudo vi /etc/resolv.conf

; 以下を追記する
options single-request-reopen

vagrantフォルダに移動する

ローカル側のVagrantfileがあるフォルダは、Vagrant内の/vagrantと共有されています。 この場所でRailsを起動するので、移動します。

$ cd /vagrant

Gemfileを編集する

gemtherubyracerというJavaScriptの実行エンジンがないとエラーが起きてしまいますので、Gemfileの設定を変更します。 ローカル側からでも、Vagrant上からでも大丈夫です。

# gem 'therubyracer', platforms: :ruby
gem 'therubyracer', platforms: :ruby

Railsを起動する

以下のコマンドで実行できます。

$ bundle exec rails s

Webブラウザで表示する

あとは、Webブラウザでhttp://localhost:3000/にアクセスすると、ページが表示されます。 おめでとうございます(自分に対して)。

さて、いまからChefの勉強です。。。

参考サイト