Vagrant可以提供可配置、可再生、便携的工作环境,它主要是一个中间层技术,它的下层是VirtualBox,VMware等虚拟机软件,它的上层是配置管理系统工具,比如Shell Scripts,Chef,Puppet等可以自动化安装和配置软件的工具。
对于开发人员来说,Vagrant可以帮你统一团队成员的开发环境。如果你或者你的伙伴创建了一个Vagrantfile,那么你只需要执行vagrant up就行了,所有的软件都会安装并且配置好。团队成员可以通过相同的Vagrantfile来创建他们的开发环境,无论他们是在Linux, Mac OS X,或者Windows下,这样就可以保证你团队成员的代码是跑在相同的环境中,从而避免令人烦躁的在我的机器上是可以的问题。
对于运维人员来说,Vagrant可以给你提供一次性,并且与线上一致的服务器环境,你可以利用VirtualBox来测试你的管理脚本,不需要再登录到线上服务器测试了。
对于设计人员来说,Vagrant可以帮你处理一切,你只需要专注在设计上就好了。一旦开发人员帮你配置好了Vagrant之后,你只需要执行vagrant up,然后开始设计。工具和环境如下:
工具及环境 |
版本 |
下载地址 |
宿主机环境 |
Win8.1 |
|
VirtualBox |
VirtualBox-5.0 |
https://www.virtualbox.org/ |
Vagrant |
vagrant_1.7.4 |
http://www.vagrantup.com/ |
Xshell |
xshell_5.0 |
http://www.netsarang.com/download/main.html |
Vagrant只是一个虚拟环境的容器,具体虚拟化的实现,依赖外部的虚拟机,例如VirtualBox和VMware,一般使用VirtualBox来搭建,免费小巧,在Windows系统上下载安装VirtualBox for Windows hosts版。
下载地址:https://www.virtualbox.org/wiki/Downloads
2. 安装 Vagrant
根据提示一步步安装,安装的过程中会自动配置系统变量,不需要再手工配置。
下载地址:http://downloads.vagrantup.com/
3.导入封装好的镜像
boxes是什么?就是各种已经打包好的虚拟环境镜像,供Vagrant使用。启动命令提示符,通过cd命令进入box镜像存放的目录,在终端里输入:
vagrant box add hello ./package.box
hello是我们给这个box取的名字,./package.box是box的路径,如果放在其他目录需要在文件前添加相对路径,用绝对路径会提示找不到文件,建议box和vagrant的bin程序都放在同一个分区中,用相对路径添加。
4.初始化开发环境
在本地创建一个开发目录(比如:D:\Code),用来和虚拟环境的开发目录同步,用命令行切换到开发目录里,初始化当前目录的环境:
cd d:\code # 切换目录
vagrant init hello # 初始化目录环境
初始化开发环境后会自动生成一个Vagrantfile文件,用来配置vagrant的行为所创建虚拟机的信息,修改默认的Vagrantfile:
VAGRANTFILE_API_VERSION = "2"
path = "#{File.dirname(__FILE__)}"
require 'yaml'
require path + '/scripts/homestead.rb'
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
Homestead.configure(config, YAML::load(File.read(path + '/Homestead.yaml')))
End
修改Homestead.yaml文件,修改map为本地的开发目录,to为在虚拟环境中映射的目录:
folders:
- map: d:/phpcode
to: /home/vagrant/Code
修改homestead.rb文件,找到下面一行,修改为前面命名的box名称:
config.vm.box = "hello"
5.启动虚拟开发环境
vagrant up # 启动环境
如果不出现错误,一个vagrant环境就已经配置好了。打开VirtualBox会看到终端显示了启动过程,启动完成后,我们就可以登录SSH:
vagrant ssh # SSH登录
Windows 终端并不支持ssh,所以需要安装第三方SSH 客户端,这里使用的是Xshell 5。登录SSH,剩下的步骤就是在SSH客户端里通过虚拟机配置你要运行的各种环境和参数。
6.用SourceTree克隆项目代码到本地开发目录中。
7.配置nginx服务器
最后修改host文件,将虚拟环境的域名映射到本地80端口,重启虚拟机,在本地通过配置好的域名就可以访问项目了。
8.常用管理命令
vagrant up (启动虚拟机)
vagrant halt (关闭虚拟机――对应就是关机)
vagrant suspend (暂停虚拟机――只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)
vagrant resume (恢复虚拟机 ―― 与前面的暂停相对应)
vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)