前言
作为开发人员,只要你的应用最终是放在linux环境执行,那么最好就是将本地开发环境也线上一致。不管是用windows系统,还是mac系统,即使你本地程序跑得好好的,也经常会出现一上线就各种bug的现象。排查这些问题相当耗时,而且随着应用的复杂度越来越大,一个应用要跑起来,需要依赖很多服务,不同操作系统对这些服务的支持度不一定相同。
基于此,最好的解决方案就是让本地环境与线上一致。线上服务器大多数公司是用centos系统,毕竟免费且受众广。如果本地物理机直接装成centos,很多办公工具就装不了。因此,选择用虚拟机搭建一个centos系统是最合适的方式。
常用的虚拟机有VMware和Virtualbox,前者功能很强大,但需要收费,且过于庞大(个人倾向于较为轻巧的工具),后者是开源免费的工具。因此我选择用后者,如果用virtualbox自己手动云攒一个centos,对于新手来说还是有些难度的,对于老手来说,虽然不难,但耗时繁琐。
如果有一个工具可以帮助我们方便地管理虚拟机,一键下载我们想要的操作系统,并可以将这些系统进行打包分享,就可以大大减轻我们的工作量。而这些,vagrant都能做到。
vagrant简介
vagrant也是一款开源免费的工具,用于管理虚拟机。详细的介绍到官方文档查看。
vagrant默认是与virtubox组合使用,在使用之前,要先将两者都安装好:
安装完成后,我们通过安装centos作为演示,vagrant官方已经为我们准备好了centos的相关镜像,只要执行一个命令就可以自动安装好。但是,由于众所周知的原因,在线下载镜像极其龟速,估计你入职当天就开始下载,到你离职时还没有下载完...
所以,我们需要借助第三方下载工具将镜像下载到本地(如迅雷)。
基本使用
以上的准备工作完成后,就要撸起袖子开干了。
第一:在本地新建目录,作为vagrant的根目录
如:E:\vagrant\centos7.2
第二:导入刚刚下载的镜像(box文件)
E:\vagrant\centos7.2>vagrant box add centos7.2 E:/vagrant/box/centos7.2.box
第三:初始化box
E:\vagrant\centos7.2>vagrant init
此时,在E:\vagrant\centos7.2>
会自动生成Vagrantfile
文件,修改文件中的box名称
config.vm.box = "centos7.2"
第四:启动box
E:\vagrant\centos7.2>vagrant up
启动成功后,打开virtualBox,你会看到vagrant已经为我们搭建好了一个正在运行的centos7.2系统了:
第五:进入vagrant
可以在cmd命令下直接进入centos7.2,但我想没人能忍受在丑陋的cmd界面下使用linux
E:\vagrant\centos7.2>vagrant ssh
我使用xshell连接虚拟机,默认情况下,vagrant将物理主机的2222端口转发到虚拟机的22端口,并为我们创建了账号和密码都为vagrant的用户。xshell的连接图:
进入虚拟机后,你会发现,vagrant已经将虚拟机的网络配置好了:
而且默认情况下,vagrant将/vagrant
目录映射到物理主机的vagrant根目录。
如果物理主机设置的根目录是E:\vagrant\centos7.2
, 那么虚拟机的/vagrant
映射的就是该目录的内容。不管是在物理主机,还是在虚拟机,只要修改了这个目录的内容,都会实时同步。
小结
至此,vagrant的搭建完毕,过程极其简单,虚拟机的网络通了,与物理主机也能共享目录,而且还能进行端口转发,这些功能如果是自己手把手在virtualBox搭建,要耗费不少时间。vagrant解放了我们的时间,但vagrant的功能肯定不只是这么简单。同时它也有一个很大的问题,默认情况下,由它生成的虚拟机系统磁盘容量只有8G,这是设计者出于对这个工具的应用场景而设定的。但对于想将其作为开发环境的人员,8G的容量如同鸡肋。
当然,有问题,就会有解决方案。后续将介绍更多的vagrant命令,以及如果给vagrant进行扩容。