Help us understand the problem. What is going on with this article?

Rails開発のための仮想環境をvagrantでつくる

More than 3 years have passed since last update.

追記

Dockerでの構築方法を以下にまとめました。参考にしてみてください。
Docker で Rails5 の開発環境を「rails new」から構築する

はじめに

Railsの開発を進めたいが、手元のパソコンの環境は不用意に壊したくないという時、仮想環境で開発を行うと思います。
そのために、すぐに開発に使えるVagrantfileを作成しました。
こちらのgithubリポジトリで公開しています。

https://github.com/kawasin73/vagrant-centos-rails

インストールされるもの

  • CentOS 6.7
  • rbenv
  • ruby 2.2.2
  • sqlite
  • MySQL
  • Nokogiriに必要なライブラリ
  • ImageMagickに必要なライブラリ
  • Git
  • その他、必要そうなライブラリ

必要となる環境

開発環境は、VirtualBox と Vagrant を用いて構築します。

Mac OSX では、VirtualBox と Vagrant を Homebrewでインストールできます。

brew cask install virtualbox
brew cask install vagrant
vagrant plugin install vagrant-vbguest

Windows でインストールするときは、公式サイトからダウンロードしてください。

vagrant-vbguest は、Guest Additionを最新に更新してくれるpluginです。
このプラグインがない場合、2回目以降のvagrant upで、mount に失敗することがあります。
また、vagrant-vbguest をインストールした場合でも、vagrant upに失敗してしまうことがあるようです。その場合は、以下の記事を参考にしてください。

利用方法

git clone https://github.com/kawasin73/vagrant-centos-rails
cd vagrant-centos-rails
vagrant up
vagrant ssh

vagrant up を実行すると、CentOSのboxのダウンロードが始まりCentOSが立ち上がります。そして、初回起動時はprovisionが行われ、上に挙げたライブラリがインストールされます。
provisionerはShellなので、Vagrant と VirtualBox 以外に必要となる依存はありません。

また、ゲストOS上の~/dataにホストOSのカレントディレクトリをマウントしているので、ホストOSのIDEを使っての開発もできます。

vagrant ssh に成功したら、

cd data
gem install rails
rails new . --database=mysql --skip-turbolinks
rake db:create
bundle install

とするとRailsの開発を進められます。
詳しくは、@masuidriveさんの @masuidrive のRailsプロジェクトの始め方を参考にすると良いと思います。

Vagrantfile

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

  GUEST_RUBY_VERSION = '2.2.2'

  config.vm.box = "bento/centos-6.7"

  config.vm.hostname = "centos-6-for-rails"

  config.vm.network "forwarded_port", guest: 3000, host: 3000

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

  config.vm.synced_folder ".", "/home/vagrant/data"

  config.vm.provider "virtualbox" do |vb|
    # Display the VirtualBox GUI when booting the machine
    vb.gui = false

    # Customize the amount of memory on the VM:
    vb.memory = ENV["VM_MEMORY"] || "1024"
  end

  config.vm.provision "shell", privileged: true, inline: <<-SHELL
    function install {
      echo installing $1
      shift
      yum -y install "$@" >/dev/null 2>&1
    }
    yum -y update >/dev/null 2>&1
    install "development tools"  gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel
    install "Git" git
    install "sqlite" sqlite sqlite-devel
    # mysql 5.6
    yum install -y http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm >/dev/null 2>&1
    install "MySQL" mysql mysql-server mysql-devel
    chkconfig --add mysqld
    chkconfig --level 345 mysqld  on
    echo "Start and Initialize MySQL"
    service mysqld start >/dev/null 2>&1
    mysql -uroot <<SQL
-- SET ROOT PASSWORD --
UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';
-- REMOVE ANONYMOUS USERS --
DELETE FROM mysql.user WHERE User='';
-- REMOVE REMOTE ROOT --
DELETE FROM mysql.user
WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
-- REMOVE TEST DATABASE --
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
-- RELOAD PRIVILEGE TABLES --
FLUSH PRIVILEGES;
CREATE USER 'rails'@'localhost';
SET PASSWORD FOR 'rails'@'localhost' = PASSWORD('password');
CREATE DATABASE development_db  DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE test_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON development_db.* to 'rails'@'localhost';
GRANT ALL PRIVILEGES ON test_db.* to 'rails'@'localhost';
SQL
    install "Nokogiri dependencies" libxml2 libxslt libxml2-devel libxslt-devel
    install "ImageMagick" ImageMagick ImageMagick-devel
    cp /etc/localtime /etc/localtime.org
    ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    echo "ZONE=\"Asia/Tokyo\"" > /etc/sysconfig/clock
    service crond restart
  SHELL

  config.vm.provision "shell", privileged: false, inline: <<-SHELL
    echo installing rbenv
    git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
    echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
    source ~/.bash_profile
    echo 'gem: --no-ri --no-rdoc' >> ~/.gemrc
    echo installing ruby#{GUEST_RUBY_VERSION}
    rbenv install #{GUEST_RUBY_VERSION}
    rbenv global #{GUEST_RUBY_VERSION}
    echo installing Bundler
    gem install bundler -N >/dev/null 2>&1
  SHELL
end

MySQLは、初期化とユーザーの作成、データベースの作成まで行っています。

今後について

PostgreSQLやRedisなども入れることができたらなぁと思っています。
皆さん使ってみてください!

参考URL

@masuidriveさんのVagrantfileは、ubuntuだったので、それのCentOS版を今回作りました。

kawasin73
ソフトウェアエンジニアです。東京大学4年Go/Ruby/Swift/Python/Javascript/Java/C
https://kawasin73.hatenablog.com/
dmmcom
総合エンタテイメントサイト「DMM.com」を運営。会員数は2,900万人を突破。動画配信、FX、英会話、ゲーム、太陽光発電、3Dプリンタなど40以上のサービスを展開。沖縄での水族館事業参入、ベルギーでのサッカークラブ経営など、様々な事業を手掛ける。また2018年より若手起業家の支援を強化、「DMM VENTURES」による出資や、M&Aなどを積極的に展開している。
https://dmm-corp.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした