Laravel Homestead Performance mit NFS verbessern (NFS aktivieren)

Wer viel mit Laravel Homestead arbeitet wird hier und da mit Performance Problemen zu kämpfen haben. Alleine die Erhöhung der zugewiesenen CPU-Kerne und des RAMs in der Homestead.yaml reichen da nicht aus. Besonders langsam ist die Dateien-Synchronisation. Vor allem in der Frontend-Entwicklung, wo Live-Synchronisation eine große Rolle spielt, ist es wichtig, dass Dateiänderungen sofort übernommen werden.

Das Problem liegt bei VirtualBox und ihrem langsamen “shared folder system”. Die Lösung heißt “Network File System” (NFS), ein Protokoll für verteilte Dateisysteme und ist schnell zu installieren.
Vagrant bietet hier eine gute Dokumentation zu NFS, welches bei heutigen Betriebsystemen leider nicht out-of-the-box zur Verfügung steht.
Die Installation gestaltet sich in drei einfachen Schritten.

1) Installiert den NFS-Kernel

Unter Linux/MacOS steht es jedem zur Verfügung. Wer mit Windows unterwegs ist sollte sich WinNFSd  (von vagrant bereitgestellt) anschauen.

Loggt euch hierfür über vagrant ssh in Laravel Homestead ein. Dort führt ihr folgenden Befehl aus:

sudo apt-get install nfs-kernel-server

2) Passt eure Homestead.yaml an

Die Homestead.yaml findet ihr in der Regel unter ~/.homestead/Homestead.yaml
Hierfür müsst ihr euren zu synchronisierenden Ordnern den Typ “nfs” zuweisen:

folders:
- map: ~/Code/folders2sync
  to: /home/vagrant/projects
  type: "nfs"

3) Vagrant mit – – provision neustarten

Falls Homestead noch läuft: Verlasst Homestead mit exit und haltet die VM danach mit vagrant halt an.

Im Anschluss:

vagrant up --provision

Bei der Entwicklung von stomt konnten wir dadurch die gulp-task Ausführungen bei Script-Veränderungen von 1 Minute auf 3 Sekunden herunterschrauben.

Der Grund warum NFS nicht von vorne herein aktiviert ist liegt darin, dass NFS bei den Betriebsystemen nicht von Haus aus unterstützt wird und der hier genannte Schritt 1) notwendig ist.

Der Artikel ist angelehnt an den Beitrag in osteels Blog.