Vagrantを使ったWindowsでの自分用開発環境の作成(CentOS)
Categories: TECHNOLOGY
ずっと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とかの設定はしていません。
必要な人は正しく設定してあげてください。
ダウンロード
まず、下記をファイルをダウンロードしインストールを行います。
- VirtualBox
- https://www.virtualbox.org/wiki/Downloads
- Vagrant
- https://www.vagrantup.com/downloads.html
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 wgethttps://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
$ 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ブラウザで確認できました。 長かった。