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側でRailsの3000
番に割り当てる必要があります。
これは、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
まで打ってTAB
2回押しでインストール可能なリストが表示されるので、安定版を適当にインストールします。
$ 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を編集する
gem
のtherubyracer
というJavaScriptの実行エンジンがないとエラーが起きてしまいますので、Gemfile
の設定を変更します。
ローカル側からでも、Vagrant上からでも大丈夫です。
# gem 'therubyracer', platforms: :ruby
gem 'therubyracer', platforms: :ruby
Railsを起動する
以下のコマンドで実行できます。
$ bundle exec rails s
Webブラウザで表示する
あとは、Webブラウザでhttp://localhost:3000/
にアクセスすると、ページが表示されます。
おめでとうございます(自分に対して)。
さて、いまからChefの勉強です。。。