Vagrant打造跨平臺零配置Web開發環境問題和解決方案匯總

jopen 9年前發布 | 12K 次閱讀 Vagrant
 

我使用的Vagrant配置鏡像:

https://github.com/scotch-io/scotch-box

vagrant本地加載box:vagrant box add ... ...

安裝緣起

實驗室有一臺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/attachment/ticket/14040/VBox-Win10-fix-14040.exe

下次在開啟虛擬機之前,首先以管理員模式打開這個補丁就行了。

OSX 10.11下安裝Vagrant

OSX 10.11下安裝Vagrant一切正常,并未發生問題。

Vagrant的box鏡像選擇

要求

畢竟web開發,box鏡像中,PHP、Node、Mysql等等必備的東西一個都不能少,最好是都配置完好的,能夠直接使用

方案一?基于puppet腳本的Vagrant配置鏡像

使用puppet,就可以讓系統自己安裝預先設定好的軟件,想來也是不錯的,在Github上搜尋到了一個star比較多的項目

按照上邊的步驟操作,出現的錯誤,我谷歌之亦未尋得答案,只好作罷。

看到錯誤提示,應該是puppet腳本出現問題了,返回了錯誤的值,又想到我的Ubuntu雙系統中apt-get update語句執行之后便是漫長地等待,覺得使用puppet安裝這些軟件可能不是一個適合我的選擇

方案二? PuPHPet

這其實也是一個基于puppet的一個vagrant配置鏡像,原理和方案一差不多,不同之處在于方案二擁有一個GUI界面來配置每一個細節,給了用戶更多的定制性,當然,對于剛剛接觸web開發的同學或者僅僅需要最基本功能的同學來說,這倒成了一種負擔。

方案三??基于已配置好的打包box的Vagrant配置鏡像

Github上另外一個項目引起了我的注意:

根據 首頁 上的介紹,不需要聯網配置,不使用puppet這類運維工具配置,即裝即用,幾乎完全滿足了我的需求。

按照步驟配置下來,終于在折騰了一下午之后成功啟動虛擬機

剩下的按照 首頁 上的介紹直接使用就好了,這里不再多述。

Vagrant鏡像安裝技巧:box鏡像文件快速下載

box鏡像文件動輒五六百MB,如果用Vagrant默認的下載方式,真的不知道下到啥時候,這里介紹一個『快一點』的下載方式:

  1. 首先按照正常步驟,輸入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

  2. 此時我們ctrl+c強制停止當前進程,將url拷貝到迅雷或者別的下載工具中進行下載,下載完成后進入下載目錄,打開命令行,輸入( 其中hashicorp/precise32為配置文件為box鏡像起的名字

    vagrant box add hashicorp/precise32
  3. 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改為自定目錄即可

總結

  1. puppet一件利器,但是還是需要看使用場景,至少在我這個場景下我覺得直接全部打包更方便快捷。

  2. 在國內的網絡環境,能夠離線安裝就離線安裝,在線的方式費時費力還不一定成功

  3. 下次有時間再試試Docker,看看有沒有這么多坑。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!