1. Пакеты
  2. Laravel Homestead

Присоединяйся к нашему Telegram сообществу @webblend!

Здесь ты найдешь сниппеты по Laravel и полезные советы по веб-разработке.

Введение

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.2
  • PHP 8.1
  • 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 15
  • Composer
  • Docker
  • 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
  • Elasticsearch
  • EventStoreDB
  • Flyway
  • Gearman
  • Go
  • Grafana
  • InfluxDB
  • Logstash
  • Mailpit (Replaces Mailhog)
  • MariaDB
  • Meilisearch
  • MinIO
  • MongoDB
  • Neo4j
  • Oh My Zsh
  • Open Resty
  • PM2
  • Python
  • R
  • RabbitMQ
  • Rust
  • RVM (Ruby Version Manager)
  • Solr
  • TimescaleDB
  • Trader (PHP extension)
  • Webdriver & Laravel Dusk Utilities

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

Первые шаги

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

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

Для использования провайдера Parallels вам нужно установить плагин Vagrant для Parallels. Это бесплатно.

Установка 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

Внимание Если вы используете Apple Silicon, требуется использование провайдера Parallels.

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

Свойство folders файла 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.

Вы также можете передавать любые поддерживаемые опции Synced Folders 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 for Windows.

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

192.168.56.56 homestead.test

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

http://homestead.test

Настройка служб

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

services:
- enabled:
- "postgresql"
- disabled:
- "mysql"

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

Запуск виртуальной машины Vagrant

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

Для уничтожения машины вы можете использовать команду vagrant destroy.

Установка для каждого проекта

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

Вы можете установить Homestead в свой проект, используя менеджер пакетов Composer:

composer require laravel/homestead --dev

После установки Homestead вызовите команду make Homestead, чтобы создать файлы Vagrantfile и Homestead.yaml для вашего проекта. Эти файлы будут размещены в корне вашего проекта. Команда make автоматически настроит директивы sites и folders в файле 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
- elasticsearch:
version: 7.9.0
- eventstore: true
version: 21.2.0
- flyway: true
- gearman: true
- golang: true
- grafana: true
- influxdb: true
- logstash: true
- mailpit: true
- mariadb: true
- meilisearch: true
- minio: true
- mongodb: true
- mysql: true
- neo4j: true
- ohmyzsh: true
- openresty: true
- pm2: true
- python: true
- r-base: true
- rabbitmq: true
- rustc: 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, получат последние теги, а затем проверят последний помеченный релиз. Последнюю стабильную версию релиза вы можете найти на странице релизов GitHub Homestead.

Если вы установили 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.56.56 homestead.test
192.168.56.56 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, apache-proxy, apigility, expressive, laravel (по умолчанию), proxy (для nginx), silverstripe, statamic, symfony2, symfony4 и zf.

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

Вы можете добавить дополнительные значения Nginx fastcgi_param для вашего сайта с помощью директивы сайта 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:

  • HTTP: 8000 → Forwards To 80
  • HTTPS: 44300 → Forwards To 443

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

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

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

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

  • SSH: 2222 → To 22
  • ngrok UI: 4040 → To 4040
  • MySQL: 33060 → To 3306
  • PostgreSQL: 54320 → To 5432
  • MongoDB: 27017 → To 27017
  • Mailhog: 8025 → To 8025
  • Minio: 9600 → To 9600

Версии PHP

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

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

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

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
php8.1 artisan list
php8.2 artisan list

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

php56
php70
php71
php72
php73
php74
php80
php81
php82

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

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

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

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

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

backup: true

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

Настройка расписания 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 - это сервер хранилища объектов с открытым исходным кодом с совместимым с Amazon S3 API. Для установки 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

Для предоставления бакетов, работающих на Minio, добавьте директиву buckets в ваш файл Homestead.yaml. После определения ваших бакетов выполните команду vagrant reload --provision в вашем терминале:

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

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

Laravel Dusk

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

features:
- webdriver: true

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

Обмен вашим окружением

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

Для решения этой проблемы Homestead включает свою собственную команду share. Чтобы начать, подключитесь к вашей виртуальной машине Homestead по SSH через 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

Если вам нужно обмениваться контентом через HTTPS вместо HTTP, используйте команду sshare вместо share.

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

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

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

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

По умолчанию Xdebug уже запущен и готов принимать соединения. Если вам нужно включить Xdebug в CLI, выполните команду sudo phpenmod xdebug в вашей виртуальной машине Homestead. Затем следуйте инструкциям вашей среды разработки, чтобы включить отладку. Наконец, настройте ваш браузер на запуск 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.client_host = 192.168.10.1
xdebug.mode = debug
xdebug.start_with_request = yes

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

Чтобы отлаживать PHP CLI-приложение, используйте алиас оболочки 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 для сети и измените тип сети на 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)"

Чтобы обновить устройство, используемое сетью, вы можете добавить параметр dev в конфигурацию сети. Значение dev по умолчанию - eth0:

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

Расширение 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 не должен контролироваться версиями.

Настройки, специфичные для провайдера

VirtualBox

natdnshostresolver

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

provider: virtualbox
natdnshostresolver: 'off'