I have installed Laravel Homestead/Vagrant/Virtualbox
on Windows
as it said on official site
But it is really slow. Page update takes about 5 seconds.
And it is not only my observation. Laracast has a discussion about it.
The laracast forum has some interesting ideas, but it is a mess there (sorry Jeffery), it is hard to understand which ideas are accepted and which is declined.
Here on Stackoverflow we have a good voting system to vote up working solutions, and request authors to give more details for each solution individually. Please post your solutions and experiences.
From my experience - there was a situation once when windows run updates and shut down my system forcefully, and when it started it was incredibly fast (10 times faster at least) but after next restart it went slow again. Now I know that something may be done to speed it up, it is not a "slow hardware case
" it is a software config case!
Im using Windows-10 on Intel-Core-i7, with Oracle Virtualbox-5.2.12... (everything is latest and there is nothing to update)
NFS stands for Network File System
and you need it for speed.
Laravel homestead tutorial
does not say what NFS
is and why you need it, which is why I ignored it on the initial install.
1) On your Windows host, install the plugin that adds NFS support to vagrant in Windows.
$ vagrant plugin install vagrant-winnfsd
2) Go to Homestead.yaml
, it usually sits in C:\Users\username\Homestead\Homestead.yaml
3) Add type: "nfs"
in the folders section like so:
folders:
- map: ~/code
to: /home/vagrant/code
type: "nfs"
4) Run vagrant up --provision
Result:
The speed increases, as in @phazei's
answer, from 8 to 2 seconds for each request, but it is much less work. @phazei's
answer clarifies some background processes.
I tested it on windows 10 with Oracle Virtualbox-5.2.12, vagrant version-2.1.1.
Please note:
Vagrant NFS page says
Windows users: NFS folders do not work on Windows hosts. Vagrant will ignore your request for NFS synced folders on Windows.
But if you have the plugin, you can ignore it.
On laracasts forum the author named @phazei
has answered it 3 years ago
What he said was:
1) on your Windows host install plugin that adds NFS support to vagrant in Windows.
$ vagrant plugin install vagrant-winnfsd
2) find your homestead.rb
I found it in
C:\Users\username\Homestead\scripts
even though he suggested to look at
C:\Users\username\AppData\Roaming\Composer\vendor\laravel\homestead\scripts
3)
Find the section where it's already looping through the settings["folders"] and replace it with the nfs code.
for me it was somewhere about line 140.
So, I commented out all statement if settings.include? 'folders' ... end
and added this instead:
# EDIT:
# Reorder folders for winnfsd plugin compatilibty
# see https://github.com/GM-Alex/vagrant-winnfsd/issues/12#issuecomment-78195957
settings["folders"].sort! { |a,b| a["map"].length <=> b["map"].length }
# Register All Of The Configured Shared Folders
if settings.include? 'folders'
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
4) Then restarted vagrant with halt/up and my page load speed increased from 8 to 2 seconds.
Thank you @phazei
. Your answer is still working after 3 years.
PS
I tested it on windows 10 with Oracle Virtualbox-5.2.12, vagrant version-2.1.1.
PPS
You can run vagrant up --provision
, it will not affect the change you have made in homestead.rb