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

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