laravel的guide上面有vagrant,但看了半天沒看得太懂。
例如我們平常用虛擬機器(virtualbox),得下載一個作業系統的鏡像來讓virtualbox安裝上並運作。
vagrant建立的又得依賴virtualbox,所以我能理解為vagrant是一個作業系統鏡像的管理工具嗎?
但好像也不對,比如laravel官方給得homestead,才600多M,連一個linux最小化系統也不止600M,而且裡面還包含了mysql php nginx redis memcache等等…
所以想請教下,vagrant到底是個什麼東東,homestead又是個什麼東東
VirtualBox相信很多人都用過,它是一個虛擬化軟體,用來在我們的電腦上虛擬出一電腦來,和VMware Workstation, kvm, xen等是一類東西(專業點的說法叫Hypervisor),不過它提供易用的介面(VMware也有),對各平台的支援(Linux, Win, Mac),又非常的輕量,最關鍵的free呀,所以使用非常廣泛。
我們平常使用VirtualBox最常見的情況就是,自己電腦是個Win,想跑Linux,或者電腦是個Linux,要跑win上網銀啊,QQ什麼的win only之類的,雖然有wine這樣的東東,可以在Linux下跑win下的軟體,但有個win系統穩定性不更好麼,並且現在的電腦配置,完全不用擔心虛擬機消耗內存CPU什麼的,你不用那才是浪費呢,何況VirtualBox這麼輕量。個人體驗,弄個xp虛擬機跑QQ資源消耗比chrome或ff登webQQ少,可惡的用了多少js。 。 。
對天天碼程式碼的苦逼程式設計師來說,VirtualBox就不能是簡簡單單的掛個Q這樣用了->_->
程式設計師搞最多的就是碼程式碼了,可能做很多項目,公司裡搞java的,php的,自己回家再玩個python什麼的,想體驗下新版本的mongodb或者nginx,Emacs或者vim的配置啦,保不準哪個專案前個版本的資料庫是mysql,下個版本用了postgresql, 這麼多東西全都搞在一起,裝在一個電腦上,肯定會被這各種配置環境搞的暈暈的,煩不勝煩。
怎麼辦呢,最好是每個項目都有一個乾淨的開發環境,只為這個項目,可是我們不可能為每個項目配一個電腦吧,有了,虛擬機,給每一個項目配一個虛擬機,開發A的時候就啟A的虛擬機,讓各個開發環境互相獨立,乾乾淨淨。還有一個問題,我們的專案有多個開發人員,如何保障大家的開發環境都一樣呢,總不能每個人都一個個點擊滑鼠,填寫設定參數,建好後上支一個個軟體安裝吧,這太麻煩了,太不geek了。我們要的是,環境只配置一遍,然後可以把這個環境打包deliver給別人,別人拿到後,直接開來就可以用。那有沒有這樣的東西呢,肯定是有的,Vagrant,它就是用來幹這個的。
Vagrant 就是一個命令列版的虛擬機器管理程序,透過整合命令操作 VirtualBox / VMware 等虛擬機器程式來操作作業系統。 Homestead 就是官方整合環境的虛擬作業系統,可以直接在 VirtualBox / VMware 上運作。我不知道你說的一個 Linux 最小化系統是什麼,不過一個 Ubuntu Server 也就 570M,所以 600M 應該是正常的。
vagrant是一個虛擬機器管理軟體。他可以讓你的一台或多台虛擬機器可以迅速的部署以及複製。是提供多環境開發下面一個不錯的選擇,特別是你本身處於win平台下,又想以最小的代價搭建linux虛擬機環境,vagrant是一個不錯的選擇。
Homestead是laravel官方提供的vagrant box。所謂vagrant box其實就是一個由其他人已經配置打包好的linux或其他OS環境。你只需要簡單的幾行程式碼如:
vagrant add box homestead;
vagrant up;
就可以把laravel 官方推薦的os環境部署到虛擬機中,進行使用。