vagrant
是静态虚拟机操作的一个软件,而使用虚拟机有几个好处:
1,为了开发环境与生产环境一致(很多开发环境为windows
而生产环境为linux
),不至于出现在开发环境正常而移步到正式生产环境时出现各种问题,而vagrant通过共享文件,可以实现在主机上windows
下一个的IDE
关系关系linux
编程编程操作,直接在机虚拟中运行展示出效果。
2,在vagrant
中只需要搭配一次开发环境,然后就可以将搭配好的环境系统打包打包给其他的同事用了,其他同事只需要下载vagrant
和virtualBox
,然后配置下共享目录后就可以开发了,再也不需要关心配置环境的问题了。
3,目前好多扩展如swoole、redis
等对linux
支持更好,甚至有些只支持linux
,所以采用虚拟机,再也不需要为学习新技术找借口了。
相关环境机软件版本:
- 主机:win7;
- 虚拟机:Ubuntu18.04;
- vagrant:1.9.5;
- virtualBox:5.2
一,安装步骤如下:
1,下载virtualBox,下载链接
2,下载vagrant,下载链接
3,下载镜像:下载链接
4,将下载的内容加载,顺便说下,第3步可以不用,vagrant支持在线安装程序,但由于长城的原因,所以最好通过其他方法将下载下来,再在本地加载,,打开cmd,输入以下命令:
命令是这样的,boxname为自己起的名字,url或path为box地址,可以在线也可以本地
vagrant box add {boxname} {url or path}
实际安装命令,本地下载下来的
vagrant box add Ubuntu18.04 F:\work\ubuntu18.box
5,找到一个/新建一个目录,例如Vagrant,然后初始化环境
当前目录下新建目录
mkdir vagrant
:此目录
cd vagrant
初始化,Ubuntu18.04
为你上方设置的name
vagrant init Ubuntu18.04
初始化成功后,本目录下会出现Vagrantfile
这样一个文件,这个是vagrant
的配置文件,后续的配置在这里修改
6,先都使用默认的配置,来启动下:
vagrant up
会显示现有启动信息:
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222//注意这里
default: SSH username: vagrant//注意这里
default: SSH auth method: private key
.......
如果不报错的话就算是启动成功了,如果出现错误则谷歌或百度,我这边主要遇到的错误为无限卡在default: SSH auth method: private key
这个地方,很大可能的原因是本机没有开启虚拟化技术,重启电脑,按f2或其他的键进入bios
设置,找到virtual
相关字样的开启即可。
7,远程连接linux
,此时windows
下可以用gitbash
或者是xshell
来连接,host
地址如上方标识的注意:127.0.0.1:2222
,用户名密码都为:vagrant
此时,默认的共享文件夹的关于关系是windows
下的vagrant_project
文件夹对应的linux
下一个/vagrant
文件夹,可以随便在双方建立几个文件测试下是否两方是同步的
8,关闭等命令,由于还有好多需要配置,暂时可以关闭,等配置完成后再启动
关闭
vagrant halt
重启
vagrant reload
启动
vagrant up
连接
vagrant ssh
二,网络配置,共享目录等相关配置(修改vagrantFile
)
以上明显展示了安装和开启的简单用法,但真正能进行开发还需要额外的配置,打开上方提到的Vagrantfile
配置文件来进行配置,好多都是已注释掉的,选择去掉即可
1,网络配置,vagrant有三种配置方法:官网文档
a,端口映射,意思是将虚拟机的端口映射到主机的端口上,主机初始化内部可以通过访问该端口来访问到您虚拟机上的东西
config.vm.forwarded_port 80, 8080
上述作用是将虚拟机的80端口映射到主机的8080端口上,那我直接访问主机的8080端口就相当于访问虚拟机的80端口
b,私有网络,只有主机能够访问虚拟机,主程序无法访问的虚拟机的内容(重点配置方式)
config.vm.network "private_network", ip: "192.168.33.10"
上述设置完成后,在本机可以通过192.168.33.10来访问虚拟机,需要注意192.168.33.10虽然可以随便设置,但如果主机的ip为192.168.1.xxx扩展,那就不要这个再用这个分开,可以2.xxx或3.xxx或其他,以免造成冲突。
c,共有网络,主机内置内部成员可以访问虚拟机中的内容,虚拟机相当于称为内的一员
config.vm.network "public_network", ip: "192.168.1.120"
以上配置一般来说开发环境也不需要内部成员访问,所以大部分情况下是选择用b,私有网络来开发,这个可根据实际情况来选择。
2,共享目录,用户可以自定义共享目录,在Vagrantfile配置文件中配置:
最低可用性的默认的共享目录(可选)
config.vm.synced_folder '.', '/vagrant', disabled: true
增加新的共享目录,第二个参数以当前文件夹为基准(附加)
config.vm.synced_folder "work", "/www/web/work",
上方相当与windows
下的Vagrant/work
文件夹对应linux下的/www/web/work
文件夹
除了可以自定义共享文件外,还可以选择共享的方式,vagrant有样式共享的方式,官网文档请点这里查看
a,NFS共享方式,Windows平台无法使用此配置,并且使用此方式时不能修改文件的所有者和所有组
b,RSync共享方式,所有平台都可以使用,但这种方式貌似有个缺点就是主机的定位可以同步到虚拟机中,但虚拟机中的无法同步到主机中,如果要实现双向同步可能还需做其他设置,由于没有用过,所以不太清楚。
c,SMB共享方式,只有Windows平台可以使用,曾有找一些资料来配置,但一直没有成功,所以具体的并不太清楚,但貌似效率是挺不错的。
d,VirtualBox共享方式,这是VirtualBox提供的也是vagrant替代的共享方式。当文件数量小时用着不错,当文件数量大的时候打开网页会卡到超时。
总之以上,如果主机是mac,则推荐用NFS共享方式,如果是windows
则推荐用SMB
或者rsync
方式,如果文件很少,那用默认的就可以了。
但除了上方说的,windows
下其实还有方式可以加快网站访问速度,那就是用Vagrant WinNFSd
这款插件,插件地址,这种方式是windows
下提高速度最简单的方式了:
vagrant plugin install vagrant-winnfsd
安装完成后配置type
为nfs
,虽然官网上说nfs
不能应用于windows
,但用这个插件后就可以了。
config.vm.synced_folder "abc", "/www/web/work",type:"nfs"
测试了下,此插件还是非常有效的,原先打开laravel
框架的文件会超时,或10、20多秒,但用了这个后响应在2s以内,还是可以接受的。另提供一个参考资料:让Vagrant
在Windwos
下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题
三、域名访问及打包分发
1、域名访问,主要是虚拟的本地域名配置问题
新建一个站点,指定目录到共享的目录,随便取个虚拟的域名:www.abc.com
测试需要在主机中修改host
,如下:(至于虚拟机中/etc/hosts
文件中,测试修改与不修改都不影响访问)
192.168.33.10 www.work.com
192.168.33.10 work.com
然后直接在浏览器中用http://www.work.com
既可显示虚拟机中的内容了。而直接在windows
中的的IDE
修改文件,会实时通过这个网址展示出来。
2、镜像环境打包
vagrant package
等待一段时间,会发现在目录生成一个package.box
的文件,这个就是已经包含安装环境的镜像了,将此镜像发给同事,让其安装上方所属的步骤加载镜像vagrant box add {name} {path to package.box}
命令,然后配置自己的网络及共享文件夹就可以直接开发了,远离重新配置环境的烦恼。
特别注意:如果是第三方工具连接,用户名和密码都是 vagrant
四,命令速记
最后附上vagrant一些常用的命令,希望这能帮助你们,别忘记点赞哟!
$ vagrant box add NAME URL #添加一个box
$ vagrant box list #查看本地已添加的框
$ vagrant box remove NAME virtualbox #删除本地已添加的box,如若是版本1.0.x,执行$ vagrant box remove NAME
$ vagrant init NAME #初始化,实质应是创建Vagrantfile文件
$ vagrant up #启动虚拟机
$ vagrant halt #关闭虚拟机
$ vagrant destroy #销毁虚拟机
$ vagrant reload #重启虚拟机
$ vagrant package #当前正在运行的VirtualBox虚拟环境打包成一个可重复使用的box
$ vagrant ssh # 连接vagrant
$ vagrant port # 查看vagrant端口号
以上就是vagrant
常用的一些操作,挺不错的,试试吧!