laravel的guide上面有vagrant,但是看了半天并没有看得太明白。
比如我们平时用虚拟机(virtualbox),得下载一个操作系统的镜像来让virtualbox安装上并运行。
vagrant建立的又得依赖于virtualbox,所以我能理解为vagrant是一个操作系统镜像的管理工具吗?
但是好像也不对,比如laravel官方给得homestead,才600多M,连一个linux最小化系统也不止600M,而且里面还包含了mysql php nginx redis memcache等等……
所以想请教下,vagrant到底是个什么东东,homestead又是个什么东东
VirtualBox相信很多人都用过,它是一个虚拟化软件,用来在我们的电脑上虚拟出一电脑来,和 VMware Workstation, kvm, xen等是一类东西(专业点的说法叫Hypervisor),不过它提供易用的界面(VMware也有),对各平台的支持(Linux, Win, Mac),又非常的轻量,最关键的free呀,所以使用非常广泛。
我们平时使用VirtualBox最常见的情况就是,自己电脑是个Win,想跑个Linux,或者电脑是个Linux,要跑win上网银啊,QQ什么的 win only之类的,虽然有wine这样的东东,可以在Linux下跑win下的软件,但有个win系统稳定性不更好么,并且现在的电脑配置,完全不用担心虚拟机消耗内存CPU什么的,你不用那才是浪费呢,何况VirtualBox这么轻量。个人体验,弄个xp虚拟机跑QQ资源消耗比chrome或者ff登webQQ要少,可恶的用了多少js。。。
对天天码代码的苦逼程序员来说,VirtualBox就不能是简简单单的挂个Q这么用了->_->
程序员搞最多的就是码代码了,可能做很多个项目,公司里搞java的,php的,自己回家再玩个python什么的,想体验下新版本的mongodb或者nginx,Emacs或者vim的配置啦,保不准哪个项目前个版本的数据库是mysql,下个版本用了postgresql, 这么多东西全都搞在一起,装在一个电脑上,肯定会被这各种配置环境搞的晕晕的,烦不胜烦。
怎么办呢,最好是每个项目都有一个干净的开发环境,只为这个项目,可是我们不可能为每一个项目配一个电脑吧,有了,虚拟机,给每一个项目配一个虚拟机,开发A的时候就启A的虚拟机,这样各个开发环境互相独立,干干净净。还有一个问题,我们的项目有多个开发人员,如何保障大家的开发环境都一样呢,总不能每个人都一个个点击鼠标,填写配置参数,建好后上支一个个软件安装吧,这太麻烦了,太不geek了。我们想要的是,环境只配置一遍,然后可以把这个环境打包deliver给别人,别人拿到后,直接启起来就可以用。那有没有这样的东西呢,肯定是有的,Vagrant,它就是用来干这个的。
Vagrant 就是一个命令行版的虚拟机管理程序,通过集成命令操作 VirtualBox / VMware 等虚拟机程序来操作操作系统。Homestead 就是官方集成环境的虚拟操作系统,可以直接在 VirtualBox / VMware 上运行。不知道你说的一个 Linux 最小化系统是什么,不过一个 Ubuntu Server 也就 570M,所以 600M 应该是正常的。
vagrant是一个虚拟机管理软件。他可以让你的一台或者多台虚拟机可以迅速的部署以及复制。是提供多环境开发下面一个不错的选择,特别是你本身处于win平台下,又想以最小的代价搭建linux虚拟机环境,vagrant是一个不错的选择。
Homestead是laravel官方提供的vagrant box。所谓vagrant box其实就是一个由其他人已经配置打包好的linux或者其他OS环境。你只需要简单的几行代码如:
vagrant add box homestead;
vagrant up;
就可以把laravel 官方推荐的os环境部署到虚拟机中,进行使用。