Unetway

Laravel - Homestead

Вступление

Laravel стремится сделать весь процесс разработки PHP восхитительным, включая вашу локальную среду разработки. Vagrant предоставляет простой и элегантный способ управления и предоставления виртуальных машин.

Laravel Homestead - это официальный, предварительно упакованный пакет Vagrant, который предоставляет вам прекрасную среду разработки, не требуя установки PHP, веб-сервера и любого другого серверного программного обеспечения на локальном компьютере. Больше не нужно беспокоиться о том, чтобы испортить вашу операционную систему! Бродячие коробки полностью одноразовые. Если что-то пойдет не так, вы можете уничтожить и заново создать коробку за считанные минуты!

Homestead работает на любой системе Windows, Mac или Linux и включает в себя веб-сервер Nginx, PHP 7.3, PHP 7.2, PHP 7.1, MySQL, PostgreSQL, Redis, Memcached, Node и все другие вкусности, необходимые для разработки потрясающего Laravel. Приложения.

Если вы используете Windows, вам может потребоваться включить аппаратную виртуализацию (VT-x). Обычно его можно включить через BIOS. Если вы используете Hyper-V в системе UEFI, вам может потребоваться дополнительно отключить Hyper-V для доступа к VT-x.

 

Включенное программное обеспечение

  • Ubuntu 18.04
  • Git
  • PHP 7.3
  • PHP 7.2
  • PHP 7.1
  • Nginx
  • MySQL
  • lmm for MySQL or MariaDB database snapshots
  • Sqlite3
  • PostgreSQL
  • Composer
  • Node (With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • avahi
  • ngrok
  • Xdebug
  • XHProf / Tideways / XHGui
  • wp-cli
  • Minio

Дополнительное программное обеспечение

  • Apache
  • Crystal & Lucky Framework
  • Dot Net Core
  • Elasticsearch
  • Go
  • MariaDB
  • MongoDB
  • Neo4j
  • Oh My Zsh
  • Ruby & Rails
  • Webdriver & Laravel Dusk Utilities
  • Zend Z-Ray

 

Установка и настройка

Первые шаги

Перед запуском среды Homestead необходимо установить VirtualBox , VMWare , Parallels или Hyper-V, а также Vagrant . Все эти программные пакеты предоставляют простые в использовании визуальные установщики для всех популярных операционных систем.

Чтобы использовать провайдера VMware, вам необходимо приобрести как VMware Fusion / Workstation, так и плагин VMware Vagrant . Хотя это не является бесплатным, VMware может обеспечить более быструю производительность общих папок из коробки.

Чтобы использовать поставщика Parallels, вам необходимо установить плагин Parallels Vagrant . Это бесплатно.

Из-за ограничений Vagrant поставщик Hyper-V игнорирует все сетевые настройки.

Установка Усадьбы Vagrant Box

После того, как VirtualBox / VMware и Vagrant установлены, вы должны добавить коробку к вашей установке Vagrant, используя следующую команду в вашем терминале. Загрузка окна займет несколько минут, в зависимости от скорости вашего интернет-соединения:laravel/homestead

vagrant box add laravel/homestead

Если эта команда не выполнена, убедитесь, что ваша установка Vagrant обновлена.

Установка Усадьбы

Вы можете установить Homestead, клонировав репозиторий на свой хост-компьютер. Подумайте о клонировании репозитория в Homesteadпапку в вашем «домашнем» каталоге, поскольку блок Homestead будет служить хостом для всех ваших проектов Laravel:

git clone https://github.com/laravel/homestead.git ~/Homestead

Вам следует проверить версию Homestead с тегами, поскольку masterветка не всегда стабильна. Вы можете найти последнюю стабильную версию на странице релиза GitHub :

cd ~/Homestead

// Clone the desired release...
git checkout v8.4.0

После клонирования репозитория Homestead выполните команду из каталога Homestead, чтобы создать файл конфигурации. Файл будет размещен в каталоге Homestead:bash init.shHomestead.yamlHomestead.yaml

// Mac / Linux...
bash init.sh

// Windows...
init.bat

 

Настройка усадьбы

Настройка вашего провайдера

providerКлюч в вашем файле указывает , который должен быть использован поставщик Vagrant: , , , или . Вы можете установить это для поставщика, который вы предпочитаете:Homestead.yamlvirtualboxvmware_fusionvmware_workstationparallelshyperv

provider: virtualbox

Настройка общих папок

foldersСвойство файла перечислены все папки , которые вы хотите поделиться с окружающей средой Homestead. Поскольку файлы в этих папках изменяются, они будут синхронизироваться между вашим локальным компьютером и средой Homestead. Вы можете настроить столько общих папок, сколько необходимо:Homestead.yaml

folders:
    - map: ~/code
      to: /home/vagrant/code

Если вы создаете только несколько сайтов, это общее отображение будет работать просто отлично. Однако, поскольку количество сайтов продолжает расти, у вас могут возникнуть проблемы с производительностью. Эта проблема может быть болезненно очевидна на младших компьютерах или проектах, которые содержат очень большое количество файлов. Если у вас возникла эта проблема, попробуйте сопоставить каждый проект с его собственной папкой Vagrant:

folders:
    - map: ~/code/project1
      to: /home/vagrant/code/project1

    - map: ~/code/project2
      to: /home/vagrant/code/project2

Чтобы включить NFS , вам нужно всего лишь добавить простой флаг в конфигурацию вашей синхронизируемой папки:

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

 

При использовании NFS в Windows вы должны установить плагин vagrant-winnfsd . Этот плагин будет поддерживать правильные права пользователя / группы для файлов и каталогов в поле Homestead.

Вы также можете передать любые параметры, поддерживаемые синхронизированными папкамиVagrant, перечислив их под optionsключом:

folders:
    - map: ~/code
      to: /home/vagrant/code
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

Настройка сайтов Nginx

Не знакомы с Nginx? Нет проблем. sitesСвойство позволяет легко сопоставить «домен» в папку на среде Homestead. Пример конфигурации сайта включен в файл. Опять же, вы можете добавить столько сайтов в вашу среду Homestead, сколько необходимо. Homestead может служить удобной виртуализированной средой для каждого проекта Laravel, над которым вы работаете:Homestead.yaml

sites:
    - map: homestead.test
      to: /home/vagrant/code/my-project/public

Если вы измените sitesсвойство после предоставления поля Homestead, вам нужно будет повторно запустить его, чтобы обновить конфигурацию Nginx на виртуальной машине.vagrant reload --provision

 

Разрешение имени хоста

Homestead публикует имена хостов mDNSдля автоматического разрешения хостов. Если вы установили в своем файле, хост будет доступен по адресу . Настольные дистрибутивы MacOS, iOS и Linux включают поддержку по умолчанию. Windows требует установки Bonjour Print Services для Windows .hostname: homesteadHomestead.yamlhomestead.localmDNS

Использование автоматических имен хостов лучше всего подходит для установок Homestead «на проект». Если вы размещаете несколько сайтов в одном экземпляре Homestead, вы можете добавить «домены» для ваших веб-сайтов в hostsфайл на вашем компьютере. hostsФайл будет перенаправлять запросы на ваши Homestead сайтов в машину Homestead. В Mac и Linux этот файл находится по адресу . В Windows он находится по адресу . Строки, добавленные в этот файл, будут выглядеть следующим образом:/etc/hostsC:\Windows\System32\drivers\etc\hosts

192.168.10.10  homestead.test

Убедитесь, что IP-адрес указан в вашем файле. После того как вы добавили домен в свой файл и запустили окно Vagrant, вы сможете получить доступ к сайту через веб-браузер:Homestead.yamlhosts

http://homestead.test

 

Запуск Бродячей Коробки

Как только вы отредактируете файл по своему вкусу, запустите команду из каталога Homestead. Vagrant загрузит виртуальную машину и автоматически настроит ваши общие папки и сайты Nginx.Homestead.yamlvagrant up

Чтобы уничтожить машину, вы можете использовать команду.vagrant destroy --force

 

За установку проекта

Вместо того, чтобы устанавливать Homestead глобально и использовать один и тот же блок Homestead для всех своих проектов, вы можете вместо этого настроить экземпляр Homestead для каждого проекта, которым вы управляете. Установка Homestead для каждого проекта может быть полезной, если вы хотите отправить ее Vagrantfileвместе с вашим проектом, что позволяет другим, работающим над проектом, сделать это vagrant up.

Чтобы установить Homestead непосредственно в свой проект, потребуйте его с помощью Composer:

composer require laravel/homestead --dev

После установки Homestead, используйте makeкоманду для генерации Vagrantfileи файл в корневом каталоге проекта. Команда будет автоматически конфигурировать и директивы в файле.Homestead.yamlmakesitesfoldersHomestead.yaml

Mac / Linux:

php vendor/bin/homestead make

Окна:

vendor\\bin\\homestead make

Затем запустите vagrant upкоманду в своем терминале и получите доступ к своему проекту в браузере. Помните, что вам все равно нужно будет добавить запись файла или домен по вашему выбору, если вы не используете автоматическое разрешение имени хоста.http://homestead.test/etc/hostshomestead.test

 

Установка MariaDB

Если вы предпочитаете использовать MariaDB вместо MySQL, вы можете добавить mariadbопцию в свой файл. Эта опция удалит MySQL и установит MariaDB. MariaDB служит в качестве замены для MySQL, поэтому вы все равно должны использовать драйвер базы данных в конфигурации базы данных вашего приложения:Homestead.yamlmysql

box: laravel/homestead
ip: "192.168.10.10"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true

 

Установка MongoDB

Чтобы установить MongoDB Community Edition, обновите файл с помощью следующей опции конфигурации:Homestead.yaml

mongodb: true

Установка MongoDB по умолчанию установит имя пользователя базы данных homesteadи соответствующий пароль secret.

 

Установка Elasticsearch

Чтобы установить Elasticsearch, добавьте elasticsearchпараметр в свой файл и укажите поддерживаемую версию, которая может быть основной версией или точным номером версии (major.minor.patch). Установка по умолчанию создаст кластер с именем «усадьба». Никогда не следует предоставлять Elasticsearch больше половины памяти операционной системы, поэтому убедитесь, что на вашем компьютере Homestead выделено как минимум в два раза больше Elasticsearch:Homestead.yaml

box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox
elasticsearch: 6

Ознакомьтесь с документацией Elasticsearch, чтобы узнать, как настроить вашу конфигурацию.

 

Установка Neo4j

Neo4j - это система управления графической базой данных. Чтобы установить Neo4j Community Edition, обновите файл с помощью следующей опции конфигурации:Homestead.yaml

neo4j: true

Установка Neo4j по умолчанию установит имя пользователя базы данных homesteadи соответствующий пароль secret. Чтобы получить доступ к браузеру Neo4j, зайдите через веб-браузер. Порты (Bolt), (HTTP) и (HTTPS) готовы обслуживать запросы от клиента Neo4j.http://homestead.test:7474768774747473

 

Псевдонимы

Вы можете добавить псевдонимы Bash на свой компьютер Homestead, изменив aliasesфайл в своем каталоге Homestead:

alias c='clear'
alias ..='cd ..'

После того, как вы обновили aliasesфайл, вы должны заново подготовить компьютер Homestead с помощью команды. Это обеспечит доступность ваших новых псевдонимов на машине.vagrant reload --provision

 

Ежедневное использование

Доступ к усадьбе по всему миру

Иногда вам может понадобиться vagrant upваш компьютер Homestead из любой точки вашей файловой системы. Вы можете сделать это в системах Mac / Linux, добавив функцию Bash в свой профиль Bash. В Windows вы можете сделать это, добавив «пакетный» файл к себе PATH. Эти сценарии позволят вам выполнить любую команду Vagrant из любой точки вашей системы и автоматически направят эту команду на установку Homestead:

Mac / Linux

function homestead() {
    ( cd ~/Homestead && vagrant $* )
}

Обязательно настройте путь в функции к месту фактической установки Homestead. После того, как функция установлена, вы можете запускать такие команды, как или из любой точки вашей системы.~/Homesteadhomestead uphomestead ssh

Windows

Создайте командный файл в любом месте на вашем компьютере со следующим содержимым:homestead.bat

@echo off

set cwd=%cd%
set homesteadVagrant=C:\Homestead

cd /d %homesteadVagrant% && vagrant %*
cd /d %cwd%

set cwd=
set homesteadVagrant=

Обязательно настройте пример пути в сценарии к фактическому местоположению установки Homestead. После создания файла добавьте местоположение файла в свой . Затем вы можете запускать команды как или из любой точки вашей системы.C:\HomesteadPATHhomestead uphomestead ssh

 

Подключение через SSH

Вы можете подключиться к вашей виртуальной машине по SSH, введя команду vagrant sshтерминала из вашего каталога Homestead.

Но, поскольку вам, вероятно, потребуется часто использовать SSH на вашем компьютере Homestead, рассмотрите возможность добавления описанной выше «функции» на ваш хост-компьютер для быстрого SSH в поле Homestead.

 

Подключение к базам данных

homesteadБаза данных настроена как для MySQL и PostgreSQL из коробки. Для еще большего удобства .envфайл Laravel настраивает платформу для использования этой базы данных из коробки.

Чтобы подключиться к базе данных MySQL или PostgreSQL из клиента базы данных вашего хост-компьютера, вы должны подключиться и к порту (MySQL) или (PostgreSQL). Имя пользователя и пароль для обеих баз данных / .127.0.0.13306054320homesteadsecret

Эти нестандартные порты следует использовать только при подключении к базам данных с хост-компьютера. Вы будете использовать по умолчанию 3306 и 5432 порты в файле конфигурации базы данных Laravel поскольку Laravel работает в виртуальной машине.

 

Резервные копии базы данных

Homestead может автоматически создавать резервные копии вашей базы данных, когда ваш ящик Vagrant уничтожен. Чтобы использовать эту функцию, вы должны использовать Vagrant 2.1.0 или выше. Или, если вы используете более старую версию Vagrant, вы должны установить плагин. Чтобы включить автоматическое резервное копирование базы данных, добавьте в свой файл следующую строку :vagrant-triggersHomestead.yaml

backup: true

После настройки Homestead будет экспортировать ваши базы данных mysql_backupи postgres_backupкаталоги при выполнении vagrant destroyкоманды. Эти каталоги можно найти в папке, где вы клонировали Homestead, или в корне вашего проекта, если вы используете метод установки для каждого проекта .

 

Снимки базы данных

Homestead поддерживает замораживание состояния баз данных MySQL и MariaDB и ветвление между ними с помощью Logical MySQL Manager . Например, представьте, что вы работаете на сайте с базой данных в несколько гигабайт. Вы можете импортировать базу данных и сделать снимок. Проделав некоторую работу и создав тестовое содержимое локально, вы можете быстро восстановить исходное состояние.

Под капотом LMM использует функцию тонкого снимка LVM с поддержкой копирования при записи. На практике это означает, что изменение одной строки в таблице приведет только к тому, что сделанные вами изменения будут записаны на диск, что значительно сэкономит время и место на диске во время восстановления.

Поскольку lmmвзаимодействует с LVM, он должен быть запущен как root. Чтобы увидеть все доступные команды, запустите sudo lmmвнутри вашего Vagrant box. Общий рабочий процесс выглядит следующим образом:

  1. Импортируйте базу данных в masterветку lmm по умолчанию .
  2. Сохраните снимок неизмененной базы данных, используя .sudo lmm branch prod-YYYY-MM-DD
  3. Изменить базу данных.
  4. Запустите, чтобы отменить все изменения.sudo lmm merge prod-YYYY-MM-DD
  5. Запустите для удаления ненужных веток.sudo lmm delete <branch>

Добавление дополнительных сайтов

Как только ваша среда Homestead подготовлена ​​и запущена, вы можете добавить дополнительные сайты Nginx для своих приложений Laravel. В одной среде Homestead вы можете запустить столько установок Laravel, сколько пожелаете. Чтобы добавить дополнительный сайт, добавьте сайт в свой файл:Homestead.yaml

sites:
    - map: homestead.test
      to: /home/vagrant/code/my-project/public
    - map: another.test
      to: /home/vagrant/code/another/public

Если Vagrant не управляет вашим файлом hosts автоматически, вам может понадобиться добавить новый сайт в этот файл:

192.168.10.10  homestead.test
192.168.10.10  another.test

Как только сайт будет добавлен, запустите команду из вашего каталога Homestead.vagrant reload --provision

 

Типы сайтов

Homestead поддерживает несколько типов сайтов, которые позволяют легко запускать проекты, не основанные на Laravel. Например, мы можем легко добавить приложение Symfony в Homestead, используя symfony2тип сайта:

sites:
    - map: symfony2.test
      to: /home/vagrant/code/my-symfony-project/web
      type: "symfony2"

Доступные типы сайтов являются: apacheapigilityexpressivelaravel(по умолчанию), proxysilverstripestatamicsymfony2symfony4, и zf.

 

Параметры сайта

Вы можете добавить дополнительные fastcgi_paramзначения Nginx на свой сайт через paramsдирективу сайта. Например, мы добавим FOOпараметр со значением BAR:

sites:
    - map: homestead.test
      to: /home/vagrant/code/my-project/public
      params:
          - key: FOO
            value: BAR

 

Переменные среды

Вы можете установить глобальные переменные среды, добавив их в свой файл:Homestead.yaml

variables:
    - key: APP_ENV
      value: local
    - key: FOO
      value: bar

После обновления обязательно повторно подготовьте машину, запустив ее . Это обновит конфигурацию PHP-FPM для всех установленных версий PHP, а также обновит среду для пользователя.Homestead.yamlvagrant reload --provisionvagrant

 

Настройка расписаний Cron

Laravel предоставляет удобный способ планировать задания Cron , планируя выполнение одной команды Artisan каждую минуту. Команда проверит расписание заданий, определенное в вашем классе, чтобы определить, какие задания следует запускать.schedule:runschedule:runApp\Console\Kernel

Если вы хотите, чтобы команда запускалась для сайта Homestead, вы можете установить опцию при определении сайта:schedule:runscheduletrue

sites:
    - map: homestead.test
      to: /home/vagrant/code/my-project/public
      schedule: true

Задание Cron для сайта будет определено в папке виртуальной машины./etc/cron.d

 

Настройка Mailhog

Mailhog позволяет вам легко перехватить вашу исходящую электронную почту и проверить ее, не отправляя почту получателям. Для начала обновите .envфайл, чтобы использовать следующие настройки почты:

MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

После настройки Mailhog вы можете получить доступ к панели инструментов Mailhog по адресу .http://localhost:8025

 

Настройка Minio

Minio - это сервер хранения объектов с открытым исходным кодом с API-интерфейсом, совместимым с Amazon S3. Чтобы установить Minio, обновите файл с помощью следующей опции конфигурации:Homestead.yaml

minio: true

По умолчанию Minio доступен через порт 9600. Вы можете получить доступ к панели управления Minio, посетив страницу . Ключ доступа по умолчанию - это , а секретный ключ по умолчанию - . При доступе к Minio вы всегда должны использовать регион .http://homestead:9600/homesteadsecretkeyus-east-1

Чтобы использовать Minio, вам необходимо настроить конфигурацию диска S3 в файле конфигурации. Вам нужно будет добавить опцию в конфигурацию диска, а также изменить ключ на :config/filesystems.phpuse_path_style_endpointurlendpoint

's3' => [
    'driver' => 's3',
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION'),
    'bucket' => env('AWS_BUCKET'),
    'endpoint' => env('AWS_URL'),
    'use_path_style_endpoint' => true
]

Наконец, убедитесь, что ваш .envфайл имеет следующие параметры:

AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1
AWS_URL=http://homestead:9600

Чтобы подготовить контейнеры, добавьте bucketsдирективу в файл конфигурации Homestead:

buckets:
    - name: your-bucket
      policy: public
    - name: your-private-bucket
      policy: none

Поддерживаемые policyзначения: nonedownloadupload, и public.

 

Порты

По умолчанию следующие порты перенаправляются в вашу среду Homestead:

  • SSH: 2222 → Forwards To 22
  • ngrok UI: 4040 → Forwards To 4040
  • HTTP: 8000 → Forwards To 80
  • HTTPS: 44300 → Forwards To 443
  • MySQL: 33060 → Forwards To 3306
  • PostgreSQL: 54320 → Forwards To 5432
  • MongoDB: 27017 → Forwards To 27017
  • Mailhog: 8025 → Forwards To 8025
  • Minio: 9600 → Forwards To 9600

Переадресация дополнительных портов

При желании вы можете перенаправить дополнительные порты в окно Vagrant, а также указать их протокол:

ports:
    - send: 50000
      to: 5000
    - send: 7777
      to: 777
      protocol: udp

 

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

Иногда вы можете поделиться тем, над чем вы сейчас работаете, с коллегами или клиентом. Vagrant имеет встроенный способ поддержки этого через vagrant share; однако это не будет работать, если в вашем файле настроено несколько сайтов .Homestead.yaml

Чтобы решить эту проблему, Homestead включает в себя собственную shareкоманду. Чтобы начать, вставьте SSH в свою машину Homestead vagrant sshи запустите . Это позволит поделиться сайтом из вашего файла конфигурации. Вы можете заменить любой другой настроенный вами сайт на :share homestead.testhomestead.testHomestead.yamlhomestead.test

share homestead.test

После выполнения команды вы увидите экран Ngrok, который содержит журнал активности и общедоступные URL-адреса для общего сайта. Если вы хотите указать пользовательский регион, поддомен или другой параметр времени выполнения Ngrok, вы можете добавить их в свою shareкоманду:

share homestead.test -region=eu -subdomain=laravel

Помните, что Vagrant по своей природе небезопасен, и вы запускаете shareкоманду для своей виртуальной машины в Интернете .

 

Несколько версий PHP

Homestead 6 представил поддержку нескольких версий PHP на одной виртуальной машине. Вы можете указать, какую версию PHP использовать для данного сайта в вашем файле. Доступные версии PHP: «7.1», «7.2» и «7.3» (по умолчанию):Homestead.yaml

sites:
    - map: homestead.test
      to: /home/vagrant/code/my-project/public
      php: "7.1"

Кроме того, вы можете использовать любую из поддерживаемых версий PHP через CLI:

php7.1 artisan list
php7.2 artisan list
php7.3 artisan list

 

Веб-серверы

Homestead по умолчанию использует веб-сервер Nginx. Однако он может установить Apache, если apacheуказан тип сайта. Хотя оба веб-сервера могут быть установлены одновременно, они не могут работать одновременно. flipКоманда оболочки доступна для упрощения процесса переключения между веб - серверами. Команда flipавтоматически определяет, какой веб-сервер запущен, отключает его, а затем запускает другой сервер. Чтобы использовать эту команду, введите SSH на свой компьютер Homestead и выполните команду на своем терминале:

flip

 

Почта

Homestead включает в себя агент передачи почты Postfix, который 1025по умолчанию прослушивает порт . Таким образом, вы можете указать приложению использовать smtpпочтовый драйвер для localhostпорта 1025. Затем вся отправленная почта будет обработана Postfix и перехвачена Mailhog. Чтобы просмотреть отправленные письма, откройте http://localhost:8025 в своем веб-браузере.

 

Отладка и профилирование

Отладка веб-запросов с помощью Xdebug

Homestead включает поддержку пошаговой отладки с помощью Xdebug . Например, вы можете загрузить веб-страницу из браузера, и PHP подключится к вашей IDE, чтобы разрешить проверку и изменение работающего кода.

Чтобы включить отладку, запустите следующие команды в вашем окне Vagrant:

sudo phpenmod xdebug

# Update this command to match your PHP version...
sudo systemctl restart php7.3-fpm 

Далее следуйте инструкциям вашей IDE, чтобы включить отладку. Наконец, настройте ваш браузер на запуск Xdebug с расширением или букмарклетом .

Xdebug заставляет PHP работать значительно медленнее. Чтобы отключить Xdebug, запустите приложение sudo phpdismod xdebugVagrant и перезапустите службу FPM.

 

Отладка приложений CLI

Чтобы отладить приложение PHP CLI, используйте xphpпсевдоним оболочки внутри вашего Vagrant box:

xphp path/to/script

Автозапуск Xdebug

При отладке функциональных тестов, выполняющих запросы к веб-серверу, проще запустить автоматическую отладку, чем изменять тесты для прохождения через пользовательский заголовок или файл cookie для запуска отладки. Чтобы заставить Xdebug запускаться автоматически, измените его в окне Vagrant и добавьте следующую конфигурацию:/etc/php/7.#/fpm/conf.d/20-xdebug.ini

; If Homestead.yml contains a different subnet for the IP address, this address may be different...
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 1

Профилирование производительности PHP с использованием XHGui

XHGui - это пользовательский интерфейс для изучения производительности ваших PHP-приложений. Чтобы включить XHGui, добавьте в конфигурацию своего сайта:xhgui: 'true'

sites:
    -
        map: your-site.test
        to: /home/vagrant/code/web
        type: "apache"
        xhgui: 'true'

Если сайт уже существует, запустите его vagrant provisionпосле обновления конфигурации.

Чтобы профилировать веб-запрос, добавьте его в качестве параметра запроса. XHGui автоматически прикрепит cookie к ответу, чтобы последующим запросам не требовалось значение строки запроса. Вы можете просмотреть результаты своего профиля приложения, перейдя к .xhgui=onhttp://your-site.test/xhgui

Чтобы профилировать запрос CLI с использованием XHGui, добавьте к команде префикс :XHGUI=on

XHGUI=on path/to/script

Результаты профиля CLI можно просматривать так же, как результаты профиля веб-сайта.

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

Поскольку профили производительности занимают значительное дисковое пространство, они удаляются автоматически через несколько дней.

 

Сетевые интерфейсы

networksСвойство сетевых интерфейсов конфигурирует для вашей среды Homestead. Вы можете настроить столько интерфейсов, сколько необходимо:Homestead.yaml

networks:
    - type: "private_network"
      ip: "192.168.10.20"

Чтобы включить мостовой интерфейс, настройте bridgeпараметр и измените тип сети на public_network:

networks:
    - type: "public_network"
      ip: "192.168.10.20"
      bridge: "en1: Wi-Fi (AirPort)"

Чтобы включить DHCP , просто удалите эту ipопцию из вашей конфигурации:

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"

 

Расширение Усадьбы

Вы можете расширить Homestead, используя скрипт в корневом каталоге вашего Homestead. В этом файле вы можете добавить любые команды оболочки, которые необходимы для правильной настройки и настройки вашей виртуальной машины.after.sh

При настройке Homestead Ubuntu может спросить вас, хотите ли вы сохранить исходную конфигурацию пакета или перезаписать ее новым файлом конфигурации. Чтобы избежать этого, вы должны использовать следующую команду при установке пакетов, чтобы избежать перезаписи любой конфигурации, ранее написанной Homestead:

sudo apt-get -y \
    -o Dpkg::Options::="--force-confdef" \
    -o Dpkg::Options::="--force-confold" \
    install your-package

Настройки пользователя

При использовании Homestead в командных условиях вы можете настроить Homestead, чтобы он лучше подходил вашему стилю личного развития. Вы можете создать файл в корне вашей директории Homestead (той же директории, где находится ваша ). В этом файле вы можете сделать любую настройку, какую захотите; однако, не должен контролироваться по версии.user-customizations.shHomestead.yamluser-customizations.sh

 

Обновление Усадьбы

Вы можете обновить Homestead в несколько простых шагов. Во-первых, вы должны обновить окно Vagrant с помощью vagrant box updateкоманды:

vagrant box update

Далее вам необходимо обновить исходный код Homestead. Если вы клонировали репозиторий, вы можете выполнить следующие команды в том месте, где вы изначально клонировали репозиторий:

git fetch

git checkout v8.4.0

Эти команды извлекают последний код Homestead из репозитория GitHub, извлекают последние теги, а затем извлекают последнюю версию с тегами. Вы можете найти последнюю стабильную версию на странице релизов GitHub .

Если вы установили Homestead через файл вашего проекта , вы должны убедиться, что ваш файл содержит и обновить ваши зависимости:composer.jsoncomposer.json"laravel/homestead": "^8"

composer update

Наконец, вам нужно будет уничтожить и регенерировать свою коробку Homestead, чтобы использовать последнюю версию Vagrant. Для этого выполните следующие команды в своем каталоге Homestead:

vagrant destroy

vagrant up

 

Настройки провайдера

VirtualBox

natdnshostresolver

По умолчанию Homestead настраивает natdnshostresolverнастройку на on. Это позволяет Homestead использовать настройки DNS вашей операционной системы. Если вы хотите изменить это поведение, добавьте следующие строки в ваш файл:Homestead.yaml

provider: virtualbox
natdnshostresolver: 'off'

Символические ссылки в Windows

Если символические ссылки не работают должным образом на вашем компьютере с Windows, вам может потребоваться добавить следующий блок в ваш Vagrantfile:

config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end