vagrant
最近在配Lavalel的環境時接觸到了vagrant虛擬機,vagrant是什么呢?
Vagrant是一個基于Ruby的工具,用于創建和部署虛擬化開發環境。它 使用Oracle的開源VirtualBox虛擬化系統,使用 Chef創建自動化虛擬環境。
開始使用
- 下載安裝 VirtualBox
下載地址:https://www.virtualbox.org/wiki/Downloads - 安裝 Vagrant
下載地址:http://downloads.vagrantup.com/ 根據提示一步步安裝。 - 下載系統鏡像
在init vagrant時可以直接添加系統鏡像,考慮到國內的網速情況,建議先使用迅雷等下載工具先下載好系統鏡像。 官方封裝好的基礎鏡像:
Ubuntu precise(12.04)32 VirtualBox: http://files.vagrantup.com/precise32.box
Ubuntu precise(12.04)64 VirtualBox: http://files.vagrantup.com/precise64.box 另外這里列出了其他的一些鏡像,你可以根據你服務器的環境來選擇。 http://www.vagrantbox.es/ - 添加鏡像到 Vagrant
假設我們下載的鏡像存放路徑是 ~/Download/precise64.box,在終端里輸入:
$ vagrant box add ubuntu12_04 ~/Download/precise64.box ubuntu12_04是我們給這個box取的名字,你完全可以根據你的習慣來命名。 ~/Download/precise64.box 則是我們上一步下載的系統鏡像所在的路徑。 - 初始化開發環境
創建一個開發目錄(比如:~/vagrant),你也可以使用已有的目錄,切換到開發目錄里,用 ubuntu12_04 鏡像初始化當前目錄的環境:
$ cd ~/vagrant # 切換目錄
$ vagrant init ubuntu12_04 # 初始化
初始化完成之后,就會在當前目錄生成Vagrantfile,這就是vagrant的配置文件,可以修改這個配置文件進行一些個性化的定制,比如網絡連接方式,共享的目錄等。
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu_12_04" #定義此虛擬機是從哪個box生成,名字就是我們box add時的名字
config.vm.network "private_network", ip: "192.168.110.100" #私有網絡配置
config.vm.synced_folder ".", "/vagrant" # 將當前目錄映射到虛擬機上的/vagrant 目錄
#awesome configuration goes here...
end
啟動vagrant并通過SSH連接
上一步初試化完成之后,可以先修改Vagrantfile,也可以使用默認配置,然后啟動vagrant。 $ vagrant up # 啟動環境
你會看到終端顯示了啟動過程,啟動完成后,我們就可以用 SSH 登錄虛擬機了。然后就像登錄到了一臺VPS或服務器,進行環境的配置。
$ vagrant ssh # SSH 登錄
當配置好相關的環境之后,就可以將當前配置好的虛擬機打包成box,存盤備用,也可以分發給Team的其他同事,統一開發環境。
vagrant package --output NAME --vagrantfile FILE
可選參數:
--output NAME : (可選)設置通過NAME來指定輸出的文件名
--vagrantfile FILE:(可選)可以將Vagrantfile直接封進box中關閉Vagrant
vagrant suspend 將虛擬機掛起,虛擬機內存都保存到硬盤上,下次可以快速恢復。 vagrant halt 將虛擬機關閉,虛擬機內存釋放,下次啟動要慢一點。 vagrant destroy 將虛擬機刪除,所有變更都丟失,下次啟動要重新克隆一個 Vagrant box。 無論那種方式關閉,要再啟動 Vagrant 都是用 vagrant up 命令。
配置homestead環境
步驟
- 命令: vagrant box add laravel/homestead ,這句會去下載一個box,需要一段時間,看網速
- 命令: git clone https://github.com/laravel/homestead.git Homestead ,找一個目錄用來存放虛擬機配置的去執行這句命令
- 編輯git clone后文件目錄中的 Homestead.yaml 文件,一看就懂,懶得說
但是由于網速的原因,第一步經常安裝失敗,于是我就從網上下載了homestead的官方box文件,再vagrant box add,然后初始化vagrantfile,在vagrant up時突然報了以下錯誤:
大意就是ssh連接失敗了,苦思冥想,縱欲找到了原因:問題出在vagrantfile身上。
我的vagrantfile文件
屏幕快照 2017-06-06 下午11.47.58.png