Laravel Homestead:开启 NFS 解决站点响应缓慢
问题描述
使用 Homestead 在开发 Laravel 应用程序,经常会遇到网页响应速度缓慢,有时甚至十几秒甚至几十秒才返回响应,极大影响了开发体验:
造成此问题的原因,是虚拟机共享文件系统 IO 速度慢所导致的。而一个全新安装的 Laravel 应用响应一个请求时,需要读取 600+ 的文件,瓶颈尤为明显。
解决问题
解决方案是让虚拟机使用 IO 效率更高的 NFS 挂载方式。
第一步、安装 NFS 服务
我们需要在主机的系统里安装 NFS 服务供虚拟机使用。
Mac 用户默认支持 NFS 挂载。
Windows 用户 需要安装 Vagrant WinNFSd ,在你的 Git Shell (或者其他 Windows Shell)里运行以下命令进行安装:
$ vagrant plugin install vagrant-winnfsd
Ubuntu 用户 可以使用以下命令安装 NFS 服务:
$ apt-get install nfs-kernel-server
第二步、修改配置
接下来修改 Homestead.yaml
文件里的 folders
文件挂载信息,指定挂载的 type
为 NFS:
.
.
.
folders:
- map: ~/code
to: /home/vagrant/code
type: "nfs"
.
.
.
第三步、重启并应用虚拟机
因为我们修改了 Homestead.yaml
,需要 --provision
参数来应用虚拟机修改,并使用 reload
来重启虚拟机:
$ vagrant reload --provision
结语
以上配置成功后,一般情况下,你应该可以得到 1s 内的响应速度。
使用nfs挂载模式,虚拟机的文件都变为501:dialout 用户和用户组权限的文件了,而且用sudo更改用户权限也不好使,导致laravel没有创建目录的权限,最后不得不去掉nfs,虚拟机用户都变为vagrant了才好使的
不用挂载的方式,通过chmod -R 777 修改不了文件的权限,我开始怀疑这个最新的homestead包是不是有问题啊,郁闷死了
切到root用权限下,依然不好使,麻烦小伙伴看到的话给解决一下
更改不是共享目录中的文件可以修改文件权限是没问题的,共享的目录修改不报错,但是不生效
的确,使用nfs模式,主机里面的目录根本不会拷贝到虚拟机里。@xugege
开了nfs后目录所有者变root了.composer 和npm run watch-poll 会报io错误.你们有这情况吗?
$ vagrant up --provision
C:/Program Files/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.3.0/psych.rb:379:
in `parse': (): could not find expected ':' while scanning a simple key
出现这个错误,后来发现是编辑Homestead.yaml文件type那句时,用了tab键,而且type冒号后要空一格
我的还是很慢, 想问下是不是因为机械硬盘的缘故? 其他电脑用固态硬盘确实有提升.
conflicting dependencies rdoc (= 5.0.0) and rdoc (= 5.0.1)
Activated rdoc-5.0.1
which does not match conflicting dependency (= 5.0.0)
Conflicting dependency chains:
rdoc (= 5.0.1), 5.0.1 activated
versus:
rdoc (= 5.0.0)
Gems matching rdoc (= 5.0.0):
rdoc-5.0.0
报这个错误 , 总说依赖包冲突。
第一张图是跑在 homestead (win10 装的有固态,已经开启了 nfs )中,第二张是跑在 普通的服务器里。感觉差距很大呀。首页就加载就快 2s 了,更别提其他的页面了。这个能优化么。
无法克隆项目,切换到 root 用户即可
最后得到
我网上没有搜索到解决方案 ,有知道的麻烦告知一下 ,谢谢
mount.nfs: Connection timed out
我使用了nfs,依然很慢,甚至更慢,我和同事都是同一个box文件,不知道什么情况
教程02做了一半,才开启的nfs就会报错: Target class [App\Http\Middleware\EnsureEmailIsVerified] does not exist. 关闭后又不会有这个报错了.中间件里面是已经存在这个文件的,并且已经实现邮件验证.
还是很慢呀,平均1~2秒
这个怎么解决
新版 vagrant 和 新版的 box 不用开启 NFS 速度也很快, 虚拟机版本是 ubuntu 2004,
开启 NFS 碰到过一次 bug 卡了大半天, 后来关了 NFS 才好.
开启nfs 出现权限问题这个怎么解决
开启nfs挂载之后还是很慢,有什么方法能解决么
windows10 提示我 mount.nfs: multiple version options not permitted