Homestead

Содержание:


Введение

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

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

Homestead работает на любой популярной операционной системе будь-то Windows, Mac, или Linux и включает Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node и другие инструменты разработки для вашего приложения.

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

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

  • Ubuntu 18.04
  • Git
  • PHP 7.3
  • PHP 7.2
  • PHP 7.1
  • PHP 7.0
  • PHP 5.6
  • 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

Необязательное ПО

  • Apache
  • Blackfire
  • Cassandra
  • Chronograf
  • CouchDB
  • Crystal & Lucky Framework
  • Docker
  • Elasticsearch
  • Gearman
  • Go
  • Grafana
  • InfluxDB
  • MariaDB
  • MinIO
  • MongoDB
  • MySQL 8
  • Neo4j
  • Oh My Zsh
  • Open Resty
  • PM2
  • Python
  • RabbitMQ
  • Solr
  • Webdriver & Laravel Dusk Utilities

Установка

Первые шаги

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

Чтобы использовать провайдер VMware, вам необходимо приобрести VMware Fusion / Workstation и VMware Vagrant plug-in. Эти продукты не бесплатны, но они обеспечивают высокую производительность общих папок из коробки.

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

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

Установка контейнера Vagrant

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

vagrant box add laravel/homestead

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

Homestead переодически выпускает альфа/бета версии для тестирования, которые мешают выполнению команды vagrant box add. Если во время выполнения команды vagrant box add появляются какие-либо ошибки, то можно попрбовать выполнить команду vagrant up и загрузится правильный контейнер во время того, как Vagrant будует пытаться запустить виртуальную машину.

Установка Homestead

Вы можете установить Homestead путём клонирования репозитория на вашу машину. Подумайте о клонировании репозитория в папку Homestead в каталоге "home", потому что контейнер Homestead будет служить как хост для всех ваших проектов.

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

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

cd ~/Homestead

git checkout release

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

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

// Windows...
init.bat

Конфигурация окружения

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

Ключ provider в вашем Homestead.yaml файле показывает какой проваайдер должен использоваться: virtualbox, vmware_fusion, vmware_workstation, parallels или hyperv. Вы можете указать провайдера, которого вы выбираете.

provider: virtualbox

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

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

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

Вы должны всегда сопоставлять ваши индивидуальные проекты с их структурой папок вместо сопоставления папок ~/code. При сопоставлении папко вируальная машина должна отслеживать все операции ввода-вывода для каждого файла в папке. Это приводит к проблеме производительности, если файлов слишком много.

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

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

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

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

Вы можете также передать любые опции поддерживаемые Vagrant Synced Folders путём перечивления их в пунке 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. Пример конфигурации сайта включён в файл Homestead.yaml. Вы можете добавлять сколько угодно сайтов для вашего окружения, потому что Homestead — это удобная и надёжная среда для работы с любым количеством сайтов на Ларавел.

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

Если внесли измения в пункт sites, то необходимо рестартовать сервер командой 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 на вашей машине. Этот файл перенаправит запросы на ваш компьютер. Для операционных систем Mac и Linux этот файл располагается по адресу /etc/hosts. Для Windows, расположение будут таким C:\Windows\System32\drivers\etc\hosts. Вам будет необходимо добавить строку, похожую на эту:

192.168.10.10  homestead.test

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

http://homestead.test

Запуск The Vagrant Box

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

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

Проектная установка

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

Чтобы установить Homestead на прямую в ваш проект, необходимо использовать Composer:

composer require laravel/homestead --dev

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

Mac / Linux:

php vendor/bin/homestead make

Windows:

vendor\\bin\\homestead make

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

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

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

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
    - gearman: true
    - golang: true
    - grafana: true
    - influxdb: true
    - mariadb: true
    - minio: true
    - mongodb: true
    - mysql8: true
    - neo4j: true
    - ohmyzsh: true
    - openresty: true
    - pm2: true
    - python: true
    - rabbitmq: true
    - solr: true
    - webdriver: true

MariaDB

Активация опции MariaDB уберёт MySQL и установит MariaDB. Однако в настройках баз даных необходимо указывать mysql в качестве драйвера.

MongoDB

Базовая установка MongoDB пропишет имя пользователя как homestead, а пароль secret.

Elasticsearch

Вы можете детализировать версию Elasticsearch цифрой или точно (major.minor.patch). Установка по умолчанию создаст кластер 'homestead'. Вам не следует отдавать под Elasticsearch более половины памяти операционной системы, поэтому убедитесь в том, что имеется как минимум в 2 раза больше памяте от необходимого.

Neo4j

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

Псевдонимы

Вы можете добавить Баш псевдонимы для вашей машины Хоумстед путем изменения <код>псевдонимы файл в вашем каталоге усадьбы: После обновления файла < code>aliases< / code> необходимо повторно подготовить машину усадьбы с помощью элемента <код>бродяга перезагрузка --положение команда. Это гарантирует, что ваши новые псевдонимы доступны на машине.

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

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

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


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

Глобальный доступ к окружению

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

Mac / Linux

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

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

Windows

Создайте фаайл homestead.bat где считаете необходимым и наполните его следующим содержанием:

@echo off

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

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

set cwd=
set homesteadVagrant=

Убедитесь в том, чтобы настроить базовый путь C:\Homestead в скрипте в вашу текущую локацию или к установке Homestead. После создания файла, добавьте путь файла в PATH. После этого вы можете выполнять команды как homestead up или homestead ssh из любой точки системы.

Подключение по SSH

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

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

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

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

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

Бэкапы базы данных

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

backup: true

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

Snapshots базы данных

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

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

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

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

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

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

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

Если у вас не настроено автоматическое изменение файла "hosts", то вам необходимо добавить новый сайт и в этот файл тоже:

192.168.10.10  homestead.test
192.168.10.10  another.test

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

Типы сайтов

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

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

Список доступных типов сайтов: apache, apigility, expressive, laravel (the default), proxy, silverstripe, statamic, symfony2, symfony4, и zf.

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

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

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.

Конфигурация расписания Cron

Ларавел предоставляет удобный способ управлять расписанием заданий путём настройки выполнения команды Artisan 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 вашей виртуальной машины.

Конфигурация 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 со следующими опциями конфигурации в секции features.

minio: true

По умолчанию, Minio доступен для порта 9600. В ыможете получить доступ к панели Minio используя адрес http://homestead: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://homestead:9600

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

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

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

Порты

По умолчанию, следующие порты перенаправлены в ваше окружение 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:
    - send: 50000
      to: 5000
    - send: 7777
      to: 777
      protocol: udp

Совместное использование окружения

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

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

share homestead.test

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

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

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

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

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

Дополнительно, вы можете использовать любую из версий PHP через командную строку:

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

Вы можете обновить версию командной строки путём выполнения следующие команды для вашей виртуальной машины:

php56
php70
php71
php72
php73

Веб-сервер

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

flip

Почта

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


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

Отладка веб-запросов используя With Xdebug

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

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

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

Отладка приложений с помощью командной строки

Для отладки приложения php CLI, используйте псевдоним оболочки xphp в контейнере Vagrant:

xphp path/to/script

Автозапуск Xdebug

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

; 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

Профилирование приложений с помощью Blackfire

Blackfire — это сервис SaaS для профилирования веб-апросов и приложений командной строки и не только. Он предоставляет интерактивный пользовательский интерфейс, который отображает данные профиля с помощью графики и временных линий.

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

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

Рекомендуем изучить документацию Blackfire.

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

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

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

Если сайт уже работал, убедить в том, что выполнили команду vagrant provision после обновления конфигурации.

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

Чтобы профилировать запросы командной строки с использованием XHGui, To profile a CLI request using XHGui, prefix the command with XHGUI=on:

XHGUI=on path/to/script

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

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

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


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

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

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

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

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

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

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

Если вы работаете в команде и используете Homestead, возможно, вам захочется настроить Homestead по себя. Для этого вы можете создать файл user-customizations.sh в корне Homestead. С помощью этого файла вы может вносить любые настройки. Файл user-customizations.sh не должен быть добавлен в индекс системы контроля версий.


Обновление окружения

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

vagrant destroy

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

git fetch

git pull origin release

Эти команды обновят код Homestead из репозитория GitHub. Вы может найти информацию о последнем релизе на странице GitHub releases page.

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

composer update

После чего обновите контейнер Vagrant с ипольованием команды vagrant box update:

vagrant box update

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

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