自分が Vagrantで LAMP環境を作る理由


vagrant-lamp01

Vagrantを使った環境構築を自分はよく使うけど、意外とVagrantを知らない人がまだ結構いますね。同プロジェクトの同僚や後輩に毎回説明するのも面倒なので説明用に少しだけ詳しくまとめてみました。

Vagrantの説明の前に仮想マシンについて

以前は、LAMP環境と言えばXAMPP使ってました。小規模サイトではレンタルサーバなど本番環境を含めApache、PHP、MySQL黄金時代みたいな感じで、とりあえずXAMPP環境あればなんとか開発できたんです。

でも今は、Apacheの代わりにNginxなど、PHPの代わりにRubyやPythonなど、そしてMySQLの代わりにMariaDBやPostgreSQLなど選択肢が多くなりました。また本番環境もクラウドにより簡単に好きな環境が構築できるようになりました。

LAMPのプロジェクトだけXAMPP使えばいいじゃないかって感じますが、プロジェクトが多くなるとバージョンも違うし、それにWindosやMacのホストOSの環境がカオスになるのが結構嫌!なによりPC新しくしたときにまた同じ環境作るのがまた大変!

そこで、各プロジェクトの環境を別々に管理し意外とコピーしやすい仮想マシンってことに。プロジェクトごとに専用の開発PC作っちゃえばごちゃごちゃしないじゃないかってことなのですが、それをソフトで仮想的に作っちゃいます。レンタルサーバみたいに外に別のマシンがあるか、自分のPCの中にソフトで作ったマシンがあるかの違いですね。同じようにアクセスできます。

ちょっとスペックが必要になりますが、開発環境がカオスにならないし、WindowsやMacなどで本番に近いLinux環境なども作れちゃったり、何よりコピーもできるので他の人に開発環境を渡しやすい。他にもビルドツールが使いやすいなどいろいろメリットはいっぱいあります。

vagrant-lamp02

Vagrantって

仮想マシンって新しい技術じゃないんですね。自分がよく使う仮想マシンソフト VirtualBox は2007年頃からあるようですし。でも、仮想マシンって簡単に言えば新しいPCがもらえるみたいなもんで、結局自分で新しいPCに環境を作ることになるし結構面倒だったんです。Linux環境作ろうと思えばかなりサーバの知識必要ですし。また、ソフトの設定(ネットワークや共有フォルダ)なども結構面倒。なのでVagrantが出るまではほとんど使いませんでした。

Vagrantに出会ってからは仮想マシンを使うことが劇的に増えました。なぜなら、Vagrantって上記のような面倒な作業をほぼ自動的にやってくれるんです。Vagrantは、仮想マシン環境を管理するソフトです。なのでVirtualBoxの設定(ネットワークや共有フォルダ)なども競合など起こさないように調整しながら自動的に設定してくれます。

vagrant-lamp03

でも、結局環境は自分で作らないといけないんでしょう?って思うかもしれませんが、もちろん自分でゼロから作ってもいいです。自分はしてませんけどw Vagrantにはプロビジョニングという機能があります。いわゆる開発環境をどのように作るかの設計図(ShellやChefなど)をみて自動的に環境作ります。だからLAMP環境作りたければLAMPの設計図を手に入れればいいし、Railsの設計図があればRails環境が作れます。設計図って簡単に手に入るの?ってことですが、今の情報共有の時代 GitHubとかに普通にあります。ただ、信頼できるところかは慎重にしてください。

新しいマシンにゼロからだとOSからインストールしてすごく時間かかるんじゃないの?って感じるかもしれませんが、Vagrantはある程度環境が出来上がった状態をBoxという形で管理できます。なのでBoxでベースを作ってしまって差分をプロビジョニングファイルってのが一般的かなと思ってます。例としてWordPressのVagrant環境の「VCCW」があるんですが、これもVagrant設定ファイルにBoxの読み込みとプロビジョニングファイルの実行があります。WordPressでサイト構築されている方は個人的にお勧めです。

Vagrantbox.es というサイトがあるのですが、有志の方が作ったBoxファイルのリストがあります。ここも自己責任なのですが信頼はあるかなとは思ってます。自分はここのBoxをよく利用します。
vagrant-lamp04

開発環境のバージョン管理

Vagrantが管理するファイルって仮想マシンソフトをどのように管理するかや、どのように環境をつくるかの設計図だけなのですごくファイル自体は軽いです。また、設計図が管理できるってことはプロジェクトで新しいモジュールの追加など環境変化が管理しやすくなります。

VagrantのファイルをGitなどでバージョン管理してしまえば、チームメンバーはプロビジョニングファイルの更新があれば自分の環境にも反映させるだけで同じ環境が作れます。Vagrantはプロビジョニングファイルの更新の反映だけもできるので便利です。GitHubなどで提供されているVagrantファイルもどんどん更新されているのですが、新バージョンが出たときに開発環境を作り直さなくてもプロビジョニングファイルで差分だけでバージョンアップできたりします。

vagrant-lamp05

開発環境の使い捨て

最後に、自分が一番よく使うメリットです。開発環境の使い捨てです。Vagrantってソフトで作った仮のマシンなのでいらなくなったら簡単に削除(捨てる)できるんです。ってことは新しい技術の検証に使ったり、本番環境へのリハーサル環境に使ったりなど一時的な環境で使っても構わないわけです。あと、設計図さえあれば再構築も楽にできますし。あとはテスト環境欲しいって言われたときも、専用だからどんどん変なデータ入れてもいいよ!みたいなこともしやすいです。使い捨てっていいですね!

ということでVagrantを使う理由まとめてみました。あくまでも個人的な意見ですw


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です