Laravel Homestead/Vagrant/Virtualbox работает медленно на Windows

Я установил Laravel Homestead/Vagrant/Virtualbox на Windows как сказано на официальном сайте

Но это действительно медленно. Обновление страницы занимает около 5 секунд.

И это не только мое наблюдение. У Ларакаста есть обсуждение этого.

У форума laracast есть несколько интересных идей, но там беспорядок (извините, Джеффри), трудно понять, какие идеи приняты, а какие отклонены.

Здесь, в stackoverflow, у нас есть система голосования для голосования по рабочим решениям и просьба предоставить более подробную информацию для каждого решения в отдельности. Пожалуйста, оставьте свои решения и опыт.

Из моего опыта - однажды была ситуация, когда окна принудительно запускали обновления и выключали мою систему, и когда она запускалась, она была невероятно быстрой (по крайней мере, в 10 раз быстрее), но после следующего перезапуска она снова стала работать медленно. Теперь я знаю, что что-то может быть сделано, чтобы ускорить это, это не " slow hardware case ", это случай программного конфигурирования!

Я использую Windows-10 на Intel-Core-i7, с Oracle Virtualbox-5.2.12... (все самое последнее и обновлять нечего)

Ответы

Ответ 1

NFS означает " Network File System и вам нужна скорость.

В учебнике Laravel для домашних хозяйств не говорится, что такое NFS и зачем он вам нужен, поэтому я проигнорировал его при первоначальной установке.

1) На хосте Windows установите плагин, который добавляет поддержку NFS для vagrant в Windows.

$ vagrant plugin install vagrant-winnfsd

2) Перейдите в Homestead.yaml, он обычно находится в C:\Users\username\Homestead\Homestead.yaml

3) Добавить type: "nfs" в разделе папок, например, так:

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

4) Беги vagrant up --provision

Результат:

Как и в @phazei's скорость увеличивается с 8 до 2 секунд для каждого запроса, но это гораздо меньше работы. @phazei's проясняет некоторые фоновые процессы.

Я тестировал его на Windows 10 с Oracle Virtualbox-5.2.12, версия vagrant-2.1.1.

Обратите внимание: на странице Vagrant NFS написано

Пользователи Windows: папки NFS не работают на хостах Windows. Vagrant проигнорирует ваш запрос на синхронизацию папок NFS в Windows.

Но если у вас есть плагин, вы можете игнорировать его.

Ответ 2

На форуме laracasts, автор @phazei ответил 3 года назад

То, что он сказал, было:

1) на вашем хосте Windows установите плагин, который добавляет поддержку NFS к vagrant в Windows.

$ vagrant plugin install vagrant-winnfsd

2) найди свою homestead.rb

Я нашел это в

C:\Users\имя пользователя\Homestead\Сценарии

хотя он предложил посмотреть на

C:\Users\имя пользователя\AppData\Roaming\Composer\поставщика\Laravel\приусадебного\Сценарий

3)

Найдите раздел, где он уже просматривает настройки ["папки"], и замените его кодом nfs.

для меня это было где-то около линии 140.

Итак, я закомментировал все утверждения, if settings.include? 'folders'... end if settings.include? 'folders'... end

и добавил это вместо этого:

    # 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) Затем перезапустил vagrant с помощью halt/up, и скорость загрузки моей страницы увеличилась с 8 до 2 секунд.

Спасибо @phazei. Ваш ответ все еще работает через 3 года.

PS

Я тестировал его на Windows 10 с Oracle Virtualbox-5.2.12, версия vagrant-2.1.1.

PPS

Вы можете запустить vagrant up --provision, это не повлияет на изменения, внесенные вами в homestead.rb