Windows에서 Babun, Vagrant 그리고 Virtualbox를 이용한 Rails 개발환경 구축하기

Windows에서 Ruby on Rails 개발환경을 구축하기란 그렇게 만만하지 않습니다. 그래서 대부분 MacOS나 Linux를 사용하지요.
하지만 아쉽게도 업무에서 Windows가 설치된 노트북을 사용한다면 이야기는 다르지요. 이제부터 간단하게 Windows에서 Rails 개발환경을 구축해 보겠습니다.
지금까지 다양한 방법으로 시도했지만 이 방법이 저에겐 최선이었습니다.

지금까지 시도한 방법 중 가장 간단한 방법은 VMWare Workstaion이나 VirtualBox에 리눅스를 설치하고 ssh로 접속하여 vi로 개발하는 것입니다. 하지만 Atom 에디터도 쓰고 싶고 간단하게 Git Desktop도 쓰면서 익숙한 Windows 환경에서 개발하는 것이 정신건강에도 이롭고 초보자에게도 훨씬 스트레스도 덜 할 것 같습니다.
참고로 VMWare Workstaion에 MacOS를 올려서 사용도 해봤습니다.
아이러니하게도 VMWare Workstaion에서 돌리는 MacOS가 저의 2015 Mac mini보다 빠른 것같은 착각도 느꼈습니다.

그럼 준비물은 아래와 같습니다.

  • Windows가 설치된 노트북 (Windows 7)
  • Babun
    전 Babun을 무척 사랑합니다. Windows에서 사용할 수 있는 가장 아름다운 ssh client입니다.
  • Vagrant 1.8.7
  • VirtualBox 5.1.10
  • Atom
Babun 설치

http://babun.github.io/ 에 접속하여 설치하면 됩니다.
전 Babun은 Windows에게는 축복이라고 생각합니다. 저만 그렇게 생각할 수도

Imgur Windows의 명령프롬프트와 다르게 아주 아름답습니다. iTerm처럼요.
아래의 Babun은 Melso Powerline Font와 oh-my-zsh 테마인 cobalt2 조합니다. Imgur Windows에서도 아래와 같은 화면을 볼 수 있습니다.
Imgur

Vagrant 설치

https://www.vagrantup.com/ 에 접속하여 설치합니다.
Windows는 패키지 설치만큼은 편안하고 확실합니다. 물론 MacOS보다는 아니지만.
Imgur

VirtualBox 설치

https://www.virtualbox.org/ 에 접속하여 설치합니다.
Imgur

Vagrant 설정

이제 준비가 다 되었으니 본격적으로 설정을 합니다. 우선 전 D드라이브에 rails란 디렉토리를 만들고 Rails 개발을 이곳에서 진행할 예정입니다. Imgur

Babun을 실행 후 rails 디렉토리로 이동합니다.

cd /cygdrive/d/rails  

Imgur

vagrant init을 실행하여 Vagrantfile을 생성합니다.

vagrant init  

Atom에서 Vagrantfile을 열고 아래와 같이 수정합니다.
Imgur

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

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|  
  # Use Ubuntu 16.04 Xenial Xerus 64-bit as our operating system
  config.vm.box = "ubuntu/xenial64"

  # Configurate the virtual machine to use 2GB of RAM
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end

  # Forward the Rails server default port to the host
  config.vm.network :forwarded_port, guest: 3000, host: 3000
end  

간단하게 설명하면 OS로는 Ubuntu 16.04를 사용하고 메모리는 2GB 그리고 포트는 3000번을 사용합니다.

Vagrant를 실행합니다.

vagrant up  

Imgur 기존에 한번 실행했던 것을 다시 실행해서 처름 실행할 때와 메시지가 다르긴 한데 특별한 오류 없이 실행되면 아래와 같은 메시지로 보게됩니다. Imgur

중요한 건 Ubuntu의 /vagrant와 Windows D:/rails가 공유된다는 사실^^ 정말 유용하죠. 이것때문에 Windows에서 Atom으로 코딩을 하고 Ubuntu에서 rails generaterails migrate하고 rails server 로 띄워서 확인할 수 있습니다.

vagrant ssh로 Ubuntu에 접속해 봅니다. Imgur

아참 우리의 VirtualBox는 잘 계신지 확인해 봐야죠. Imgur 잘 실행되고 계시네요.

Ruby On Rails 개발 환경 설정

이제 Rails 개발 환경을 설정합니다. 개발 환경 설정은 GoRails를 참고하였습니다. GoRails 만세!!!
https://gorails.com/setup/ubuntu/16.04

# package 설치
sudo apt-get update  
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

cd  
git clone https://github.com/rbenv/rbenv.git ~/.rbenv  
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc  
echo 'eval "$(rbenv init -)"' >> ~/.bashrc  
exec $SHELL

# rbenv 설치
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build  
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc  
exec $SHELL

rbenv install 2.3.1  
rbenv global 2.3.1  
ruby -v

echo "gem: --no-ri --no-rdoc" > ~/.gemrc

# bundler 설치
gem install bundler

# node.js 설정
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -  
sudo apt-get install -y nodejs

# rails 설치
gem install rails  
rbenv rehash  
rails -v  

Imgur

추가적으로 필요하다면 Git 설정을 합니다.

git config --global color.ui true  
git config --global user.name "YOUR NAME"  
git config --global user.email "YOUR@EMAIL.com"  
ssh-keygen -t rsa -b 4096 -C "YOUR@EMAIL.com"  

아래 명령으로 id_rsa.pub 내용을 확인하고 복사합니다.

cat ~/.ssh/id_rsa.pub  

GitHub에 접속하여 id_rsa.pub 내용을 등록합니다.
Imgur Imgur Imgur

정상적으로 등록되었는지 아래 방법으로 테스트합니다. Imgur

테스트

이제 GitHub에 있는 rails 예제 코드를 clone하여 실행해 봅니다. 참고로 여기에서 사용할 예제 코드는 Michael Hartl의 RUBY ON RAILS TUTORIAL (RAILS 5)입니다.
8장까지 공부한 코드를 GitHub에 올렸고 그 예제 코드를 다운받아 테스트해 보겠습니다.

cd /vagrant  
git clone https://github.com/jeongdeoksu/sample_app.git  

Imgur Imgur

Gemfile 중 postgresql을 사용하지 않을 것이므로 주석처리합니다.
(참고로 Heroku에 배포하기 위해 pg gem을 사용합니다) Imgur

필요한 Gem을 설치하고 DB를 설정합니다.

bundle install  
rails db:create  
rails db:migrate  

rails server를 실행합니다. tmux에서 rails server를 실행하면 더욱 편리합니다.

rails server -b 0.0.0.0  

Imgur

Windows에서 아래와 같이 접속해 봅니다.
Imgur

그리고 Atom에서 D:\rails\sample_app을 열어서(Add Project Foler 메뉴로 등록) 코딩을 계속합니다. Imgur

Atom Editor에 관한 자세한 사용법은 gomugom님 블로그의 Atom Editor 영업하는 글을 참고하세요. Atom에 관한 좋은 글입니다.

몇가지 설정하면 편리한 것들

Babun 홈의 .zshrc에 아래의 코드를 추가하여 /cygdrive/d/rails로의 이동을 편리하게 합니다.

vi .zshrc

# 아래 내용 추가
export RAILS_PATH="/cygdrive/d/rails"  
alias rails="cd ${RAILS_PATH}"  

이제 rails만 입력하면 /cygdrive/d/rails로 이동한다. Imgur

Vagant로 실행시킨 Ubuntu의 .profile에 아래 코드 추가합니다.

vi .profile

# 아래 내용 추가 
export SAMPLE_APP_PATH="/vagrant/sample_app"  
alias samapp="cd ${SAMPLE_APP_PATH}"  

samapp 을 입력하여 /vagrant/sample_app 디렉토리로 이동합니다. Imgur

마무리

Windows가 부팅되면 Babun을 실행시키고
rails 명령을 입력하여 /cygdrive/d/rails 이동하여 vagrant up으로
Ubuntu 를 실행시킵니다.
vagrant ssh로 접속한 후 samapp으로 이동하여 rails 관련 작업을 합니다.
그리고 Atom을 실행하여 코딩합니다.

뭐 MacOS에 비해 조금은 불편하지만 완전 못쓸 정도는 아닙니다. 나름 제 생각에는 쾌적하다고 생각합니다. 물론 이 모든 것이 Babun이 있어서가 아닐까요?

복기하면서 쓰다 보니 조금 정신없는 글이 되었네요. 물론 Rails 개발 환경 설치도 Chef로 자동화 할 수 있는 방법이 GoRails에 있지만 생각보다 잘 안되어서 시간 날때 다시 한번 해봐야곘습니다.
Rails + Vagrant + Chef 참조

Martin

Read more posts by this author.