上一篇说了Web开发环境配置,其实还有点问题,留到搭建框架环境的时候说,本篇说下vagrant的高级配置。
我们为什么用vagrant,其实就是希望让代码运行到虚拟机的环境,但是开发还是用本机的软件。换句话说 我在Window的电脑上开发,代码却是运行在Linux环境上,我依然可以用Windows系统上的QQ聊天、谷歌浏览器调试或者是用IEDA等开发工具写代码等等,而实现这些操作就需要了解Vagrant的一些配置。
上一篇文章地址:https://www.cnblogs.com/phperpxy/p/10338009.html
端口转发
上一节结尾说了一下端口转发的操作,也就是可以通过宿主机的浏览器访问虚拟机Webserver,但是当重启vagrant虚拟机的时候 端口转发会失效,因为每次启动vagrant,它会按它的配置文件进行重新设置
官方教程 :https://www.vagrantup.com/docs/networking/forwarded_ports.html
编辑vagrantfile文件 添加配置项 以下操作都是通过编辑这个配置文件实现
//guest虚拟机端口 host主机端口 //将主机8888端口 映射到虚拟机的80端口 config.vm.network "forwarded_port", guest: 80, host: 8888 //将主机8889端口 映射到虚拟机的8888端口 config.vm.network "forwarded_port", guest: 8888, host: 8889
重启vagrant reload/或者启动vagrant up 可以看到配置生效
可以看到Virtualbox也是设置好的
注意:实际开发过程中 这个操作用的很少,因为通常开发都是用一个WebServer,其次一般不用127.0.0.1这样的地址访问,后面会说
共享目录
这个说白就是,你在Window系统上有个目录比方说D:/phpcode,Linux虚拟机指定一个目录比如/home/www,共享目录就是你在D:/phpcode下的所有文件操作都会同步到虚拟机的home/www目录下,换句话说,D:/phpcode下的文件和/home/www保持一致,我认为这也就是vagrant的最强大的地方,实现Windows环境开发,Linux环境运行的关键。
官方教程:https://www.vagrantup.com/docs/synced-folders/basic_usage.html
原理就是Linux的挂载操作,关于挂载看这篇文章:https://blog.csdn.net/qq_39521554/article/details/79501714
#主机目录--映射--虚拟机某个目录 config.vm.synced_folder "D:/phpcode", "/home/www" #配置共享目录一定要配置成私有IP config.vm.network "private_network", ip: "192.168.33.10"
重启虚拟机,我第一次卡住报错,挂载不上,后来发现主要是下面的问题
1. VirtualBox版本过低
2.缺少增强工具(主要是这个问题)
sudo apt-get install virtualbox-guest-utils #安装增强工具 vagrant reload #重启
解决同步目录bug(同步不及时)
官方文档:https://www.vagrantup.com/docs/synced-folders/virtualbox.html
cd /etc/nginx/ sudo vim nginx.conf #更改sendfile off; Apache默认已经禁用了 sudo service nginx restart #重启nginx
网络配置
官方教程 :https://www.vagrantup.com/docs/networking/
之前说共享目录提了下私有网络(要配置共享目录一定要配置私有网络),私有网络还有个好处就是可以直接输入这个ip访问Webserver
公有网络:ip需要和主机的ip段一致 也就是前3位要一样。好处是如果是在局域网下,其他人可以通过ip直接访问(基本用不上)
#配置私有网络 config.vm.network "private_network", ip: "192.168.33.10" #配置公有网络 config.vm.network "public_network", ip: "192.168.33.10"