web-dev-qa-db-fra.com

Laravel Homestead / Vagrant / Virtualbox est lent sous Windows

J'ai installé Laravel Homestead/Vagrant/Virtualbox sur Windows comme il était dit sur site officiel

Mais c'est vraiment lent. La mise à jour de la page prend environ 5 secondes.

Et ce n'est pas seulement mon observation. Laracast a une discussion à ce sujet.

Le forum laracast a quelques idées intéressantes, mais c'est un gâchis là-bas (désolé Jeffery), il est difficile de comprendre quelles idées sont acceptées et lesquelles sont refusées.

Ici, sur Stackoverflow, nous avons un bon système de vote pour voter sur les solutions de travail, et demandons aux auteurs de donner plus de détails pour chaque solution individuellement. Veuillez poster vos solutions et expériences.

D'après mon expérience - il y avait une fois une fois où Windows exécutait des mises à jour et arrêtait mon système avec force, et quand il a commencé, il était incroyablement rapide (10 fois plus rapide au moins) mais après le redémarrage suivant, il est redevenu lent. Maintenant je sais que quelque chose peut être fait pour l'accélérer, ce n'est pas un "slow hardware case "c'est un cas de configuration logicielle!

J'utilise Windows-10 sur Intel-Core-i7, avec Oracle Virtualbox-5.2.12 ... (tout est le dernier et il n'y a rien à mettre à jour)

11

NFS signifie Network File System et vous en avez besoin pour la vitesse.

Laravel Homestead tutorial ne dit pas ce qu'est NFS et pourquoi vous en avez besoin, c'est pourquoi je l'ai ignoré lors de l'installation initiale.

1) Sur votre hôte Windows, installez le plugin qui ajoute la prise en charge NFS à vagrant dans Windows.

$ vagrant plugin install vagrant-winnfsd

2) Allez à Homestead.yaml, il se trouve généralement dans C:\Users\username\Homestead\Homestead.yaml

3) Ajoutez type: "nfs" dans la section des dossiers comme ceci:

folders:
    - map: ~/code
      to: /home/vagrant/code
      type: "nfs"

4) Exécutez vagrant up --provision

Résultat:

La vitesse augmente, comme dans @phazei's réponse, de 8 à 2 secondes pour chaque demande, mais c'est beaucoup moins de travail. @phazei's la réponse clarifie certains processus d'arrière-plan.

Je l'ai testé sur Windows 10 avec Oracle Virtualbox-5.2.12, vagrant version-2.1.1.

Veuillez noter: page NFS vagabonde dit

Utilisateurs Windows: les dossiers NFS ne fonctionnent pas sur les hôtes Windows. Vagrant ignorera votre demande de dossiers synchronisés NFS sous Windows.

Mais si vous avez le plugin, vous pouvez l'ignorer.

21

Sur laracasts forum l'auteur nommé @phazei y a répondu il y a 3 ans

Il a dit:

1) sur votre plugin d'installation Windows Host qui ajoute la prise en charge NFS à vagrant dans Windows.

$ vagrant plugin install vagrant-winnfsd

2) trouvez votre Homestead.rb

Je l'ai trouvé dans

C:\Users\nom d'utilisateur\Homestead\scripts

même s'il a suggéré de regarder

C:\Users\username\AppData\Roaming\Composer\vendor\laravel\Homestead\scripts

3)

Recherchez la section où il est déjà en boucle à travers les paramètres ["dossiers"] et remplacez-le par le code nfs.

pour moi, c'était quelque part vers la ligne 140.

J'ai donc commenté toutes les déclarations if settings.include? 'folders' ... end

et l'ajoute à la place:

    # 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) Puis j'ai redémarré vagabond avec stop/up et la vitesse de chargement de ma page est passée de 8 à 2 secondes.

Merci @phazei. Votre réponse fonctionne toujours après 3 ans.

PS

Je l'ai testé sur Windows 10 avec Oracle Virtualbox-5.2.12, vagrant version-2.1.1.

PPS

Tu peux courir vagrant up --provision, cela n'affectera pas la modification que vous avez apportée à Homestead.rb

6