Vagrantを使ったWindowsでの自分用開発環境の作成(CentOS)

ずっとMACで作業だったんですが、昨日からwindowsでrails書いていたらいたるところで苦しくなってしまい
本番がlinuxなのでlinux環境を手軽に作ってみることにしました。お金をかけずに。

苦しかったことの例

  • バックスラッシュ
  • railsの標準っぽいgemがちょいちょいハマる。

簡単にまとめると

簡単にまとめるとこの記事は

  • vagrantとvirtualboxを使って
  • 仮想環境のCentOS7の環境でrails appを動かしてみて
  • windows pcのブラウザで確認したよ

という個人的なまとめです。

環境

下記の環境で作業しました。

  • windows 7 64bit
  • コンソールにcygwin適用済み
  • virtual box 5.0.0(4.3.20)
  • vagrant 1.7.4
  • 仮想環境
  • CentOS 7
  • ruby 2.2.2
  • rails 4.2.3

一応今回はrailsを動かすことを前提に作ってまして、
開発用で取り急ぎなのでfirewalldとかの設定はしていません。
必要な人は正しく設定してあげてください。

ダウンロード

まず、下記をファイルをダウンロードしインストールを行います。

vagrant 実行

windowsの適当な場所で下記を実行

$ mkdir develobment
$ cd development
# 今回はchefのcentos7を使用
$ vagrant init chef/centos-7.0
vagrantfileの編集
Vagrantfileを編集します。コメントをはずしたり、ちょっと追記したり。
一応win-cent間でデータをシンクロさせておく用に設定しました。
rsyncが入っていないため"nfs"で設定しました(typeのところは'virtualbox'だとうまくいかなかったのもあり)。
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "data", "/vagrant_data", create: true, type: 'nfs'
vagrantfileの書き換えが終わったら下記コマンドを実行。
$ vagrant up --provider virtualbox
これで特にエラーが起こらなければ起動します。
その後下記コマンドでログインできます。
$ vagrant ssh
sshd関係の設定
  • /etc/group のwheelに自身を追加
  • /etc/ssh/sshd_configで下記を設定
下記のものコメントアウトを外す
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
パスワード認証を無くす
PasswordAuthentication no
epelのrepoが使えるようにセット
$ sudo yum install epel-release
puppetのインストール
環境をぶっ壊してもすぐ戻せるように入れておきます。
manifestは割愛します。
$ sudo yum install puppet
git インストール
$ sudo yum install git
強い方のvimのインストール
$ sudo yum install vim-enhanced
ruby最新版(2.2.2)のインストール
rubyのbuildです。特筆すべきことは特にありません。
# 依存関係
$ sudo yum install zlib zlib-devel openssl opens sl-devel gcc-c++ glibc-headers gdbm-devel libcurl-devel libffi-devel libidn-devel libyaml libyaml-devel ncurses-devel readline readline-devel sqlite-devel postgresql-contrib postgresql-devel uuid libxslt-devel libxml2-devel
# バイナリゲット
$ cd /usr/local/src
$ sudo wget https://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
$ sudo tar zxvf ruby-2.2.2.tar.gz
# インストール
$ sudo ./configure --prefix=/usr/local/rubys/2.2.2 # prefixは個人的な設定です。
$ sudo make
$ sudo make install
# フルパス書かないためのシンボリックリンク ※個人仕様
$ sudo ln -s /usr/local/rubys/current/2.2.2 ~/bin
アプリケーションの起動
すでに作りかけのrails アプリケーションがあったので
任意のディレクトリで準備します。
# clone <repo>
$ gem install bundller --no-ri --no-rdoc
# nokogiriでエラーが出ていたので
$ ~/bin/bundle config build.nokogiri --use-system-libraries
$ ~/bin/bundle install
$ ~/bin/rake db:migrate
$ ~/bin/rails s -b 0.0.0.0 # -bオプションが私の環境では必要だった
アプリは問題なく動くが、接続できない。
調べたら以下の手順を踏む必要があった。
仮想環境とPCのportをつなぐ
vagrantfileに以下の記述をするとうまくい事のこと。
boxにファイヤーウォールが設定されている場合は仮想環境のそちらも設定してください。
# Vagrantfile
config.vm.network :forwarded_port, guest: 3000, host: 3000
# windowsからの $ vagrant reloadでエラーがでたため、エラーメッセージの通り対処
# 仮想環境
$ sudo yum install kernel-devel-3.10.0-229.11.1.el7.x86_64
$ sudo /etc/init.d/vboxadd setup
一応上記で仮想環境で動かしたアプリケーションを、windows pcのWEBブラウザで確認できました。
長かった。