目录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