Vagrant 踩坑记
好久没来更新这个小站了,恰逢今天换主机,所以就上来更新一发。
最近在折腾 Vagrant 搭建 PHP MySQL Apache 的开发环境,环境建好,实测的时候发现,貌似所有的文件都被缓冲起来了,在宿主机上修改的内容并不能实时的在网页上显示出来,总要等那么几十秒之后才能看到更新。
遇到问题之后第一时间 Google ,在 Google 上找倒了答案,这是一个常见的坑,需要根据你的环境来做相应的修改。
像我用的是 Apache 那么我就在Apache 的配置文件里边把 EnableSendfile 设定成 off 即可。如果是 Nginx 则需要修改配置文件中的 "sendfile on" 为 "sendfile off"。
至此,静态文件缓存的问题就解决了。
但是我感觉还是不对,我修改的 PHP 文件也并不能实时在网页之中体现出结果,然后继续 Google ,找到问题的原因是:opcache 的原因。
之后就好解决了,直接找到 PHP 的配置文件 php.ini 然后注释掉 opcache 相关的配置即可。
至此解决了我目前遇到的 vagrant 缓存文件的问题。
---更新---
在实际的开发使用过程中,发现 vagrant 里边建立起来的开发环境似乎有点慢。一个普通的 echo 语句都需要等待三秒左右才能看到结果,然后各种分析,最后确定是共享目录的问题。
最后找到了一个 vagrant 的插件,叫 vagrant-bindfs 。 下边是我的使用过程。
安装插件
vagrant plugin install vagrant-bindfs
下面代码放在 Vagrantfile 中,会添加一个名字是 latoooo 的虚拟机。 先用 synced_folder 设置了一下 Vagrant 的共享目录,类型是 nfs,qdor事又重新用 bindfs 绑定了这个目录到系统的另一个地方。
force_user: 'root'
设置了目录的用户名。force_group: 'root'
设置了目录的群组。如果目录不是空白的,可以加上 o: "nonempty"
。
config.vm.define "latoooo" do |latoooo|
latoooo.vm.network "private_network", ip: "192.168.33.11"
latoooo.vm.hostname="latoooo"
latoooo.vm.synced_folder "nginx/conf.d", "/mnt", type: "nfs"
latoooo.bindfs.bind_folder "/mnt", "/etc/nginx/conf.d", force_user: 'root', force_group: 'root', o: "nonempty"
end
完成之后速度提升了好多,基本和在主机上的环境速度差不多。