Windows环境下开启Vagrant的NFS

按照这篇文章安装了Homestead,但是网站打开的速度很慢。主要是windows下默认虚拟机共享文件夹的方式因为磁盘IO效率太低,可以让windows支持NFS方式共享文件夹给vagrant虚拟机来解决问题。
开始以为只需在folders选项下新增一个type: "nfs"配置即可,但是这对于windows来说是错误的 , 对于mac来说却是成功的, 原因vagrant不支持对windows开启nfs,具体参考synced-folders

好在有一个开源项目WinNFSd可以解决windows环境下支持nfs的问题。

安装

1
2
3
4
5
6
7
C:/Homestead > $vagrant plugin install vagrant-winnfsd
Installing the ‘vagrant-winnfsd’ plugin. This can take a few minutes…
Installed the plugin ‘vagrant-winnfsd (1.2.0)’!

C:/Homestead> $vagrant plugin list
vagrant-share (1.1.5, system)
vagrant-winnfsd (1.2.0)

NFS方式使用vagrant-winnfsd
Vagrantfile配置(C:\Homestead目录下)
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|下面加入

1
2
3
4
5
6
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|	
#nfs setting
config.vm.network "private_network", type: "dhcp"
config.winnfsd.logging = "off"
config.winnfsd.uid = 1
config.winnfsd.gid = 1

注:nfs setting这一段只能加在Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|下面,否则失败!

注意:有些情况下,在项目中使用sudo gulp watch的时候会报错:

1
2
3
4
5
6
7
8
9
10
vagrant@homestead:~/Code/blog$ sudo gulp
[23:41:53] Using gulpfile ~/Code/blog/gulpfile.js
[23:41:53] Starting 'all'...
[23:41:53] Starting 'sass'...
stream.js:74
throw er; // Unhandled stream error in pipe.
^

Error: EIO: i/o error, close
at Error (native)

只有关闭NFS(去掉Homestead.yaml中的type: "nfs"配置)才能恢复正常!
此篇文章 说是已经fix了这个bug,但是有些项目中仍然出现这个问题。

参考:
虚拟机使用Vagrant WinNFSd替换共享文件夹
How to enable NFS on Laravel Homestead
Speeding up Homestead on Windows Using NFS
如何在 Windows 上安装 Laravel Homestead
Homestead