目錄php
Vagrant是一款用來構建虛擬開發環境的外掛工具,能夠簡化虛擬機配置和管理。它底層支持VirtualBox、VMware、AWS等,很是適合使用php/python/ruby/java語言開發web應用,「代碼在我機子上運行沒有問題」這種說辭將成爲歷史。html
去官網 https://www.virtualbox.org/wiki/Downloads 下載最新版的Virtualbox,而後雙擊安裝,一直點擊確認完成。java
去官網 https://www.vagrantup.com/downloads.html 下載最新版的Vagrant,而後雙擊安裝,一直點擊確認完成。在windows下安裝vagrant,爲了寫入相應配置到環境變量,系統可能會要求從新啓動。在命令行中,輸入vagrant,查看程序是否是已經運行了。若是不行,請檢查一下$PATH裏面是否包含vagrant所在的路徑
[TOC]python
add box的時候默認保存在C盤用戶文件夾 C:\Users\xxx.vagrant.d,經過設置VAGRANT_HOME環境變量改變默認位置linux
setx VAGRANT_HOME "X:/your/path" setx VAGRANT_HOME "X:/your/path" /M (系統變量)
export VAGRANT_HOME='/path/to/vagrant_home'
命令 | 做用 |
---|---|
vagrant box add | 添加box的操做 |
vagrant init | 初始化box的操做,會生成vagrant的配置文件Vagrantfile |
vagrant up | 啓動本地環境 |
vagrant ssh | 經過ssh登陸本地環境所在虛擬機 |
vagrant halt | 關閉本地環境 |
vagrant suspend | 暫停本地環境 |
vagrant resume | 恢復本地環境 |
vagrant reload | 修改了Vagrantfile後,使之生效(至關於先 halt,再 up) |
vagrant destroy | 完全移除本地環境 |
vagrant box list | 顯示當前已經添加的box列表 |
vagrant box remove | 刪除相應的box |
vagrant package | 打包命令,能夠把當前的運行的虛擬機環境進行打包 |
vagrant plugin | 用於安裝卸載插件 |
vagrant status | 獲取當前虛擬機的狀態 |
vagrant global-status | 顯示當前用戶Vagrant的全部環境狀態 |
接下來,咱們須要選擇使用何種操做系統,這裏以centos7.2爲例。之前基於虛擬機的工做流,咱們須要下載ISO鏡像,安裝系統,設置系統等操做。而Vagrant開源社區提供了許多已經打包好的操做系統,咱們稱之爲box。你能夠從box下載地址(下文列出),找到你想要的box,固然你也能夠本身製做一個。git
咱們須要創建本身的開發環境目錄:es6
$ mkdir -p /Users/jackyue/data/vagrant/centos7 $ cd /Users/jackyue/data/vagrant/centos7
Vagrant提供在線安裝服務,很是方便,但因爲偉大的GFW,咱們須要先FQ把box下載到本地,而後導入安裝。box連接:https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.boxgithub
如下是導入安裝說明:web
$ vagrant box add {title} {url} $ vagrant init {title} $ vagrant up
vagrant box add是添加box的命令,{title}是之後建立虛擬機的別名,{url}是下載到本地box的路徑,也能夠是服務器端的URL。ubuntu
說明:將box鏡像添加到本地倉庫,有三種方式:
vagrant box add precises64 http://files.vagrantup.com/precise64.box
vagrant box add precises64 ./precise64.box
vagrant box add precises64 ubuntu/precise64
這種方式,vagrant會自動在中央倉庫查找鏡像,並下載到本地鏡像庫中。
vagrant box add ubuntu/precise64
省略本地鏡像名稱,則直接用中央倉庫中的鏡像名做爲本地鏡像名,這樣作的好處是能夠跟倉庫中的鏡像對應。
$ cd /Users/jackyue/data/vagrant/centos7 //找到一個目錄,做爲初始化目錄 $ vagrant box add centos7 /Users/jackyue/data/vagrant/centos/centos-7.0-x86_64.box //建議採起離線安裝,這樣有利於放置虛擬機文件到指定路徑 ==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'centos7' (v0) for provider: box: Unpacking necessary files from: file:///Users/jackyue/data/vagrant/vagrant-centos-7.2.box ==> box: Successfully added box 'centos7' (v0) for 'virtualbox'!
box中的鏡像文件被放到了/Users/jackyue/data/vagrant/.vagrant/machines/之下
$ vagrant init centos7 //若是是新添加的box,必須執行本步驟,初始化一次以後,就不須要再執行本步驟 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
初始化成功後,vagrant會在當前的初始化目錄生成一個Vagrantfile配置文件,咱們能夠修改它,進行個性化定製。在下一篇文章中,咱們會具體講解關於Vagrantfile的配置。對於Vagrantfile文件,咱們能夠直接編寫,或者從網絡上拉取Vagrantfile文件後,做爲虛擬機配置文件,以下:
$ mkdir -p ~/vm/coreos $ cd ~/vm/coreos $ git clone https://github.com/coreos/coreos-vagrant.git
$ vagrant up // 第一次開啓的時候,建議一臺一臺地開啓,這樣的話方便記錄映射的本地端口號 Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'centos7'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: centos7_default_1493108555390_12825 ==> default: Clearing any previously set network interfaces...
通過以上操做後,咱們完成了centos7虛擬機的安裝,如今須要登陸虛擬機,進行操做,有如下三種方式:
在開發環境的目錄(有Vagrantfile的地方),登陸虛擬機
$ vagrant ssh
$ ssh -p 2222 127.0.0.1
當你配置好開發環境後,退出並關閉虛擬機。在終端裏,對虛擬機打包
# vagrant halt // 在開發環境的目錄,關閉centos7 # vagrant status // 確認centos7關機 # vagrant package centos7 --output centos7.box --vagrantfile Vagrantfile // --output NAME:(可選)設置經過NAME來指定輸出的文件名;--vagrantfile FILE:(可選)將Vagrantfile直接封進box中
注:若是網絡模式中使用private_network的話,在打包以前須要清除一下private_network的設置,避免沒必要要的錯誤:rm -f /etc/udev/rule.d/70-persistent-net.rules
打包完成後會在當前目錄生成一個centos7.box的文件,將這個文件分發給其餘用戶(開發者)。
其餘用戶只要添加這個 box ,並用其初始化本身的開發目錄,就能獲得一個如出一轍的開發環境了。
# vagrant box add centos7 centos7.box //添加package.box,鏡像命名爲centos7 $ vagrant init centos7 // 初始化centos7鏡像 $ vagrant up