Vagrant nfs on windows

How to speed up Vagrant on Windows 10 using NFS 7 min read

Background

At work (FlexKids) I have a Windows 10 machine (at home I use both Ubuntu and Windows).
We don’t only Windows, we use OSX and Linux as well. To overcome this (not the only reason) we use Vagrant, Virtual box (CentOs 7) as a development environment. Thus we can ensure we all have the same dev-env.
All OSX users in my team don’t experience any performance issues, while I and other people who use Windows 10 have severe performance issues with Vagrant on Windows. Running simple commands like php artisan db:seed costs a lot of time. In addition, calling the endpoints using Postman takes more than 4 seconds which is crazy if you know that on OSX it takes barely 1 second to call the same endpoint.

In the beginning I thought it has to do with my setup and my machine specifically, because I use the machine I used during my graduation internship at Flexkids last year (was building a facial recognition API using TensorFlow and Flask ). I have used the vagrant machine to test my project for building and deployment purposes.
So I have deleted that old vagrant box and created a new vagrant box with zero customizations, however I had the same performance issues! Then I have decided to search online to find if people had the same issues as I do.
I have discovered it’s a known issue, if you don’t use NFS shared folders to sync between the host and the guest machine using Vagrant and VirtualBox, you will experience performance issues.

Vagrant

Vagrant can work with a couple of protocols/mechanisms for syncing folders:

It’s an acronym for Network File System (NFS) and it’s a distributed file system protocol which was developed by Sun Microsystems back in 1984. NFS allows us to access files over a network just like we access a local storage connected to our computer. NFS is faster than any other protocol and it’s It’s cross-platform protocol. NFS works also on Windows and OSX. NFS has many versions, the latest version is NFSv4.
It’s noteworthy that the official vagrant website says that NFS folders on windows doesn’t work :

https://www.vagrantup.com/docs/synced-folders/nfs.html

rsync

It’s a protocol for transferring and synchronizing files between a computer and and external hard drive and also over a computer network. It’s cross-platform protocol. rsync is developed by Wayne Davison back in 1996. rsync is only one-way.

It’s an acronym for Server Message Block (SMB), it’s used for file sharing and syncing. In addition, it’s also used for Network browsing and printing over a network. SMB is mainly used on Microsoft Windows. SMB was developed by Barry Feigenbaum at IBM back in 1983.

VirtualBox

I know it’s confusing to see VirtualBox, but if you use Vagrant with VirtualBox on Windows 10 and you don’t specify the sync type, then it will used VirtualBox shared folders as default synced folder type (which is extremely slow -_- )

To pump the performance of Vagrant on Windows 10, two things need to be done: the first one is editing your vagrant file; the second is to install Vagrant WinNFSd plugin. Note that we can’t use NFS Out-of-the-box with Vagrant on Windows 10.

1) Vagrant file

If you use Vagrant, then you must have vagrantfile which resides in the same folder as your vagrantbox. In vagrantfile you can specify many settings for your vagrant box. A clean vagrant file would look like (only synced_folder section)

You notice there is no sync type is specified, that means VirtualBox will be used if the host machine is Windows and you use VirtualBox. Using vagrant with these configurations is extremely slow, so we will just edit that section and add more options to ensure a better performance.

So we use now nfs as sync protocol for syncing files and folders between the guest and the host machine. As you see we have also added a bunch of options mount_options

rw read and write (two-ways synchronization)

async asynchronous mode

fsc force nfs to use fs-cache

nolock selects whether to use the NLM sideband protocol to lock files on the server. When using the nolock option, applications can lock files, but such locks provide exclusion only against other applications running on the same client. Remote applications are not affected by these locks.

vers=3 use the third version of nfs.

udp use udp protocol, you can also use tcp for transferring the files. TCP could be also used, and many claims tcp works faster. So you have to try both of them and see what works better in your case.

rsize=32768 the number of transferred bytes for writing. The value specified by this option is the maximum size that could be used; however, the actual size used may be smaller. Note: Setting this size to a value less than the largest supported block size will adversely affect performance.

wsize=32768 the number of transferred bytes for writing. The value specified by this option is the maximum size that could be used; however, the actual size used may be smaller. Note: Setting this size to a value less than the largest supported block size will adversely affect performance.

hard determines the recovery behavior of the NFS client after an NFS request times out. When hard is specified NFS requests are retried indefinitely.

noatime setting this value disables the NFS server from updating the inodes access time. As most applications do not necessarily need this value, you can safely disable this updating.

actimeo=2 the absolute time for which file and directory entries are kept in the file-attribute cache after an update.

2) Vagrant WinNFSd

WinNFSd is a vagrant plugin adds support for NFS to Windows. Here is a link to official Github repository https://github.com/winnfsd/vagrant-winnfsd.
To install the plugin, within the command line prompt (or GitBash if installed) just run the following command vagrant plugin install vagrant-winnfsd

After that just run the following command vagrant reload to reload your vagrant box.

Last words

For me using NFS on Windows 10 with Vagrant was really great, because overall performance just got better. Normally I had to wait more than 40 seconds for some http requests to the API inside the vagrant box, after using nfs I don’t have to wait more than a couple of seconds!

During my research on which mount_options to use, I stumbled upon many blog posts and some times with contradicted claims about some options, for example using udp or tcp. At the end you, you have to test it and try it out by yourself to know which options works better.

Читайте также:  Как очистить кэш системы windows

Vagrant nfs on windows

In some cases the default shared folder implementations (such as VirtualBox shared folders) have high performance penalties. If you are seeing less than ideal performance with synced folders, NFS can offer a solution. Vagrant has built-in support to orchestrate the configuration of the NFS server on the host and guest for you.

Windows users: NFS folders do not work on Windows hosts. Vagrant will ignore your request for NFS synced folders on Windows.

» Prerequisites

Before using synced folders backed by NFS, the host machine must have nfsd installed, the NFS server daemon. This comes pre-installed on Mac OS X, and is typically a simple package install on Linux.

Additionally, the guest machine must have NFS support installed. This is also usually a simple package installation away.

If you are using the VirtualBox provider, you will also need to make sure you have a private network set up. This is due to a limitation of VirtualBox’s built-in networking. With VMware, you do not need this.

» Enabling NFS Synced Folders

To enable NFS, just add the type: «nfs» flag onto your synced folder:

If you add this to an existing Vagrantfile that has a running guest machine, be sure to vagrant reload to see your changes.

» NFS Synced Folder Options

NFS synced folders have a set of options that can be specified that are unique to NFS. These are listed below. These options can be specified in the final part of the config.vm.synced_folder definition, along with the type option.

nfs_export (boolean) — If this is false, then Vagrant will not modify your /etc/exports automatically and assumes you’ve done so already.

nfs_udp (boolean) — Whether or not to use UDP as the transport. UDP is faster but has some limitations (see the NFS documentation for more details). This defaults to true.

nfs_version (string | integer) — The NFS protocol version to use when mounting the folder on the guest. This defaults to 3.

» NFS Global Options

There are also more global NFS options you can set with config.nfs in the Vagrantfile. These are documented below:

functional (bool) — Defaults to true. If false, then NFS will not be used as a synced folder type. If a synced folder specifically requests NFS, it will error.

map_uid and map_gid (int) — The UID/GID, respectively, to map all read/write requests too. This will not affect the owner/group within the guest machine itself, but any writes will behave as if they were written as this UID/GID on the host. This defaults to the current user running Vagrant.

verify_installed (bool) — Defaults to true. If this is false, then Vagrant will skip checking if NFS is installed.

» Specifying NFS Arguments

In addition to the options specified above, it is possible for Vagrant to specify alternate NFS arguments when mounting the NFS share by using the mount_options key. For example, to use the actimeo=2 client mount option:

This would result in the following mount command being executed on the guest:

You can also tweak the arguments specified in the /etc/exports template when the mount is added, by using the OS-specific linux__nfs_options or bsd__nfs_options keys. Note that these options completely override the default arguments that are added by Vagrant automatically. For example, to make the NFS share asynchronous:

This would result in the following content in /etc/exports on the host (note the added async flag):

» Root Privilege Requirement

To configure NFS, Vagrant must modify system files on the host. Therefore, at some point during the vagrant up sequence, you may be prompted for administrative privileges (via the typical sudo program). These privileges are used to modify /etc/exports as well as to start and stop the NFS server daemon.

If you do not want to type your password on every vagrant up , Vagrant uses thoughtfully crafted commands to make fine-grained sudoers modifications possible to avoid entering your password.

Below, we have a couple example sudoers entries. Note that you may have to modify them slightly on certain hosts because the way Vagrant modifies /etc/exports changes a bit from OS to OS. If the commands below are located in non-standard paths, modify them as appropriate.

Also note that in the sudoer file format, entries are applied in order. If you’ve added the appropriate entries but still have to type in your password, make sure the entries aren’t inserted too early. From the sudoers man page: «When multiple entries match for a user, they are applied in order. Where there are multiple matches, the last match is used (which is not necessarily the most specific match).»

For * nix users, make sure to edit your /etc/sudoers file with visudo . It protects you against syntax errors which could leave you without the ability to gain elevated privileges.

All of the snippets below require Vagrant version 1.7.3 or higher.

Use the appropriate group for your user Depending on how your machine is configured, you might need to use a different group than the ones listed in the examples below.

For OS X, sudoers should have this entry:

For Ubuntu Linux , sudoers should look like this:

For Fedora Linux, sudoers might look like this (given your user belongs to the vagrant group):

For SUSE Linux, sudoers might look like this (given your user belongs to the vagrant group):

If you don’t want to edit /etc/sudoers directly, you can create /etc/sudoers.d/vagrant-syncedfolders with the appropriate entries, assuming /etc/sudoers.d has been enabled.

» Other Notes

Encrypted folders: If you have an encrypted disk, then NFS very often will refuse to export the filesystem. The error message given by NFS is often not clear. One error message seen is

does not support NFS . There is no workaround for this other than sharing a directory which is not encrypted.

Version 4: UDP is generally not a valid transport protocol for NFSv4. Early implementations of NFS 4.0 still allowed UDP which allows the UDP transport protocol to be used in rare cases. RFC5661 explicitly states UDP alone should not be used for the transport protocol in NFS 4.1. Errors due to unsupported transport protocols for specific versions of NFS are not always clear. A common error message when attempting to use UDP with NFSv4:

When using NFSv4, ensure the nfs_udp option is set to false. For example:

For more information about transport protocols and NFS version 4 see:

» Troubleshooting NFS Issues

NFS issues may arise for a variety of reasons. The following list describes how to possibly identify the root of the issue.

Ensure nfs server is running on the host. Check if it is running using the command ps aux | grep nfsd . If the nfs service is not running, then it may require a manual restart.

Check status of nfs-kernel-server systemctl status nfs-kernel-server for errors like exportfs: Failed to stat /path : No such file or directory . Then create the missing directory or remove the line from /etc/exports and restart the nfs-kerne-server sysctemctl start nfs-kernel-server

If using Mac, ensure that /sbin/nfsd has been given Full Disk Access.

Читайте также:  Linux как посмотреть пароль wifi

Ensure the synced folder is present in the hosts /etc/exports file. If the target folder is not listed in /etc/exports , then ensure that the synced_folder option nfs_export is set to true , or manually add the entry.

Ensure that the contents of /etc/exports is valid. For example, if running nfsd, this can be done by running nfsd checkexports .

Ensure guest machine has a nfs client installed. The client may differ depending on the OS. If no nfs client is installed on the guest, then it may need to be installed.

Ensure the guest has access to the mounts. This can be done using something like the rpcinfo or showmount commands. For example rpcinfo -u nfs or showmount -e .

Ensure a firewall is not blocking NFS.

Try manually mounting the folder, enabling verbose output:

Vagrant для малышей, или как на Windows легко получить настроенный сервер для разработки веб-приложений

Здравствуй, мой дорогой любитель поработать с Composer’ом, создавая свой очередной крутой проект на одном из модных фреймворков. Или, быть может, ты — фронтэнд-мастер, пишущий сложные штуки на JS и CSS, компилируя их из jsx- и less-файлов, устанавливая библиотеки через Bower, а проект собирая в каком-нибудь Grunt, попутно прогоняя код юнит-тестами и, конечно же, заливая потом всё это на github… Если всё это — часть твоей повседневной жизни, то хвала Всевышнему, поздравляю: ты прошел все эти испытания и даже не сломал себе мозг. Отныне, ты — из числа тех счастливых, потративших не одну неделю, разбираясь в том, как корректно настроить всю эту кучу инструментов, а также, ты — один из тех, кто может доминировать, властвовать и унижать блистать своими знаниями в комментариях Хабра к статьям других, менее проворных и смышлёных коллег по цеху…

Но… быть может, ты — лишь один из тех, кто только мечтает о подобных извращениях манипуляциях мастеров разработки современных веб-приложений?) Тогда я спешу обрадовать тебя: я тут на днях узнал пару полезных вещей и понял, что это — настоящий подарок для начинающих разработчиков. И решил написать эту статью.

Уже несколько лет я слышу о Vagrant, да и ты, наверное, тоже краем уха слыхал об этом средстве для быстрого разворачивания настроенных виртуальных машин. Но, каждый раз, когда я читал очередную статью о Vagrant’е, меня отталкивала излишняя сложность инструкций к нему. Не люблю я забивать свою голову лишней информацией: как-то проще было всё это время ставить всё необходимое через «sudo apt-get install [program-name]» и вручную добавлять новые конфиги в nginx, беря за основу старые. Но, почитав на днях инструкцию в документации к Laravel, я понял, что всё не так уж и страшно, а желание обучить программированию своего знакомого стало последним фактором, из-за которого я всё-таки полез настраивать на своей машине Vagrant…

Разработчики Laravel создали свой образ виртуальной машины для Vagrant’а, который уже содержит в себе все средства и инструменты, необходимые тебе для счастливой разработки. В итоге, в совокупности с маленькой утилитой Homestead, также заботливо предоставляемой Laravel для работы с их образом, работать с ним реально проще простого. Список основных компонентов, установленных в их образе, можно посмотреть в документации. Среди прочих инструментов, не указанных в нём, числятся такие вещи, как, например, composer и git. В общем, там уже есть всё необходимое для тебя. Нам с тобой остаётся лишь немного разобраться в том, как работает Vagrant и Homestead и спокойно всё это дело использовать в своей повседневной работе.

И не обязательно использовать данный набор только для проектов, основанных на Laravel: скрипт Homestead предоставляет простые средства для ведения разработки сразу нескольких проектов, через простой файл конфигурации позволяя управлять базами данных и nginx-конфигурациями сервера. В итоге, мы получаем практически аналог Denwer’у, но при этом мы имеем дело с полноценным linux-сервером, которым, при необходимости, мы можем легко начать управлять вручную, и установить на него другие компоненты, и таким образом вырасти в более серьёзных и опытных разработчиков.

Предварительная настройка

По сути, всё, что надо сделать — это установить на свой компьютер VirtualBox и Vagrant и немного поковыряться с их настройкой. В статье я буду говорить только о Windows-пользователях, так как линуксоиды, я думаю, и сами всё смогут сделать по инструкциям в документациях. Конечно, всё не без проблем. Если ваше имя пользователя в системе Windows написано русскими буквами (как у меня), то приготовьтесь к ошибкам во время выполнения команд. В таком случае я рекомендую создать системную переменную среды VAGRANT_HOME с указанием папки без русских символов (не знаете, как это делается? почитайте об этом здесь, например), а также открыть настройки VirtualBox’а и указать папку хранения виртуальных машин, в которой тоже нет русских символов. Всё, теперь эти инструменты должны будут корректно работать и не выдавать ошибок.

Итак, основу мы для себя создали, пришло время написать немного команд 🙂 Жмём на клавиатуре клавиши Win+R, вбиваем в открывшееся окошко фразу «cmd», жмём Enter и попадаем в командную строку. Кстати, возможно, вам придётся перезагрузить машину после установки Vagrant, чтобы его команда стала доступна в консоли. Итак, для начала попробуем просто набрать слово «vagrant» в консоли и проверить, корректно ли установлен наш инструмент:

У меня всё нормально. Если возникли проблемы, то проверьте вашу переменную PATH, в ней должен быть путь к бинарнику Vagrant’а. И перезагрузите машину, если не сделали этого.

Дальше в официальной документации нам предлагают склонировать с помощью git или, что еще страшнее, установить через composer на свой компьютер библиотеку Homestead. У меня на винде нет ни git’а, ни, уж тем более, composer’а. И вообще: я эту виртуальную машину и собрался поставить себе как раз для того, чтобы избавить себя от ручной мороки с установкой всех этих инструментов… Поэтому, давай всё-таки не будем заниматься извращениями и просто, по старинке, скачаем zip-архив с github-страницы этой библиотеки на свой компьютер и распакуем его в какую-нибудь папочку 🙂

Распаковали? Теперь, чтобы установить библиотеку на компьютер, необходимо выполнить команду homestead init. Но вот снова беда: эта команда заработает у нас только тогда, когда на нашем компьютере будут установлены Composer и основные библиотеки Laravel. Другой вариант — это выполнить скрипт init.sh, лежащий тут же рядом, но для его выполнения нам всё равно нужен линуксовый интерпретатор. В общем, опять ставить кучу всякой всячины… Как видим, под виндой простого решения нет. Поэтому давай снова сделаем пару вещей вручную: откроем-ка содержимое файла init.sh и изучим его. Там всего 11 строк кода. Как видим, чтобы «установить» библиотеку, нам просто надо скопировать в папку

/.homestead несколько файлов (знак

обозначает домашнюю директорию текущего пользователя, у меня это «C:\Users\Ахмадуллин\»). Если проанализировать то, как работают их скрипты, то мы придём к выводу, что нам оттуда нужны следующие файлы:

    src/stubs/Homestead.yaml — в папку

/.homestead
src/stubs/after.sh — в папку

/.homestead
src/stubs/aliases — в папку

/.homestead

  • Vagrantfile
  • scripts/* (все файлы в этой папке)
  • Создай папку .homestead в домашней директории пользователя и скопируй в неё эти файлы: это будет папка с вашими управляющими скриптами, через которые мы будем управлять нашей виртуальной машиной. Кстати, ты не сможешь создать файл, который начинается с точки, через стандартный интерфейс Windows. Воспользуйся для решения этой задачи чем-нибудь вроде Far или Total Commander. Итак, в итоге, у меня получилась следующая картина:

    Воот… Совсем другое дело. Мы уже почти готовы к полноценной работе с нашей виртуальной машиной. Для доступа к нашей машине нам также нужно создать себе SSH-ключи. Тут нам поможет набор инструментов программы Putty, которую мы также впоследствии будем использовать для управления своим сервером. Скачаем программу PuttyGen и сгенерируем с помощью неё свои приватный и публичный ключи, и сохраним их в папку

    Читайте также:  Windows driver setup program

    /.ssh. Для генерации следует нажимать кнопку «Generate», после этого поводить немного мышкой по центру программы для генерации случайного ключа, и после этого можно сохранять свой ключ. Также, при сохранении, программа предложит заполнить «key passphrase» — но на данном этапе нам это не нужно, поэтому сохраняй свой ключ без пароля и не обращай внимание на то, что Putty будет предостерегать от создания подобного ключа. У нас ведь лишь тестовая машина, а не реальный боевой сервер, поэтому всё это не так страшно.

    Публичный ключ сохрани под следующим именем: «

    /.ssh/id_rsa.pub». При этом, приватный ключ нам необходимо сохранить в двух форматах: стандартном для Putty (кнопка Save private key, название файла —

    /.ssh/putty_private.ppk, например), и в формате OpenSSH (пункт «Export OpenSSH key» в меню Conversions, название файла должно быть «

    /.ssh/id_rsa»). Первый приватный ключ нам нужен для того, чтобы потом подключаться к серверу через программу Putty, а второй — для настройки и инициализации сервера через скрипты Homestead. В итоге, у нас должна получиться примерно такая картина с файлами ключей:

    Теперь лишь осталось указать некоторые настройки нашему серверу перед запуском, если в этом есть необходимость. Открой в любом редакторе файл Homestead.yaml. Это единственный файл настроек, через который мы можем указывать все основные параметры нашей виртуальной машины. Стандартные настройки уже неплохо написаны, и для начала нам тут и менять ничего не придётся, я лишь кратко объясню его содержимое: раздел «folders» указывает связь каталогов виртуальной машины и вашей реальной системы, чтобы ты мог легко редактировать файлы в виртуальной машине через свой любимый редактор в главной системе. Раздел «sites» — это настройки nginx, и опять же, всё очень просто: мы просто задаём связь домена и каталога на сервере. Раздел «databases» перечисляет названия баз данных, которые будут созданы при инициализации виртуальной машины. Вот, собственно, и всё, что вам надо знать о конфигурировании нашей системы.

    P.S. Да, и так как в разделе «folders» по умолчанию указана связь папки

    /Code с аналогичной папкой в виртуальной машине, то не забудь создать данную директорию в папке своего пользователя. Впоследствии, через неё мы сможем работать с файлами твоего сервера.

    P.P.S. И еще, имей ввиду, что формат yaml немного отличается своим подходом к хранению данных. Поэтому, если будешь добавлять туда свои параметры, учти, что количество пробелов здесь имеет значение, так как через них задаётся иерархия данных. Поэтому, устанавливай именно такие отступы к новым объектам, какие уже есть в файле. Более подробно можешь почитать о данном формате, например, в Википедии.

    Ну и, наконец, мы подошли к самому интересному…

    Запуск виртуального сервера

    /.homestead и выполни в ней магическую команду:

    Если ты всё сделал правильно, то у тебя начнётся загрузка VirtualBox-образа от разработчиков Laravel, и картина будет примерно такая:

    Если Vagant сообщил тебе о какой-либо проблеме, не отчаивайся: внимательно изучи текст ошибки и попробуй вбить её текст в Google. Скорее всего, есть уже множество людей, которые столкнулись с подобной проблемой и каким-либо образом решили её. Если образ успешно скачался на твой компьютер, и ошибка возникла во время загрузки машины, то попробуй открыть VirtualBox и запустить её вручную, без Vagrant’а, и посмотреть, что из этого выйдет. Vagrant — это, по сути, просто надстройка над VirtualBox, и ты можешь легко запустить собранную им виртуальную машину самостоятельно, если это будет надо.

    Если же всё пошло нормально… То, через несколько минут работы Vagrant’а твоя виртуальная машина полностью настроится и установит все необходимые компоненты и параметры. И ты уже сможешь спокойно подключиться к своему полноценному серверу. Для этого можно использовать, например, Putty.

    Подключение к серверу

    Давай скачаем файл putty.exe и подключимся с помощью него к нашему серверу. Настрой программу следующим образом: укажи адрес сервера, порт и пользователя, а также, в разделе «Connection -> SSH -> Auth» не забудь указать адрес к сгенерированному тобой приватному ключу, после чего сохрани все эти настройки в сессии под каким-нибудь названием, чтобы не вбивать их каждый раз при запуске программы, и смело жмякай кнопку «Open». Если ты был внимательным и всё сделал правильно, перед тобою откроется окно терминала твоего собственного виртуального сервера:

    P.S. на некоторых машинах была выявлена следующая проблема: Vagrant по какой-то причине не принимает созданный в Putty файл ключа и генерирует свой собственный, по его мнению, более безопасный. Ключ этот сохраняется по адресу «

    \.homestead\.vagrant\machines\default\virtualbox\private_key». Если у тебя не получается подключиться с помощью своего ключа к серверу, значит, тебе необходимо использовать ключ, сгенерированный Вагрантом. Перед тем как использовать его, снова открой программу PuttyGen, импортируй в неё созданный Вагрантом файл (пункт Conversions -> Import key) и сохрани в формате putty (кнопка «save private key»), и после этого используй данный файл для подключения к серверу через putty.

    Молодец, боец! Первый рубеж на пути покорения мира профессиональной разработки веб-приложений пройден. Теперь, давай напишем еще парочку команд и установим Laravel, просто для того, чтобы убедиться в том, что у нас на сервере всё корректно работает. Введи по очереди две следующие команды на своём сервере:

    И сходи попей чайку. Когда вернёшься, открой ту самую папку

    /Code, которую ты создавал в своей домашней директории, и если всё прошло нормально, то тебя там должен ожидать сюрприз 🙂

    Так-то: сервер пофурычил что-то у себя, и на выходе мы получили на своём настоящем компьютере папку Laravel со всеми необходимыми файлами фреймворка. Осталось сделать самую малость для того, чтобы увидеть наше приложение в браузере: открой файл hosts в режиме администратора, чтобы иметь возможность редактировать его, и добавь туда следующую строчку:

    А теперь открывай в браузере адрес homestead.app. Ну как, что видно? У меня вот такая картина:

    Если достаточно прищуриться, то можно разглядеть логотип Laravel 🙂 Ну, можно еще мышкой выделить буквы, так виднее будет. В качестве упражнения, давай немного исправим это. Ты можешь открыть файл «

    \Code\Laravel\resources\views\welcome.blade.php» и удалить оттуда строчки «color: #B0BEC5;» и «font-family: ‘Lato’;» в первых двадцати строках исходного кода. А потом сохранить этот файл и обновить свою страницу. Кажется, так стало лучше?)

    В общем-то, это практически всё. Если ты дошёл до данной части статьи, и у тебя всё получилось, это означает, что ты большой молодец, и у тебя теперь есть полноценный собственный веб-сервер, в котором для тебя уже собраны все необходимые для работы технологии. Осталось только немного рассказать о том, как его останавливать, обновлять его конфигурацию и полностью удалить из системы. Для этого используй следующие команды Vagrant’а, и не забудь, что при этом ты должен находиться в директории

    Всё написанное в данной статье — это очень краткое описание всех возможностей Vagrant’а, изучай официальную документацию и другие статьи по данному инструменту, если у тебя возникло желание разобраться в нём более глубоко. И советую также почитать комментарии к данной статье, там тоже иногда разные умные люди пишут полезные вещи. Ну и вот и всё. Кажется, статья закончена. Надеюсь, она принесёт пользу людям. И всего хорошего вам, дорогие разработчики 🙂

    Оцените статью