Laravel Homestead:开启 NFS 解决站点响应缓慢 0 个改进

问题描述

使用 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 内的响应速度。

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 6
xugege

使用nfs挂载模式,虚拟机的文件都变为501:dialout 用户和用户组权限的文件了,而且用sudo更改用户权限也不好使,导致laravel没有创建目录的权限,最后不得不去掉nfs,虚拟机用户都变为vagrant了才好使的

1个月前 评论
xugege

不用挂载的方式,通过chmod -R 777 修改不了文件的权限,我开始怀疑这个最新的homestead包是不是有问题啊,郁闷死了

1个月前 评论
xugege

切到root用权限下,依然不好使,麻烦小伙伴看到的话给解决一下

1个月前 评论
xugege

更改不是共享目录中的文件可以修改文件权限是没问题的,共享的目录修改不报错,但是不生效

1个月前 评论

的确,使用nfs模式,主机里面的目录根本不会拷贝到虚拟机里。@xugege

1个月前 评论

开了nfs后目录所有者变root了.composer 和npm run watch-poll 会报io错误.你们有这情况吗?

2周前 评论
themeth 18小时前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!