前言
做web開發(fā)少不了要在本地搭建好開發(fā)環(huán)境,雖然說目前各種腳本都有對應的windows版,甚至是一鍵安裝包,但很多時候和Windows環(huán)境的相性并不是那么好,各麻煩的問題是實際部署的環(huán)境通常是linux,常常還要面臨著開發(fā)和部署環(huán)境不一致,上線前還要大量的調(diào)試。更要命的是,如果有很多機器需要裝的話,那就真是一個災難了。
什么是vagrant?

Windows下玩Linux少不了虛擬機,但裝系統(tǒng)依舊是相當費事。在現(xiàn)在什么都在自動化的今天,Vagrant就是這么一個神器,基于ruby開發(fā),使用開源 VirtualBox 作為虛擬化支持,可以輕松的跨平臺部署。
我們可以通過 Vagrant 封裝一個 Linux 的開發(fā)環(huán)境,分發(fā)給團隊成員。成員可以在自己喜歡的桌面系統(tǒng)(Mac/Windows/Linux)上開發(fā)程序,代碼卻能統(tǒng)一在封裝好的環(huán)境里運行,非常霸氣。
Vagrant能做什么?
盡可能避免”Work on my machine“錯誤
在Vagrant沒有出現(xiàn)之前,在服務器端進行開發(fā)的人們通常都擁有一個專用的開發(fā)帳號。使用這個帳號,開發(fā)者可以在一定限度內(nèi)配置自己的開發(fā)環(huán)境、完成編碼、進行測試并完成向開發(fā)團隊代碼庫的代碼推送。于是,在團隊合作開發(fā)的過程中,一個問題出現(xiàn)了:當A進行了一次新的代碼推送之后,原本可以通過的代碼持續(xù)集成測試無法通過了。通過代碼檢查,發(fā)現(xiàn)A的代碼出現(xiàn)了異常。而A在自己的開發(fā)環(huán)境中的測試是可以通過的。這類錯誤被Vagrant稱作為“Work on my machine”錯誤。這類錯誤要定位解決通常耗時很久。在一個可以進行面對面開發(fā)的團隊中,問題的定位由于溝通手段的豐富相對較快。如果是分散在不同地方的人在合作開發(fā),那么要解決此類錯誤,就沒有那么簡單了。
借助Vagrant,每一個開發(fā)者都可以得到一份服務器運行環(huán)境的虛擬機,可以以虛擬機的方式運行一個微型的”生產(chǎn)環(huán)境“。這樣,在提交代碼之前,開發(fā)這就可以在虛擬機上完成”生產(chǎn)環(huán)境“的驗證。自然可以解決上面的問題了。
縮短搭建開發(fā)環(huán)境的時間
搭建一個開發(fā)環(huán)境,需要完成操作系統(tǒng)的安裝,必要的開發(fā)支撐軟件的安裝,配置操作系統(tǒng)和代碼運行環(huán)境。如果所有的操作都需要由人來手動操作的話,一個下午的時間是必要的。搭建開發(fā)環(huán)境是團隊中新人加入時的必不可少的第一課。而團隊的老人們,無可避免的會接到無數(shù)的“新手”的發(fā)問。更不用說,當著名的Wxdows系統(tǒng)需要重新安裝系統(tǒng)的時候,無論誰,基本上一天的工作時間算是交代了,更不用說各類開發(fā)軟件的配置如果會影響代碼執(zhí)行結(jié)果的時候會引入什么樣的“災難”了。使用Vagrant實現(xiàn)開發(fā)環(huán)境的快速搭建成為提升效率的顯著功能特性之一。
Vagrant提供了統(tǒng)一的安裝程序配置環(huán)境: – 使用統(tǒng)一的配置文件( vagrantfile)實現(xiàn)對服務器的統(tǒng)一配置。 – 使用共享文件夾( shared folder )實現(xiàn)代碼編輯向“服務器”的快速提交 – 使用軟件配置腳本( Provisioning scripts )實現(xiàn)服務器上的運行環(huán)境的快速建立 – 擁有標準化的虛擬機分享網(wǎng)絡(luò),極大緩解了分享開發(fā)環(huán)境配置時的網(wǎng)絡(luò)帶寬壓力 – 可以具備一個供安裝維護測試使用的可拋棄的服務器端環(huán)境。
Vagrant的主要使用者
在服務器端進行開發(fā)的人員:Vagrant管理的虛擬機鏡像提供了統(tǒng)一的生產(chǎn)運行環(huán)境。開發(fā)者可以隨心所欲的決定什么時候想“服務器”端發(fā)布程序,什么時候在“服務器”端進行必要的測試,而絲毫不用擔心會影響生產(chǎn)環(huán)境服務器的穩(wěn)定運行。
各類設(shè)計人員:使用Vagrant,可以讓設(shè)計人員可以隨心所欲的選擇自己的開發(fā)用操作系統(tǒng)、設(shè)計軟件、編輯ide軟件,可以通過與虛擬機之間的共享目錄,快速實現(xiàn)設(shè)計文件在生產(chǎn)環(huán)境中的測試驗證。
系統(tǒng)維護人員:使用Vagrant,可以隨意進行對系統(tǒng)安裝設(shè)置的過程進行演練,驗證工程安裝手冊的完備程度。也可以對系統(tǒng)維護中的各項操作指令隨意進行實驗。這對于提升售后服務團隊的問題快速解決能力,獲得實戰(zhàn)經(jīng)驗的非常重要的手段。