更多文章,歡迎大家關注的我的個人部落格網站:fangd123
此文首發於個人部落格:Vagrant打造跨平臺零配置Web開發環境問題和解決方案彙總
我使用的Vagrant配置映象:
https://github.com/scotch-io/...
對應的box檔案連結:
https://drive.scotch.io/scotc...
vagrant本地載入box:vagrant box add ... ...
vituralbox 4.3.12版本連結:
http://download.virtualbox.or...
win10 hostonly問題補丁連結:
https://www.virtualbox.org/at...
安裝緣起
實驗室有一臺win10主機,自用MBP,平時本來不怎麼做web開發的(我的研究方向和這個關係不大),但上課科目中有一門要用到web開發,為了儘可能不對當前的桌面環境配置產生影響,同時能夠正常完成老師佈置的作業,於是嘗試使用vagrant。
還有一點,我想在Win、OSX平臺下獲得一致的開發體驗,不需要我在每個平臺都重新配置一遍,這個剛好vagrant也可以滿足。
Windows 10下安裝Vagrant
Vagrant需要本機上裝有Virtualbox和Git,不過Vagrant安裝包裡邊自帶了這兩個軟體,我本以為這樣直接就可以了,沒想到,這裡有一個坑。
Virtualbox相容性問題
Virtualbox for win存在版本相容性問題,試了很多次虛擬機器都啟動不起來,各種出錯,谷歌之,說版本降級可解決,經過一番比較,Virtualbox 4.3.12版無相容性問題,下載連結見文首。
hostonly問題
配置Vagrant的時候,為了讓虛擬機器能夠和宿主機通訊,一般採用的是hostonly的網路設定,但是這樣配置之後,虛擬機器啟動失敗,錯誤提示:
VBoxManage.exe: error: Failed to create the host-only adapter
谷歌之,在官方論壇上找到了對應問題的ticket,這個問題可能依舊是Win10不相容導致的,不過幸運的是有補丁,打上補丁就搞定了,連結在這裡:
https://www.virtualbox.org/at...
下次在開啟虛擬機器之前,首先以管理員模式開啟這個補丁就行了。
OSX 10.11下安裝Vagrant
OSX 10.11下安裝Vagrant一切正常,並未發生問題。
Vagrant的box映象選擇
要求
畢竟web開發,box映象中,PHP、Node、Mysql等等必備的東西一個都不能少,最好是都配置完好的,能夠直接使用
方案一✗基於puppet指令碼的Vagrant配置映象
使用puppet,就可以讓系統自己安裝預先設定好的軟體,想來也是不錯的,在Github上搜尋到了一個star比較多的專案
https://github.com/dirkaholic...
按照上邊的步驟操作,出現的錯誤,我谷歌之亦未尋得答案,只好作罷。
看到錯誤提示,應該是puppet指令碼出現問題了,返回了錯誤的值,又想到我的Ubuntu雙系統中apt-get update
語句執行之後便是漫長地等待,覺得使用puppet安裝這些軟體可能不是一個適合我的選擇
方案二✗PuPHPet
這其實也是一個基於puppet的一個vagrant配置映象,原理和方案一差不多,不同之處在於方案二擁有一個GUI介面來配置每一個細節,給了使用者更多的定製性,當然,對於剛剛接觸web開發的同學或者僅僅需要最基本功能的同學來說,這倒成了一種負擔。
方案三✔︎基於已配置好的打包box的Vagrant配置映象
Github上另外一個專案引起了我的注意:
https://github.com/scotch-io/...
根據首頁上的介紹,不需要聯網配置,不使用puppet這類運維工具配置,即裝即用,幾乎完全滿足了我的需求。
按照步驟配置下來,終於在折騰了一下午之後成功啟動虛擬機器
剩下的按照首頁上的介紹直接使用就好了,這裡不再多述。
Vagrant映象安裝技巧:box映象檔案快速下載
box映象檔案動輒五六百MB,如果用Vagrant預設的下載方式,真的不知道下到啥時候,這裡介紹一個『快一點』的下載方式:
-
首先按照正常步驟,輸入
vagrant up
之後會有一句指示當前下載box檔案的url,例如==> default: Adding box 'hashicorp/precise32' (v1.0.0) for provider: virtualbox default: Downloading: https://atlas.hashicorp.com/hashicorp/boxes/precise32/versions/1.0.0/providers/virtualbox.box
-
此時我們
ctrl+c
強制停止當前程式,將url拷貝到迅雷或者別的下載工具中進行下載,下載完成後進入下載目錄,開啟命令列,輸入(其中hashicorp/precise32
為配置檔案為box映象起的名字)vagrant box add hashicorp/precise32
- Vagrant會自動對box映象進行處理,此時我們再回到之前的Vagrant配置目錄中,
vagrant up
啟動,過不了一會兒就安裝好了。
額外配置:修改預設的public同步資料夾至其他資料夾
開啟Vagrantfile,找到
config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=666"]
修改"."
為自己的目錄,然後vagrant up
開啟虛擬機器,進入ect/apache2
目錄,配置vituralhost的directory,從public
改為自定目錄即可
總結
- puppet一件利器,但是還是需要看使用場景,至少在我這個場景下我覺得直接全部打包更方便快捷。
- 在國內的網路環境,能夠離線安裝就離線安裝,線上的方式費時費力還不一定成功
- 下次有時間再試試Docker,看看有沒有這麼多坑。