Версия фреймворка: 8.x 5.4 4.2
Это скорректированный автоматический перевод, сделанный при помощи google translate.

Laravel Homestead

Введение

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

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

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

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

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

- Ubuntu 20.04 - Git - PHP 8.0 - PHP 7.4 - PHP 7.3 - PHP 7.2 - PHP 7.1 - PHP 7.0 - PHP 5.6 - Nginx - MySQL (8.0) - lmm - Sqlite3 - PostgreSQL (9.6, 10, 11, 12, 13) - Composer - Node (With Yarn, Bower, Grunt, and Gulp) - Redis - Memcached - Beanstalkd - Mailhog - avahi - ngrok - Xdebug - XHProf / Tideways / XHGui - wp-cli

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

- Apache - Blackfire - Cassandra - Chronograf - CouchDB - Crystal & Lucky Framework - Docker - Elasticsearch - EventStoreDB - Gearman - Go - Grafana - InfluxDB - MariaDB - Meilisearch - MinIO - MongoDB - Neo4j - Oh My Zsh - Open Resty - PM2 - Python - R - RabbitMQ - RVM (Ruby Version Manager) - Solr - TimescaleDB - Trader (PHP extension) - Webdriver & Laravel Dusk Utilities

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

Первые шаги

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

Все эти программные пакеты предоставляют простые в использовании визуальные установщики для всех популярных операционных систем.

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

Установка Homestead

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

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

После клонирования репозитория Laravel Homestead вы должны проверить ветку release. Эта ветка всегда содержит последний стабильный выпуск Homestead:

cd ~/Homestead

git checkout release

Затем выполните команду bash init.sh из каталога Homestead, чтобы создать файл конфигурации Homestead.yaml. Файл Homestead.yaml - это то место, где вы настраиваете все параметры установки Homestead. Этот файл будет помещен в каталог Homestead:

// macOS / Linux...
bash init.sh

// Windows...
init.bat

Настройка Homestead

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

Ключ provider в файле Homestead.yaml указывает, какой провайдер Vagrant следует использовать: virtualbox или parallels:

provider: virtualbox

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

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

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
Пользователи Windows, при указании пути не должны использовать синтаксис ~/, а вместо этого должны указать полный путь к своему проекту от корня диска, например C:\Users\user\Code\project1.

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

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
    - map: ~/code/project2
      to: /home/vagrant/project2
Вы никогда не должны монтировать . (текущий каталог) при использовании Homestead. Это приводит к тому, что Vagrant не отображает текущую папку в /vagrant, что нарушает работу дополнительных функций и приводит к неожиданным результатам при подготовке.

Чтобы включить NFS, вы можете добавить параметр type при сопоставлении папок:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "nfs"
При использовании NFS в Windows вам следует рассмотреть возможность установки подключаемого модуля vagrant-winnfsd. Этот плагин будет поддерживать правильные разрешения пользователя / группы для файлов и каталогов на виртуальной машине Homestead.

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

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

Настройка Nginx

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

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public

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

Скрипты Homestead созданы максимально идемпотентными. Однако, если у вас возникли проблемы во время подготовки, вам следует удалить и повторно запустить виртуальную машину, выполнив команду vagrant destroy && vagrant up.

Определение имени хоста

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

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

192.168.10.10  homestead.test

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

http://homestead.test

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

По умолчанию Homestead запускает несколько сервисов; однако вы можете настроить, какие службы будут включены или отключены во время подготовки. Например, вы можете включить PostgreSQL и отключить MySQL, изменив параметр services в файле Homestead.yaml:

services:
    - enabled:
        - "postgresql@12-main"
    - disabled:
        - "mysql"

Указанные службы будут запускаться или останавливаться в зависимости от их порядка в директивах enabledи disabled.

Запуск Vagrant Box

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

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

Подготовка к установке

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

Вы можете установить Homestead в свой проект с помощью диспетчера пакетов Composer:

composer require laravel/homestead --dev

Как только Homestead будет установлен, вызовите команду Homestead make, чтобы сгенерировать файлы Vagrantfile и Homestead.yaml для вашего проекта. Эти файлы будут помещены в корень проекта. Команда make автоматически настроит директивы sites и folder в файле Homestead.yaml:

// macOS / Linux...
php vendor/bin/homestead make

// Windows...
vendor\\bin\\homestead make

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

Установка дополнительных пакетов

Дополнительное программное обеспечение устанавливается с помощью опции features в файле Homestead.yaml. Большинство функций можно включить или отключить с помощью логического значения, в то время как некоторые функции позволяют использовать несколько параметров конфигурации:

features:
    - blackfire:
        server_id: "server_id"
        server_token: "server_value"
        client_id: "client_id"
        client_token: "client_value"
    - cassandra: true
    - chronograf: true
    - couchdb: true
    - crystal: true
    - docker: true
    - elasticsearch:
        version: 7.9.0
    - eventstore: true
        version: 21.2.0
    - gearman: true
    - golang: true
    - grafana: true
    - influxdb: true
    - mariadb: true
    - meilisearch: true
    - minio: true
    - mongodb: true
    - neo4j: true
    - ohmyzsh: true
    - openresty: true
    - pm2: true
    - python: true
    - r-base: true
    - rabbitmq: true
    - rvm: true
    - solr: true
    - timescaledb: true
    - trader: true
    - webdriver: true

Elasticsearch (поисковая система)

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

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

MariaDB

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

MongoDB

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

Neo4j

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

Псевдонимы

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

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

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

Обновление Homestead

Перед тем, как начать обновление Homestead, убедитесь, что вы удалили текущую виртуальную машину, выполнив следующую команду в каталоге Homestead:

vagrant destroy

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

git fetch

git pull origin release

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

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

composer update

Затем вы должны обновить поле Vagrant с помощью команды vagrant box update:

vagrant box update

После обновления Vagrant вы должны запустить команду bash init.sh из каталога Homestead, чтобы обновить дополнительные файлы конфигурации Homestead. Затем вас спросят, хотите ли вы перезаписать существующие файлы Homestead.yaml, after.sh и aliases:

// macOS / Linux...
bash init.sh

// Windows...
init.bat

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

vagrant up

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

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

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

Добавление сайтов

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

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
    - map: another.test
      to: /home/vagrant/project2/public
Перед добавлением сайта убедитесь, что вы настроили сопоставление папок для каталога проекта.

Если Vagrant не управляет вашим файлом «hosts» автоматически, вам может потребоваться также добавить новый сайт в этот файл. В macOS и Linux этот файл находится в /etc/hosts. В Windows он находится в C:\Windows\System32\drivers\etc\hosts:

192.168.10.10  homestead.test
192.168.10.10  another.test

После добавления сайта выполните команду терминала vagrant reload --provision из каталога Homestead.

Типы сайтов

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

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

Доступные типы сайтов: apache, apigility, expressive, laravel (по умолчанию), proxy, silverstripe, statamic, symfony2, symfony4, and zf.

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

Вы можете добавить дополнительные значения fastcgi_param Nginx на свой сайт с помощью директивы сайта params:

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

Настройка окружения

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

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

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

Порты

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

  • SSH: 2222 → перенаправляется на 22
  • ngrok UI: 4040 → перенаправляется на 4040
  • HTTP: 8000 → перенаправляется на 80
  • HTTPS: 44300 → перенаправляется на 443
  • MySQL: 33060 → перенаправляется на 3306
  • PostgreSQL: 54320 → перенаправляется на 5432
  • MongoDB: 27017 → перенаправляется на 27017
  • Mailhog: 8025 → перенаправляется на 8025
  • Minio: 9600 → перенаправляется на 9600

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

Вы можете перенаправить дополнительные порты в контейнер Vagrant, указав запись ports в конфигурационном файле Homestead.yaml. После обновления файла Homestead.yaml не забудьте повторно перезагрузить виртуальную машину, выполнив команду vagrant reload --provision:

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

Версии PHP

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

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      php: "7.1"

На виртуальной машине Homestead вы можете использовать любую из поддерживаемых версий PHP через интерфейс командной строки:

php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
php7.2 artisan list
php7.3 artisan list
php7.4 artisan list
php8.0 artisan list

Вы можете изменить версию PHP по умолчанию, используемую CLI, выполнив следующие команды на своей виртуальной машине Homestead:

php56
php70
php71
php72
php73
php74
php80

Соединение с базой данных

База данных homestead настраивается как для MySQL, так и для PostgreSQL из коробки. Чтобы подключиться к вашей базе данных MySQL или PostgreSQL из клиента вашего хост-компьютера, вы должны подключиться к 127.0.0.1 через порт 33060 (MySQL) или 54320 (PostgreSQL). Имя пользователя и пароль для обеих баз данных - homestead / secret.

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

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

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

backup: true

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

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

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

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

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

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

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

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

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

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      schedule: true

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

Настройка MailHog

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

MAIL_MAILER=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, указав следующую опцию конфигурации в разделе features:

minio: true

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

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

'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://localhost:9600

Чтобы подготовить контейнеры "S3" на базе Minio, добавьте директиву buckets в ваш файл Homestead.yaml. После определения контейнеров вы должны выполнить команду vagrant reload --provision в терминале:

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

Поддерживаемые значения policy включают в себя: none, download, upload, and public.

Laravel Dusk

Чтобы запустить тесты Laravel Dusk в Homestead, вы должны включить webdriver feature в вашей конфигурации Homestead:

features:
    - webdriver: true

После включения функции webdriver вы должны выполнить команду vagrant reload --provision в терминале.

Совместное использование

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

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

share homestead.test

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

share homestead.test -region=eu -subdomain=laravel
Помните, что Vagrant по своей сути небезопасен, и вы открываете свою виртуальную машину для доступа из Интернета, выполняя команду share.

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

Отладка веб-запросов

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

По умолчанию Xdebug уже запущен и готов принимать подключения. Если вам нужно включить Xdebug в CLI, выполните команду sudo phpenmod xdebug на виртуальной машине Homestead. Затем следуйте инструкциям IDE, чтобы включить отладку. Наконец, настройте свой браузер для запуска Xdebug с расширением или букмарклетом.

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

Автозапуск Xdebug

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

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

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

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

xphp /path/to/script

Профилирование приложения с Blackfire

Blackfire - это сервис для профилирования веб-запросов и CLI-приложений. Он предлагает интерактивный пользовательский интерфейс, который отображает данные профиля в виде графиков вызовов и временных шкал. Он создан для использования в разработке, тестировании и производстве без дополнительных затрат для конечных пользователей. Кроме того, Blackfire обеспечивает проверку производительности, качества и безопасности кода и параметров конфигурации php.ini.

Blackfire Player - это приложение с открытым исходным кодом для веб-сканирования, веб-тестирования и веб-скрапинга, которое может работать совместно с Blackfire для создания сценариев профилирования.

Чтобы включить Blackfire, используйте параметр "features" в файле конфигурации Homestead:

features:
    - blackfire:
        server_id: "server_id"
        server_token: "server_value"
        client_id: "client_id"
        client_token: "client_value"

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

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

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

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

Чтобы включить мостовой (bridge) интерфейс, настройте параметр 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. В этот файл вы можете добавить любые команды оболочки, которые необходимы для правильной настройки вашей виртуальной машины.

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

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

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

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

Специфичные настройки

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