WHAT'S NEW?
Loading...

Windows7でVagrantをつかってサクっと開発環境を作ってみよう

Webアプリケーションの開発をするには開発環境がオフラインでも動かせるとすごく便利だ。

だから今まではWindows上にVirtualBoxをインストールし、そのVirtualBoxで仮想サーバとなるファイルを作成し、その仮想サーバの中にLinuxというOSをインストールする、いわゆる仮想環境上で開発する方法を強く推奨してきたわけだ。

当然俺以外も多くの人がこの環境を使ってWebアプリケーションを構築してるんだ。

ただしMacに搭載されているOS Xだと、元々がBSDというUNIX派生OSがベースになってるので、実は環境がすでに整っている。だからWebアプリケーション開発者でMacユーザってのが最近極端に増えてる。

そして俺もMacBook Air(以後MBA)がほしいなぁ、なんて思ってるので、福沢諭吉でケツを拭くのに飽きた富豪の方は、俺にMBAを買い与えて投資すると寝覚めが良いかもね。

Windowsは当然LinuxでもBSDでもないので、Webアプリケーションを動かすサーバOSとして一般的なLinux環境を作るには、それなりのソフトをつかって仮想的なOSを構築する必要がある。



で、実はこの開発環境の構築だけど、案外時間がかかるわけだ。

例えばLinuxにFedoraを選んだ場合、FedoraプロジェクトのサイトからISOファイルを落としてくるか、TorrentファイルでBitCometなどを使ってダウンロードしなくてはならないのだが、DVD1枚分の容量を落とすのは、数秒では終わらない。場合によっては数十分かかる。
※落としたISOのうち実際に使うのは数百M程度の領域。あんまり効率が良いとはいえない

そして今度はダウンロードしたISOファイルの整合性のテストだ。これにはMD5やSHA1などのアルゴリズムを使ったチェックサム方式で行うのだが、なんとWinodwsにはMD5もSHA1も、全く実装されていない。フリーソフトなどでどうにか対応させないといけない。まぁチェックが面倒くさくてやらない人も多いと思うので、ここはそれほど神経質にならないでもいいとは思うけどね。

その後VirtualBoxで作った仮想サーバにOSであるISOをマウントしてから起動し、今度はOSのインストール作業をする。

OSのインストールが終わったら、今度は各種ネットワークやWebサーバとしてのミドルウェアのダウンロードとインストール、そして設定をするわけだ。

これらは場合によっては数時間かかることになる。
※10年前は半日作業だった

毎回毎回あたらしいバージョンのOSが出るたびに、ほとんど同じようなインストール方法とほとんど同じような設定方法を繰り返すのは馬鹿らしい。そんなことならいっその事、すでに最低限セットアップの終わっているOSを用意しておいて、それをVirtualBoxで動かせばいいじゃないか!

というのがVagrantというテクノロジーだ。もちろんVirtualBoxだけではないが、Windowsをメインとして開発作業する場合、VirtualBoxが割りとわかりやすいし、すでにみなさん使われていると思うので、今回はWindows7(64bit)上でVirtualBoxを使って仮想OSを構築するというのを前提として説明したいと思う。

ちなみにChef(シェフ)というサーバ設定ツールを使うとかなり便利なんだけど、プロビジョニングというVagrantの設定ファイルに記述するとで簡単な設定ができるので、今回はChefなどは特に説明しないよ。そしてプロビジョニングも大した難易度ではないので割愛させてもらうよ。

さて、全体の流れとしてはこんな感じになる。
  1. VirtualBOXインストール
  2. Vagrantインストール
  3. BOXファイルダウンロード
  4. BOXファイル設定
1のVirtualBOXのダウンロード、インストールは事前に済ませておいてほしい。すでにインストールされている人も多いと思うので、割愛するよ。
公開後に知人から指摘があったんだけど、VirtualBOX4.3にはバグがあって、vagrant対応してないみたい。4.2を使うか、更に未来の版を使うと良いかも。過去のバージョンはこちらから!

2のVagrantはここからダウンロードできる。こちらもインストールしておいてほしい。
Vagrantのインストールが終わったら、コマンドプロンプトで以下のコマンドをタイプし、ちゃんとインストールされているのか確認しておこう。
> vagrant -v

Vagrant 1.3.3などとバージョンが表示されれば問題ない。次に進もう。

3のBOXファイルだけど、セットアップ済みのOSという認識でOKだ。このBOXファイルは有志たちの手によっていろいろなOSで構築済みのものがここから確認できるので、お好みのOSのBOXファイルを使うことができる。ちなみにダウンロードはVagrantコマンドで行う。
BOXはVMWareとVirtualBOXの2種類あるので、間違えないようにしよう。使うのはVirtualBOXだ。

今回は『Ubuntu 12.10 Quantal x86_64 (Guest Additions 4.2.2)』のBOXファイルを使おうと思うので、早速Vagrantを使ってみよう。


Vagrant実行

手順としては、
  1. BOXのダウンロード
  2. BOXを使って実際に使うOSを生成
  3. 複製したOSのセットアップ
という流れになる。つまりBOXはOSの元になる存在なんだよね。早速コマンドを叩いてBOXをダウンロードしてみよう。
コマンドは
vagrant box add テンプレート名 URLとなるので、テンプレート名を『Ubuntu-12.10-Quantal-x86_64』として、URLを上記boxesサイトのURLをコピーしておき、それをはりつけるとこうなる。
vagrant box add Ubuntu-12.10-Quantal-x86_64 https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box
このコマンドを実行すると早速BOXファイルのダウンロードが開始される。


大体3分くらいでダウンロードは終わると思うが、お使いのネット環境によってはもっと時間がかかるかもしれない。

さて、ダウンロードはどこにされるのだろうか。Windows7の場合、ホームフォルダに『.vagrant.d』という隠しフォルダが作られ、その中にある『boxes』にダウンロードされる。


俺はすでに2つダウンロードしていたので、今回ので3つ目だ。
このフォルダは隠しフォルダなので、コマンドで確認するのが手っ取り早い。
vagrant box list
で一覧が表示されるよ。



ちなみに削除したい場合は、vagrant box remove <BOX名>でOKだ。

さて、BOXのダウンロードが終わったら、このBOXを使って早速OSを生成しようじゃないか。

VirtualBoxの仮想マシンは、ホームフォルダの『VirtualBox VMs』フォルダに入るので、そこに作ろうと思う。ここにまずBOXがOSとして再現され、その再現されたOSから好きなOSを複製するような流れになるので、VMが2個になる。ここに作られた素のOSを独自OSにコピーする、という認識だ。
まずは実際にVirtualBoxで使う名前でフォルダを作り、その中でVagrantコマンドでOSを作成しようと思う。VM名は『Ubuntu12.10-x86_64』でいいだろう。
> cd VirtualBox VMs
> mkdir Ubuntu12.10-x86_64
> cd Ubuntu12.10-x86_64


次にOSを初期化だ。初期化はvagrant init <BOX名>なので、
> vagrant init Ubuntu-12.10-Quantal-x86_64
となる。そうすると画面にはこんなメッセージが表示され、


Ubuntu12.10-x86_64フォルダ内にはVagrantfileというファイルが作られる。

このvagrantファイルにいろいろLinuxコマンドを買いておくと、セットアップ時に自動で実行してくれるんだ。ここにhttpd、php、mysqlなどのインストールを書いておくのが良いが、今回は割愛しよう。

さて、それでは早速仮想マシンを作ってみよう。
仮想マシンを作るコマンドはvagrant upだけでOK。
> vagrant up
このコマンドでVirtualBOX向けのOS込のVMが作られる。少々時間がかかるが、コマンド1個で済むので相当楽だ。


3分くらいすると『-- /vagrant』と表示され、vagrant upコマンドが完了する。
実はもうこの辞典でVMが起動しているんだ。
試しにVirtualBOXを起動してみよう。


今までは
  1. ISOダウンロード(想定30分)
  2. 仮想サーバ作成(想定15分)
  3. 仮想OSセットアップ(想定15分)
くらいで、1時間位かかってたのを、この15分くらいで完了させる事ができた。素晴らしい。

今後の作業だけど、

起動vagrant up
終了vagrant halt
再起動vagrant reload
状態確認vagrant status
サスペンドvagrant suspend
サスペンド復帰vagrant resume
vagrant up(どちらでもOK)
削除vagrant destroy

このくらい覚えていればOK。
次は、WindowsでこのVMヘクアクセス、共有フォルダの説明をして終わろうと思う。

SSHでアクセス

SSHでアクセスするには、例えばMacのOS Xなどだとそのままコマンドで入れるけど、Windowsの場合はコマンドプロンプトではSSHが使えないのでターミナルソフトが必要になる。
ここではPoderosaなどをつかって、vagrant upで起動したVMへアクセスしてみよう。
アクセス先127.0.0.1
ユーザ名vagrant
パスワードvagrant
ポート番号2222
になる。


複数のVagrantでアクセスする場合、全VMのIPアドレスなどが同じになってしまわないように、Vagrantfile内に記述されている設定を変更しておこう。


ここらへんのコメント『#』を外して設定を独自にするのも手だ。

共有フォルダ

共有フォルダは自動的にVMフォルダ内になるので、この場合
ホームフォルダ\VirtualBOX VMs\Ubuntu12.10-x86_64\
ということになる。

ここにindex.htmlを置けば、ブラウザでhttp://127.0.0.1:8080とすれば表示される(初期状態)という便利さだ。

当然、HTTPDやPHPなどをインストールして置かなければならないが、そこら辺はみなさん慣れてると思うのでここでは割愛するよ。

最後に

この後OSの設定でHTTPDやPHPなどのミドルウェアのインストール、設定などが必要になると思うけど、そこら辺はChefなどの便利なテクノロジーを使うのがオススメだ。

でもその前に、まずはVagrantに慣れてるためにも、vagrant box addで何個ものOSをセットアップし、vagrant init で初期化、vagrant upで起動するような流れで、仮想マシンの構築自体のコストを下げてみようじゃないか。

開発環境の構築が『安い』というのは、開発者にとってすごくフットワークが良くなる素晴らしい話だ。

それに作ったOSをBOXにする方法もあるので、同じプロジェクトの仲間に配布すれば、人が増えたりした時に1時間もかからず同じ環境が揃えるという便利っぷりだ。

それと、こういったVagrantを使ってるとわかると思うけど、できればLinuxやOS Xで開発するのが良いのかもしれない。どうもWindowsは相性が悪い気がする。

個人的にはMBAがほしいんだけど、漢字Talk時代でMacの使用をやめてしまったので、OS Xに馴染みがない。だからノートPCにFedoraでも入れようかなと思う。まぁ人それぞれだけどね。

というわけで終わり。