解决 Windows 系统使用 Homestead 运行 Laravel 本地项目响应缓慢问题
我们有专门的 Wiki 文章,请查阅:Wiki:Laravel Homestead:开启 NFS 解决站点响应缓慢
注意: 此方法可能带来未知副作用,请操作之前务必备份原配置文件!!
使用 win7 电脑学习第二本教程,发现项目运行起来切换页面每次都要 7-10 s,很不正常啊,部署到服务器发现加载仅需要 200 ms 左右。
尝试过增加虚拟机配置, 但是没有任何效果, 经过验证也不是数据库的原因,通过网上查询了解到, 是因为 VirtualBox 的 IO 引起的。
解决方案是安装NFS Plugin ,参考文章(英文)
英文不好的小伙伴接着看 ~
首先,命令行进入 Homestead 启动 vagrant
> cd ~/Homestead && vagrant up
然后运行安装命令
$ vagrant plugin install vagrant-winnfsd

如上图,安装成功后修改配置文件
修改配置文件前建议先备份,以免修改后出现问题!
文件1:homestead/scripts/homestead.rb
# Register All Of The Configured Shared Folders
if settings.include? 'folders'
settings["folders"].each do |folder|
if File.exists? File.expand_path(folder["map"])
mount_opts = []
if (folder["type"] == "nfs")
mount_opts = folder["mount_options"] ? folder["mount_options"] : ['actimeo=1', 'nolock']
elsif (folder["type"] == "smb")
mount_opts = folder["mount_options"] ? folder["mount_options"] : ['vers=3.02', 'mfsymlinks']
end
# For b/w compatibility keep separate 'mount_opts', but merge with options
options = (folder["options"] || {}).merge({ mount_options: mount_opts })
# Double-splat (**) operator only works with symbol keys, so convert
options.keys.each{|k| options[k.to_sym] = options.delete(k) }
config.vm.synced_folder folder["map"], folder["to"], type: folder["type"] ||= nil, **options
# Bindfs support to fix shared folder (NFS) permission issue on Mac
if Vagrant.has_plugin?("vagrant-bindfs")
config.bindfs.bind_folder folder["to"], folder["to"]
end
else
config.vm.provision "shell" do |s|
s.inline = ">&2 echo \"Unable to mount one of your folders. Please check your folders in Homestead.yaml\""
end
end
end
end
查找此段代码(可能略有不同),替换为以下内容
if settings.include? 'folders'
settings["folders"].sort! { |a,b| a["map"].length <=> b["map"].length }
settings["folders"].each do |folder|
config.vm.synced_folder folder["map"], folder["to"],
id: folder["map"],
:nfs => true,
:mount_options => ['nolock,vers=3,udp,noatime']
end
end
文件2:Homestead.yaml
folders:
- map: ~/Code
to: /home/vagrant/Code
type: "nfs"
重启 Homestead 使配置文件生效,大功告成。再次运行项目响应时间已经正常了,希望帮助有相同情况的小伙伴!
本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由 Summer
于 7年前 加精
关于 LearnKu
高认可度评论:
已经增加至文档里 —— Windows 下的 Homestead 开发环境搭建
@leung0826 现在换域名了执行这个可以
vagrant plugin install vagrant-vbguest --plugin-clean-sources --plugin-source https://gems.ruby-china.com/
看到立马就搞了下, 效果还是可以的 不过我原来没那么慢 之前普通页面 2秒 左右的响应时间, 安装后基本在1秒左右 效果还不错.
@刘滔 哈哈,我的原来最慢的时候 十二秒。。。慢的吓人
@Yvan 现在好咯 再也不会被无数次的零零碎碎的等待消磨生命了... 点赞
已经增加至文档里 —— Windows 下的 Homestead 开发环境搭建
@Summer 感谢龙哥 :smiling_imp: 第二本教程学习一半了,真心强大,干货满满!期待你的安卓和IOS开发 ~
666,加载速度果然快很多
@黑将军 哈哈,也看下这样配置之后会不会有其他影响,目前我这边是一切正常!
@Yvan 目前好像没啥影响,一切正常,赞 :+1:
@黑将军
@Yvan 好气哦~ 你们都没事, 我这 storage 软链的图片就加载不了
@Toiu 文件夹权限问题?
sudo chmod -R 775 storage/@Yvan 看过了 是777的 我配置退回去原来的 重启又好了, 再搞过来 重启, 又挂了~
@Toiu laravel中通过url访问存储在storage下面的图片 ,或者搜索下,我直接存了张图片到这个文件夹好像也无法读取
我用软链的 而且 在正常模式下是可以访问到的, 应该不是路径的问题, 可能是配置中某种高端问题:smile:
@Toiu 我没有用软链,没发现这个问题 :joy:
@Yvan 兄弟,这个你是怎么发现的,能否给下你的思路,我觉得这个才是重点(最好是那种流水式小说体,比如:今天我搭建Homestead 跑了下larabbs发现页面加载很慢 1s-2s,但是在服务器上很快<80ms,我的电脑也是i7-7xxxK,性能也不输服务器的,但是我的系统是win10,难道是这个问题。。。。。。编不下去了)。兄弟,真的想知道,每次遇到这种奇奇怪怪的东西,你们是怎么想的,然后去怎么搜索答案,我们这类萌新该怎么做,要学什么。望大手给个思路啊
@lmaster 我也是萌新…… 学习 laravel 还不到 2 个月呢!很多东西还不理解,只是感觉如果项目在开发者的电脑上都不能流畅运行,那将来面对更低配的普通用户,体验是要多糟糕。然后部署上线(阿里云低配 ECS 服务器),发现页面加载时间仅仅200毫秒左右,这就证明了代码没问题,问题出在本地环境,家里使用 iMac 并没有出现这种情况,但在公司的 win 系统这么慢,然后就去度娘(英文太渣谷歌有压力啊)搜索 win系统运行laravel页面加载缓慢、 win7 Homestead 运行 laravel 页面加载缓慢 等等关键词去搜索,会有很多相关文章,多看几篇找到最普遍的解决方案,然后去亲自测试,备份好之前的文件,然后就折腾吧 ~ 问答区置顶文章 断言:不懂《提问的智慧》的人不会从初级程序员水平毕业 对我启发很大,强烈建议阅读 《提问的智慧》原文,解决问题的过程也是学习的过程,加油、共勉!也希望自己能在 2018 年转行进入 IT 行业!
你好,为什么我安装后更改完文件
vagrant reload重启后提示我忽略这个提示进入虚拟机后,
cd Code/后虚拟机就会卡住文件
homestead/scripts/homestead.rb:文件
Homestead.yaml:@sayhe110 不应该是
cd ~/Code吗?@Yvan 我虚拟机启动后目录是
~所以我直接cd /Code了,,,现在虚拟机就是会一直卡,这是咋回事@sayhe110 我也是萌新…… 搞不懂了 :joy:
@Summer 老大,
根据这个优化流程走了一遍反馈下我这边出现的已知问题:
首先页面加载确实比未优化前快很多,原先1-2S,现在已经降到80ms左右 :metal: ,但是严重的副作用是 browserSync 的同步刷新出现了严重的迟滞,会产生不定期的迟滞,经常要过5-6s才会反应过来并刷新 :rage:,我这边webpack.mix.js的代码配置如下:
经过多次尝试,发现只有不对文件:
homestead/scripts/homestead.rb文件进行修改,才能让 browserSync 恢复正常反应,但是页面的加载速度会保持在500ms左右,是否有两全其美的解决办法??WIN10本地开发 homestead真的慢的要死要死的, 这个用用看会快多少。
@Teles 记得备份,原来的配置文件~ 不知道会不会带来一些副作用。win 系统的坑好多啊,Mac 上就不用这样!
@Yvan 没事没事,,你已经很厉害了
这个问题....有遇到过的吗
install 被墙了怎么办?
我每次composer require都会都会报同样的错误,只有将vendor删除之后使用install才能恢复正常。


通过google搜索答案,发现另一个国外论坛这样解释(地址)
从图中可以知道通过
nfs会导致composr出现问题,虽然是一年前的回答,还是希望知道我这个错误到底是为什么(VirtualBox 5.2.8, vagrant 2.0.2)
用了一段时间,发现webpack打包有时候会失败
设置后每页总响应时间从600ms下降到470ms,还是有些作用,但不是特别明显
被强了怎么办?
试试这个
vagrant plugin install vagrant-vbguest --plugin-clean-sources --plugin-source https://gems.ruby-china.org/
赞一个,以前也用 Homestead 觉得响应很慢,现在用 docker 了,建议用 docker,速度更快!
@Yvan 后来发现并不是这里的坑. 删掉软链重新生成就好了 估计是修改之后映射的路径有不同的原因把~
@Toiu 问题解决了太好了~ 我还在担心这种方式会不会带来严重的副作用 ,哈哈!
@Yvan 当时脑袋抽了居然没想到是软链的问题, 就没使用了, 前两天突然闪过这个念头 试了一下 果然正常了.
@雷 已经解决了,原因是因为被墙了
发现一个副作用,优化之后 npm run dev 和 npm run watch-poll 有几率报错,大致原因是没有操作权限,而且sass的响应速度变得非常慢。
@Larry_Rui 看看这篇文章吧 分享:解决: Homestead 环境下, yarn install --no-bin-links, NPM run...
@Yvan 刚试过了,还是不行呀。yarn install --no-bin-links 这步编译就过不了,也是说权限问题,无法rm和cp,我使用sudo yarn install --no-bin-links才勉强通过编译,然后 npm run dev 和 npm run watch-poll 就会出现不稳定的故障,sass编译延迟也非常缓慢。把优化去掉就没这些问题了。
@sayhe110 你这个问题最后是如何解决的,没查到相关。早上来一直卡的不行,然后用了重启大法又可以了
@Leon1993 没有搞好,卡了的话我也是重启 :sweat:
@纸牌屋弗兰克 docker在window环境下好用吗 比如win7
@Toiu 非常好用
可以参考一下这个:https://blog.tanteng.me/2018/03/docker-dev...
@纸牌屋弗兰克 多谢推荐
@sayhe110 我把原来改的配置还原了之后现在正常了
@sayhe110
cd /Code指的是进入根目录的Code目录,你要把/去掉,在~目录下面cd Code就相当于在任何目录cd ~/Code了感谢
@纸牌屋弗兰克 win10 for docker 也有运行慢,同样的问题
@leung0826 总要比 Homestead 要快很多吧
win10 总是报错,我也没有解决好。。所以放弃了
@followyounger
是插件,安装失败了
@followyounger 解决了,插件安装好了之后,就没有问题了。
现在这个速度真的是超级快啊
@纸牌屋弗兰克 你用 laradock 么??
@Chasers9527 是啊,每天用
Mac下也不快,有什么办法优化吗
@纸牌屋弗兰克 我试了几次 然后放弃了,,,
最近电脑出现了一系列的问题,重装系统过后开始配置Laravel环境,使用该方法进行加速过后刷新网页出现 502 BadGateWay 的情况,找了半天,终于找到了问题,总之来说只怪自己没细心看提示,如果出现一样问题的朋友,记得一定要运行:$ vagrant provision
这个安装之后的确是快了很多,但是我发现这会导致yarn install --no-bin-links报错,本以为是其他原因,但是刚又故意测试了一下的确是因为安装了这个才会导致的,暂时还没找到解决办法,没有人和我遇到一样情况吗?
有没有人和我一样,初次安装vagrant-winnfsd使用没有问题,隔天重新启动的时候就这样了?
请教一下各位大大,怎么解决安装vagrant-winnfsd被墙问题?本机win10已经开了蓝灯~
安装之后出现这个情况!
使用nfs, 还想使用public_network, 有何解决办法
@ghmaga 我也是这样 有什么解决办法吗?
@leung0826 现在换域名了执行这个可以
vagrant plugin install vagrant-vbguest --plugin-clean-sources --plugin-source https://gems.ruby-china.com/
@Carlgao 感谢 安装上了
Mac 机器报错。
@韩槑槑
虽然时隔很久,仍忍不住发问,这到底是什么原理,难道真是WIN 10坑?
昨天我也出现了
composer安装第三方包失败,报错跟你一样,然后GOOGLE找到了跟你一样的论坛,最后把type:nfs删除就解决了。不理解其原理,其二是没了
nfs响应速度实在太慢了~@zgy0777 不清楚诶,没了
nfs慢就慢呗,反正也只是本地开发使用。感谢 @Carlgao 使用
vagrant plugin install vagrant-winnfsd --plugin-clean-sources --plugin-source https://gems.ruby-china.com/,解决了被墙问题,成功装上了这样配置了之后,ssh上去,直接在终端打开共享目录还是很慢 = = 有没有遇到终端打开目录很慢的啊,习惯在终端直接调试,ls半天出不来很难受....
@Teles 并没有吧..我的目前很稳定
@Kicoo 我也有遇到这个问题,把 nfs 模式去掉就不会报错,不知道你解决了吗?
用过的都说好!!!
Mac运行很慢,要怎么解决?
@Armin 哥们你解决了么?mac我运行超级慢,要十几秒
@韩槑槑 这个问题有解决么
@Morrow 不知道哈。我现在没有用
homestead了。shell provisioner:
pathfor shell provisioner does not exist on the host system: C:/Users/Shawn/Homestead/scripts/serve-nfs.sh@纸牌屋弗兰克 文章 里的PPT挂了 https://oddyzfr8z.qnssl.com/wp-content/upl...
@Morrow @韩槑槑 有个临时的方案,如果 composer 出现问题,先在 win10 里杀掉 NFS server for windows 这个进程,然后vagrant reload一下就好了,麻烦是麻烦点,但比去掉 nfs 慢的一比强啊
Windows 10 也可以吗, ntf
@heibai_2018 同样的问题,好像是window本地文件夹与虚拟机的文件夹的映射关系没连上,导致挂载失败了。目前还不知道怎么解决
@chengjiabing 你这情况,虚拟机的code文件夹下的项目也没了吧
@shaokeke 我也是同样的问题 你解决了吗?
重启出现如下问题
三四秒降到一百多毫秒。 好评!
@linwy 没有解决
速度是提升了,但是 命令行 进入 Code 会卡着不动了
@Yvan 进入 Code 目录会很卡着,你这边是怎么处理的,我返回原来配置,结果 自定义的域名 都只能访问 同一个 项目,求解决!!
我win10 装homestead 使用nfs后Code文件夹中文乱码,有人遇到过相同问题吗?
@Summer 为何要加,准备加速一下的,结果被告知已经是最高时速了 @@
如果出现 mount.nfs: Connection timed out 这种提示

请修改
Homestead目录下的Vagrantfile文件加入以下代码:
config.vm.network "private_network", type: "dhcp"
位置如下图所示:
修改完成后 你可能需要执行
vagrant provision && vagrant reload才能恢复正常具体请参考虚拟机打开时的提示
vagrant plugin install vagrant-winnfsd
安装好慢。。。
怎么解决?
写给跟我遇到一样问题的同学:
如果遇到了如下图所示的问题,就把homestead.rb和Homestead.yaml的所有TAB改为空格
这是因为我在复制版主的代码后,想格式化一下,结果不小心全都用tab键了.
参考链接:https://segmentfault.com/q/101000001054218...
可以使用 Notepad++ 自带的一键全部 TAB 转空格功能
安装完后修改完两个文件后就报错了,然后我把两个文件恢复,重启homestead。。好神奇。。居然好快。。
哇,试了一下,这种好贴应该早点找到 :+1:
按照楼主的教程,配置完后,直接提示,在访问原先的地址,提示:No input file specified.
按教程配置完提示 No input file specified 这是什么原因啊
为什么vagrant provision && vagrant reload 重启访问默认的项目打不开No input file specified.,教程的项目可以打开 ,难道是一个项目一个ip的原因?
我的配置为
谢谢
国内镜像安装
4-5s变成200ms,真香 :+1: :+1: