Если вы используете Windows, то может потребоваться включить поддержку аппаратной виртуализации (VT-x).
Это можно легко сделать через БИОС. Если вы используете Hyper-V на системе UEFI дополнительно может
потребоваться отключить Hyper-V для доступа к VT-x.
Homestead
Содержание:
- Введение
- Установка
- Ежедневное использование
- Глобальный доступ к окружению
- Подключение по SSH
- Подключение к базе данных
- Бэкапы базы данных
- Snapshots базы данных
- Добавление сайтов
- Переменные окружения
- Конфигурация расписания Cron
- Конфигурация Mailhog
- Конфигурация Minio
- Порты
- Совместное использование окружения
- Несколько версий PHP
- Веб-сервер
- Почта
- Отладка и профилирование
- Сетевой интерфейс
- Расширение окружения
- Обновление окружения
- Конкретные параметры поставщика
Введение
Laravel стремится сделать все этапы работы PHP разработки восхитительными, в том числе взаимодействие с локальным окружением. Vagrant предоставляет элегантный и простой способ управления и подготовки виртуальных машин.
Laravel Homestead — это официальный, предварительно упакованный Vagrant box, который предоставляет прекрасную среду разработки без необходимости устанавливать PHP, веб-сервер или другое серверное програмное обеспечение на ваш компьтер. Больше не нужно волноваться о том, какая у вас операционная система. Контейнер Vagrant отлично подходит для разового использования. Если что-то пошло не так, можно уничтожить и пересоздать контейнер за считанные минуты.
Homestead работает на любой популярной операционной системе будь-то Windows, Mac, или Linux и включает Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node и другие инструменты разработки для вашего приложения.
Включённое програмное обеспечение:
- 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
Вы можете установить 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
Вы должны всегда сопоставлять ваши индивидуальные проекты с их структурой папок вместо сопоставления
папок ~/code
. При сопоставлении папко вируальная машина должна отслеживать все операции
ввода-вывода для каждого файла в папке. Это приводит к проблеме производительности, если файлов
слишком много.
folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2
Чтобы включить NFS, необходимо лишь добавить простую запись в вашей конфигурации синхронизации.
folders:
- map: ~/code/project1
to: /home/vagrant/project1
type: "nfs"
Вы можете также передать любые опции поддерживаемые 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 публикует имена доменов через 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
.
Бэкапы базы данных
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. Типовой список будет
выглядеть следующим образом:
- Импортировать базу данных в lmm ветку
master
- Сохранить снимок неизменнённой базы данных используя
sudo lmm branch prod-YYYY-MM-DD
. - Модифицировать базу данных.
- Выполните
sudo lmm merge prod-YYYY-MM-DD
чтобы откатить измениня - Выполните
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
Несколько версий 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.
Отладка приложений с помощью командной строки
Для отладки приложения 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