14
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant + VirtualBox + Ubuntu でRails環境構築

Last updated at Posted at 2018-02-23

仮想環境でrails serverするまで。
WindowsでやっているのでMacでは多少挙動が違うかもしれません。
不足があるかもしれませんがご容赦を。

技術要件

  • Windows10

下準備

Vagrant のインストール

公式サイト
http://www.vagrantup.com/
ここから、vagrantをダウンロードし、インストール。

VirtualBox のインストール

公式サイト
https://www.virtualbox.org/
VirtualBox をダウンロードし、インストール。

Vagrant sshをするまで

プロジェクトディレクトリの作成

ここではrails_testという名前で。

$ mkdir rails_test
$ cd rails_test

でディレクトリを作成し、その中へ移動。

Ubuntuのダウンロード

Ubuntuの公式サイトよりダウンロード&インストール。
https://www.ubuntu.com/download/desktop

$ vagrant box list

でUbuntuが入ってる場合は必要なし。

vagrant init

$ vagrant init ubuntu16.04
A `Vagrantfile` has been placed in this directory.

と出る。

Vagrantfileの編集

確認&修正

以下のように、テキストエディタ(AtomやEmacsなど)で編集(コメントアウト部分は一部省略)。


Vagrant.configure("2") do |config|
  
  config.vm.box = "bento/ubuntu-16.04" #こうなっていることを確認
  
  config.vm.network "forwarded_port", guest: 3000, host: 3000 #修正
  
  config.vm.network "private_network", ip: "192.168.33.10" #コメントアウト
  config.vm.synced_folder "./", "/vagrant", nfs: true #修正
  
end

vagrant up

vagrantを立ち上げる

$ vagrant up

Virtual Boxのバージョンが新しいと、この段階で動かない場合が見られる(5.2系)。
5.1.22では動作確認済。なので、Virtual Boxをインストールするときは、バージョンに気をつけて!

もしパスワードを聞かれたら、sudoのパスワードを入力。
終わったら、

$ vagrant ssh

でログインできるはず…!

vagrant sshが終わったら

基本ライブラリのインストール

$ sudo apt-get update
$ sudo apt-get install -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
$ sudo apt-get -y install git curl g++ make  #gitのインストール
$ sudo apt-get -y install sqlite3 libsqlite3-dev nodejs

rbenv の Install

ちょっと時間がかかりますが、気長に待ちましょう。

$ cd
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ sudo apt install -y ruby-dev
$ sudo apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

※gitでrbenvを入れる理由

最新のrubyを入れようとした時、rbenvも最新版を持ってくる必要がある。その際、gitで入れておいた方が、masterを持ってきやすいため。

rbenv で Ruby の install

$ sudo apt-get install -y libreadline-dev
$ echo $SHELL  #/bin/bash

$ vim .bashrc で、末尾に以下を追加。


export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"
$ source ~/.bashrc  #またはexit
$ which rbenv  #/home/vagrant/.rbenv/bin/rbenv
$ rbenv --version  #rbenv 1.1.1-28-gb943955
$ sudo apt-get install libffi-dev
$ rbenv install 2.4.1  #ここで指定したバージョンのRubyが入る
$ rbenv versions
$ rbenv global 2.4.1
$ rbenv rehash
$ rbenv version
$ which ruby  #/home/vagrant/.rbenv/shims/ruby
$ ruby -v  #これで2.4.1になることを確認
# 2.4.1じゃない場合
$ source ~/.bashrc #これで確認して2.4.1になっていたらok
$ which gem 
$ gem -v # 2.6.11くらい

rails new までの下準備

下準備

$ sudo apt-get -y install libxslt-dev libxml2-dev
$ echo install: --no-rdoc --no-ri >> .gemrc
$ echo update:  --no-rdoc --no-ri >> .gemrc

Mysqlのinstall

$ sudo apt-get install mysql-server

途中謎の画面になるが何も入力せずにenterを叩く。

$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

root loginができないときは、以下で解決!

$ sudo service mysql stop
$ sudo rm -fr /var/lib/mysql
$ sudo mkdir /var/lib/mysql
$ sudo chown mysql:mysql /var/lib/mysql
$ sudo /usr/sbin/mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql

$ sudo service mysql restart
$ mysql -uroot #これでできるはず #quitと叩けば抜けられる

Bundler install

$ rbenv exec gem install bundler
$ rbenv rehash

gem の install

共有ディレクトリにgemを入れると変な感じになるので。

$ sudo mkdir /usr/local/src/bundles
$ sudo chown -R vagrant:vagrant /usr/local/src/bundles

ディレクトリの作成

$ cd /vagrant/ # 共有ディレクトリへ
$ mkdir app_name
$ cd app_name

bundle init

$ bundle init

Gemfile を以下のように書き換える。


# frozen_string_literal: true
source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails", "5.1.1"

bundle install

$ bundle install --path /usr/local/src/bundles/app_name --jobs=4
$ bundle exec rails new -B -d mysql --skip-turbolinks --skip-test . # 上書きしますか?的なのが出るけど、enterでok
$ vim Gemfile

以下のように書き換える。
バージョンは適宜変えてください。


source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.1'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.18', '< 0.5'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby

# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

これで、 $ bundle install

bundle install でエラーが起こったときの対処

よくbundle install で引っかかるgemのエラー処理をいくつか紹介。

nokogiriというgemのinstallでerrorしたとき

$ sudo gem install nokogiri
$ bundle install --path /usr/local/src/bundles/app_name

therubyracerが入らないとき

$ sudo apt-get install build-essential g++
$ gem install therubyracer -v '0.12.3' -- --with-v8-dir
$ bundle install

mysql2が入らないとき

An error occurred while installing mysql2 (0.3.18), and Bundler cannot continue.

$ cd
$ sudo apt-get install libmysqlclient-dev
$ gem install mysql2 -v '0.4.8'
$ bundle install

rmagickが入らないとき

An error occurred while installing rmagick (2.15.2), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.15.2'` succeeds before bundling.
$ sudo apt-get install imagemagick libmagickcore-dev libmagickwand-dev
$ bundle install --path /usr/local/src/bundles/app_name

rails s

vagrant で起動したrailsアプリをブラウザで表示する。

$ bundle exec rails s -b 0.0.0.0

と叩いたら、
http://0.0.0.0:3000/ または localhost:3000
にアクセス。

これで下のような画面がでたら完了です!

便利な小ネタ

gitの管理はクライアント側でやる

githubとのやりとりは、vagrant側でなくWindows側でやった方がよい。アカウントをvagrant側で設定したり、公開鍵の登録とかが面倒になってしまうためです。

aliasの設定

以下をvagrant側の~/.bashrcの適当なところに貼り付け!

alias b='bundle exec'
alias brs='bundle exec rails s -b 0.0.0.0'
alias brc='bundle exec rails c'
14
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?