Note

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](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ブラウザで確認できました。 長かった。