淺談 vagrant

今天來聊聊一個對開發網頁很有用的工具 Vagrant。

logo_vagrant-81478652

有做網頁開發的朋友都應該知道,做一個網站並不是只懂一個語言就可以,一個完整的網站需要 back-end 和 front-end 的支持,做 back-end 選擇一向很多,你可以用 java, ruby, python, c#, php….,前端一般是指 javaScript, hmtl, css。不過近年來很流行 single page application,前端的比重也越來越大,一些選擇也跟著出來,像是coffee script, 或是 facebook 最新新出的 React。除了語言的選擇以外,不同的語言也需要對應不同的 server, 像是php可能就會選用apache, java可能用jBoss之類的。

前面說了拉拉渣渣一大堆,其實我只想指出一點,就是開發環境很難設定,舉個例子來說,假如我現在在一個10人的開發團隊裡面,有人寫前端,有人寫後端,有人都寫,理想狀態是每個人的電腦開發環境都一樣,所以大家的電腦跑出來的結果也都一樣,但是現實上,這是很難做到的事,或許大家一開始的開發環境都一樣,但是可能寫後端的人對server 做一些修正,讓他的code 可以跑得更順,但是沒跟其他九個人說,結果就導致只有程式只在他的電腦上跑得順,還有另一種情況是,有新的版本的library出來,有人更新快,有人更新慢,常常導致整個團隊在協調這種事上要花很多時間。

另一種很常見的狀況就是,寫前端的常常要跟不同的後端接軌,然後需要的 server也不同,然後導致電腦上可能裝四五個server,除了讓電腦變慢以外,光是設定這些server 就常常要花很長的時間。還有一種情況就是, server 大部分都是放在 linux OS裡,但是大部分人最常拿到的電腦卻是Windows OS,雖然很多應用程式都有出兩個版本,但是實際使用上,卻常常出現不一致,或是很慢(架如有人用過grunt 或是 broccoli就知道我在說什麼)

這時,vagrant 就出現了,說穿了 vagrant 就是一個很簡單的 helper tool,建構在虛擬機器上。就拿上面說的例子來講,我在一個10人的團隊裡面,這次我不把環境直接裝在每個人的電腦裡,反之,我先裝虛擬機器的工具 (像是virtual box),然後再把 已經設定好環境的虛擬機器裝在每個人的電腦裡,這樣的好處是什麼?這樣可以確保每個人的環境都是一樣的,萬一需要修正(像是有新的版本出現),我只需要更新 virtual image,然後每個人就重新裝新的虛擬機器,這樣大家的環境又是一樣的。

大家有沒有發現,做到以上事情,其實我們只要virtualbox,那vagrant 做了什麼呢?讓我來說明吧

1. vagrant 簡化了整個virtualization的方法,只要3 個 commands,你就可以完成安裝或是更新虛擬機器,而且確保大家都是一樣的設定,不會有人給了 2gb ram ,有人給 4gb ram。

2. vagrant 會同步你的code 到虛擬機器上,所以你的 code還是在你自己的電腦上,只是每次當你 save時,你的 code 會被同步到虛擬機器上面,然後你可以執行所有的 compile / build process在虛擬機器上,這樣有兩個好處,第一,你並不需要因為用了vagrant 就改變你寫code的習慣,你還是可以用你喜歡的 text editor來寫code,第二,虛擬機器只負責執行,並不儲存真正的code,萬一需要更新時,vagrant 可以直接刪除虛擬機器,而不會失去結果。

3. vagrant會跑一些pre script (像是shell script ) 在虛擬機啟動時,這樣的好處是,萬一有不同的需要在不同的情況,你可以暫時的改變環境達到你的目地。

說真的,vagrant 還有很多好用的功能,在這裡就不一一介紹了,有興趣的話,可以去

http://www.vagrantup.com 看看

 

 

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!