背景知識
PHP的開發者大部分都是在window下面開發,在開發過程中有時會用到第三方的庫,但是這些庫不支持windows,或者沒有編譯好的文件。例如:Redis的最新版本,在windows下面就沒有編譯好的文件。這時候想用到最新的特性怎么辦?Vagrant就可以解決上面的痛點,團隊成員可以通過相同的Vagrantfile來創建他們的開發環境,無論他們是在Linux, Mac OS X, 或者Windows下,這樣就可以保證你團隊成員的代碼是跑在相同的環境中,從而避免令人煩躁的【在我的機器上是可以的】問題。
環境準備
- BIOS要設置開啟虛擬化(VT),這里不會的可以自行搜索怎么開啟這個選項
- 下載最新的VirtualBox,根據自已的系統選擇合適的版本
- 下載最新的Vagrant 根據自已的系統選擇合適的版本
- 根據安裝提示安裝好上面兩個下載好的軟件
Vagrant配置
添加Vagrant鏡像
Vagrant的鏡像叫做Box,添加Box可以線上添加,也可以自己下載別人做的Box.
這里不推薦添加線上,因為這些服務器在國外,會非常慢。建議去下面兩個網站下載現成Box文件
https://atlas.hashicorp.com/boxes/search
http://www.vagrantbox.es/
下載好Box鏡像文件后,在windows下面打開cmd
,輸入下面的命令
vagrant box add hakaka E:\ubuntu-15.04-amd64.box
vagrant box add
這是vagrant
的常用命令
hakaka
這是命名,你可以隨便取名,這在下面初始化要用到
E:\ubuntu-15.04-amd64.box
這是你box的路徑
執行完后,會有提示。初始化環境
這里針對下PHP開發環境特說明下,其它開發者對號入座吧。假設你的開發目錄www
在 E盤。
e:
cd www 切換到你的開發目錄
vagrant init hakaka hakaka是在添加Box的名字
回車
- Vagrant配置文件的調整
執行上面步驟后會在你的開發目錄里創建一個VagrantFile
的文件,里面是配置信息,現在去改幾個常用的配置項。
config.vm.network :private_network, ip: "192.168.33.10"
把這句前面的#
號去掉,192.168.33.10
可以改成你自己想的ip,我是改成11.11.11.50
。這個的配置的作用是:
Vagrant 默認是使用端口映射方式將虛擬機的端口映射本地從而實現類似 http://localhost:80
這種訪問方式,這種方式比較麻煩,新開和修改端口的時候都得編輯。相比較而言,host-only 模式顯得方便多了。
- Vagrant 啟動
在cmd
里切換到你的開發目錄
在cmd
里輸入vagrant up
回車
開發環境搭建
PHP的全套開發環境,可以用這個一鍵安裝包工具
lnmp.org,根據自己的系統來選擇,里面有詳細的安裝教程,其它的根據自已的開發需要參加相關文檔安裝
Vagrant打包分發
上面的步驟做完后,你可以把你的成果分享出去。就會用到這個命令vagrant package
在打包之前要關掉虛擬機,用到這個命令 vagrant halt
上面的操作都是在 cmd
切換到你的開發目錄后 執行的。
執行完vagrant package
后,會在你的開發目錄里生成一個叫package.box
的box鏡像文件。你把這個文件分享出去,別人就可以完成用到你搭建的開發環境了。
避免掉坑的地方
在啟動虛擬機的時候,可能會出現這個問題 vagrant was unable mont shared folders
,下面的提示
解決方法是在
cmd
中執行 vagrant plugin install vagrant-vbguest
這里根據網速可能要10幾分鐘,才能安裝完。安裝完后 執行 vagrant reload
還有一篇總結文章 vagrant 本地開發環境的一些坑
Vagrant常用命令
$ vagrant init # 初始化
$ vagrant up # 啟動虛擬機
$ vagrant halt # 關閉虛擬機
$ vagrant reload # 重啟虛擬機
$ vagrant ssh # SSH 至虛擬機
$ vagrant status # 查看虛擬機運行狀態
$ vagrant destroy # 銷毀當前虛擬機
更多詳情參考 Vgrant使用入門