VagrantでRails開発環境を整備 (CentOS 6.5/nginx/mysql5.6/rbenv/ruby2.1.0)


Vagrantネタ第二弾です。今回はVagrant + Chef Soloを使って、Rails開発用のboxをローカルで作れるようにしました。具体的には、CentOS 6.5上にChef Soloで、nginx/mysql5.6/rbenv/ruby2.1.0などのベーシックな環境を自動構築します。

test-kitchenでインフラのTDDに挑戦』でもほぼ同じことができます。加えて、Serverspecまでまとめで実行できるので、こちらのほうがオススメかも!


🐠 Vaggrant/Chefとは?

VagrantとはPC上に仮想マシンを作成できるツール。ChefやPuppetはサーバの構成管理ツール。

🚜 Vagrantのメリット

コマンド1つでVMを立ち上げたり・止めたり・削除したりできる
ChefやPuppetと併用できるので、複数人で本番と同じ開発環境を共有できる
(開発環境を構築する際に個人のローカル環境に依存するのを避ける事ができる)
AWSやDigital Oceanなどのインスタンスもコマンド一つで立ち上げ・削除できる

🐹 Chef/Puppetのメリット

サーバの構成情報をgitなどで管理できるので変更点管理・チームでの管理が容易になる

🐰 Vagrant

Vagrant 公式サイト

パッケージをDLしてインストール。

vagrantをインストールしたら、boxでChefを使えるようにするためのプラグインをインストール。あと、コミュニティの作ったCookbookのインストール。

vagrant plugin install vagrant-omnibus

🐯 VirtualBox

VirtualBox 公式サイト

パッケージをDLしてインストール。

🎃 仮想マシンの作成

自分の好きな場所(例は~/Dropbox/Vagrant)に仮想マシン用のフォルダを作成。

mkdir ~/Dropbox/vagrant
git clone https://github.com/morizyun/vagrant-rails.git vagrant-rails
cd vagrant-rails
bundle install
bundle exec berks install --path site-cookbooks
vagrant up

🎉 Railsプロジェクトの作成

続いてRailsプロジェクトを作成します。本当はスクリプトでプロジェクトを作りたかったんですが、ちょっと失敗中のため、引き続き調査。

vagrant ssh
cd /vagrant/app
rails new chef_rails --database=mysql
cd chef_rails
echo "gem 'therubyracer', platforms: :ruby" >> Gemfile
bundle install
bundle exec rake db:create
rails s

🍮 ブラウザでのアクセス

http://192.168.33.10/にブラウザをアクセスするとapp/フォルダの中のファイルにアクセスできます。

スクリーンショット 2014-03-16 11.29.17

🍄 GitHubリポジトリ

今回のVagrantfileをGitHubにも作っておきました!

morizyun/vagrant-rails

😼 苦労している点

Chefのノウハウがまだ全然たまっていないので、なんでもないところでつまずいてずっとググっています。

目標はHerokuレベルで簡単にアプリケーションをデプロイできるようになりたいなぁと夢見ています。

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍