讓 VAGRANT 啟動並執行起來

2022-06-23 06:36:28 字數 2962 閱讀 6050

vagrant是構建在虛擬化技術之上的虛擬機器執行環境管理工具。通過vagrant可以方便實現的對虛擬機器的管理,包括建立和刪除虛擬機器、配置虛擬機器執行引數、管理虛擬機器執行狀態、自動化配置和安裝開發環境必須的各類軟體、打包和分發虛擬機器執行環境等。

vagrant的執行,需要依賴某項具體的虛擬化技術。由於virtualbox是一項開源的虛擬化軟體,可以同時在windows、linux、macintosh、ssolaris等作業系統上執行並支援眾多對眾多作業系統的虛擬化,因此,在vagrant開發的初期,唯一支援的是virtualbox。隨著虛擬化技術的快速發展,現在已經有了更多的虛擬化技術可供選擇。vmware、hyperv、docker等都已經可以通過vagrant的管理而工作。windows的hyperv技術在部分windows發行版本中的整合,使得vagrant在「開盒即用」的特性方面前進了一大步。

因此,vagrant是虛擬機器管理工具,不是某項具體的虛擬化技術。對於各項虛擬化技術而言,vagrant提供了一套基於配置檔案和命令列的管理工具。也正是因為如此,vagrant完成了對虛擬化技術在一定程度上的封裝。這為將虛擬化技術引入到基於桌面執行環境的開發工作流中創造了便利條件。

在vagrant沒有出現之前,在伺服器端進行開發的人們通常都擁有乙個專用的開發帳號。使用這個帳號,開發者可以在一定限度內配置自己的開發環境、完成編碼、進行測試並完成向開發團隊**庫的**推送。於是,在團隊合作開發的過程中,乙個問題出現了:當a進行了一次新的**推送之後,原本可以通過的**持續整合測試無法通過了。通過**檢查,發現a的**出現了異常。而a在自己的開發環境中的測試是可以通過的。這類錯誤被vagrant稱作為「work on my machine」錯誤。這類錯誤要定位解決通常耗時很久。在乙個可以進行面對面開發的團隊中,問題的定位由於溝通手段的豐富相對較快。如果是分散在不同地方的人在合作開發,那麼要解決此類錯誤,就沒有那麼簡單了。

小張在自己的機器上辛苦的完成了一項功能開發,通過了本機上的各項測試,高高興興的向團隊**庫提交的自己的工作成果。心想終於可以放鬆一下了。「是不是可以買乙隻機械鍵盤犒勞一下?晚上和夥伴們出去聚會吧!嘿嘿。」小a心裡美滋滋的想。

「小張,你來一下,**有問題」。臨近下班的時候,小a接到qa小組的乙個**。「怎麼回事?」小張一頭霧水的走進了qa小組的辦公區。

「你今天下午提交的**,無法通過測試。你自己做了測試了嗎?」,老王是qa小組測試負責人,他面色凝重的問小張,「咱們就要發布乙個新的**版本了。這個時候你的**出問題,可能會影響**發布的。要不你趕緊看看?明天上午能修復嗎。我們的測試報告和測試規範在這裡」。

「明明沒有問題的呀」,出了qa的辦公區,小張仍然迷惑不解。「在我的機器上明明是可以執行的。而且為了晚上的聚會,測試規範中定義的各項測試也是提前跑過的呀。看來今天晚上的聚會要取消了。「小張無奈的拿出**,打算給好友們打**,通知自己無法參加晚上的聚會了。

好吧,借助vagrant,每乙個開發者都可以得到乙份伺服器執行環境的虛擬機器,可以以虛擬機器的方式執行乙個微型的」生產環境「。這樣,在提交**之前,開發這就可以在虛擬機器上完成」生產環境「的驗證。自然可以解決上面的問題了。

搭建乙個開發環境,需要完成作業系統的安裝,必要的開發支撐軟體的安裝,配置作業系統和**執行環境。如果所有的操作都需要由人來手動操作的話,乙個下午的時間是必要的。搭建開發環境是團隊中新人加入時的必不可少的第一課。而團隊的老人們,無可避免的會接到無數的「新手」的發問。更不用說,當著名的wxdows系統需要重新安裝系統的時候,無論誰,基本上一天的工作時間算是交代了,更不用說各類開發軟體的配置如果會影響**執行結果的時候會引入什麼樣的「災難」了。使用vagrant實現開發環境的快速搭建成為提公升效率的顯著功能特性之一。

vagrant提供了統一的安裝程式配置環境:

小李是進入開發團隊的新人。從學校畢業出來,小李就到了乙個公司從事伺服器端的軟體開發工作。由於興趣愛好的原因,他新近加入了這個網遊開發團隊。他接到的第乙個命令就是「搭建乙個伺服器工作日誌分析系統,為伺服器**優化改進做準備」。

小李從團隊專案經理那裡得到了伺服器環境安裝手冊以及伺服器日誌資料庫設計文件。小李需要在自己的機器上用虛擬機器安裝一套伺服器環境,用以進行日誌資料的分析和提取。

「好吧,估計這幾天的時間要搭到系統安裝裡去了。」小李做好了心理準備,開啟了伺服器環境安裝手冊。意外的,手冊很簡單:

執行git clone [email protected]:vagrantconfig.git獲取vagrant配置檔案

進入vagrantconfig目錄,執行vagrant up

執行vagrant ssh驗證安裝

……「這就完了?」半個小時後,小李目瞪口呆的看著自己機器上執行的虛擬機器,一套伺服器日誌系統已經載入完成了。小李已經可以著手進行資料的分析並開始做具體編碼設計了。

如果還在為「work on my machine」錯誤頭疼,如果安裝開發環境還是團隊心頭的痛,那為什麼不試試用用vagrant呢?

對於需要在伺服器端進行開發的人,vagrant管理的虛擬機器映象提供了統一的生產執行環境。開發者可以隨心所欲的決定什麼時候想「伺服器」端發布程式,什麼時候在「伺服器」端進行必要的測試,而絲毫不用擔心會影響生產環境伺服器的穩定執行。

對於各類設計人員,使用vagrant,可以讓設計人員可以隨心所欲的選擇自己的開發用作業系統、設計軟體、編輯ide軟體,可以通過與虛擬機器之間的共享目錄,快速實現設計檔案在生產環境中的測試驗證。

對於系統維護人員,使用vagrant,可以隨意進行對系統安裝設定的過程進行演練,驗證工程安裝手冊的完備程度。也可以對系統維護中的各項操作指令隨意進行實驗。這對於提公升售後服務團隊的問題快速解決能力,獲得實戰經驗的非常重要的手段。

開源的開發者常常無法像乙個普通團隊那樣面對面的坐在一起進行開發工作。由於開發團隊是一種鬆散的組織模式,因此,也不是每乙個開發者都可以獲得在伺服器端上的開發授權。此時vagrant就提供給這些開發者必要的**執行環境,極大程度的提公升了開源開發者向開發中心小組提交**的質量。此外,vagrant的虛擬機器分享模式,也使得開源開發者獲得統一的伺服器執行環境的成本變得異乎尋常的低廉。

讓Tiny伺服器執行起來

之前寫了 深入理解計算機系統 一書中的tiny伺服器的原始碼解析,但是書中並沒有介紹如何執行tiny,下面就介紹下怎麼讓tiny執行起來。tiny的原始檔有tiny.c csapp.c和csapp.h三個。另外要在根目錄下新建cgi bin目錄用於存放cgi程式。1.將所有原始檔tiny.c csa...

讓innerHTML的js指令碼執行起來 總結

網上蒐集的一些方法 1 ie中插入的html裡,前面有其他物件,並且script 設定了 defer var fillhtml function el,htmlstring else 2 用iframe把document.write 裝載起來 var jscode 需要執行的js var jsifr...

如何啟動並等待 Task 執行

task.run裡邊可以搭配async,所有由task.run啟動起來的 task 所組成的陣列允許被whenall等待,呼叫執行緒 如ui執行緒 不會阻塞 listtaskarray new list 3 taskarray.add task.run async taskarray.add tas...