Laravel Homestead
- Введение
- Установка и настройка
- Ежедневное использование
- Глобальный доступ к Homestead
- Подключение через SSH
- Подключение к базам данных
- Резервные копии базы данных
- Снимки базы данных
- Добавление дополнительных сайтов
- Переменные среды окружения
- Wildcard SSL
- Настройка расписаний Cron
- Настройка Mailhog
- Настройка Minio
- Порты
- Совместное использование вашего окружения
- Несколько версий PHP
- Web-серверы
- Почта
- Laravel Dusk
- Отладка и профилирование
- Сетевые интерфейсы
- Расширение Homestead
- Обновление Homestead
- Настройки конкретного провайдера
Введение
Laravel стремится сделать весь процесс разработки PHP приятным, включая вашу локальную среду разработки. Vagrant предоставляет простой и элегантный способ управления виртуальными машинами и их подготовки.
Laravel Homestead - это официальный предварительно упакованный пакет Vagrant, который предоставляет вам прекрасную среду разработки, не требуя установки PHP, веб-сервера и любого другого серверного программного обеспечения на вашем локальном компьютере. Больше не нужно беспокоиться о том, чтобы испортить вашу операционную систему! Vagrant контейнеры полностью автономные. Если что-то пойдет не так, вы можете уничтожить и воссоздать контейнер за считанные минуты!
Homestead работает в любой системе Windows, Mac или Linux и включает Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node и все другие полезности, необходимые для разработки великолепных приложений Laravel.
Если вы используете Windows, вам может потребоваться включить аппаратную виртуализацию (VT-x). Обычно это можно включить в BIOS. Если вы используете Hyper-V в системе UEFI, вам может дополнительно потребоваться отключить Hyper-V, чтобы получить доступ к VT-x.
Включенное программное обеспечение
- Ubuntu 18.04
- Git
- PHP 7.4
- 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 (9.6, 10, 11, 12)
- 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 вы должны установить VirtualBox 6.x, VMWare, Parallels или Hyper-V, а также Vagrant. Все эти программные пакеты предоставляют простые в использовании визуальные установщики для всех популярных операционных систем.
Чтобы использовать провайдер VMware, вам необходимо получить как VMware Fusion / Workstation, так и подключаемый модуль VMware Vagrant. Хотя это не бесплатно, VMware может обеспечить более быструю работу общих папок из коробки.
Чтобы использовать провайдер Parallels, вам необходимо установить плагин Parallels Vagrant. Это бесплатно.
Из-за ограничений Vagrant провайдер Hyper-V игнорирует все сетевые настройки.
Установка The Homestead Vagrant Box
После установки VirtualBox / VMware и Vagrant вы должны добавить контейнер laravel/homestead
в вашу установку Vagrant, используя следующую команду в вашем терминале. Загрузка контейнера займет несколько минут, в зависимости от скорости вашего интернет-соединения:
vagrant box add laravel/homestead
Если эта команда не работает, убедитесь, что установленная версия Vagrant актуальна и не требует обноалений.
Homestead периодически выдает для тестирования блоки "альфа" / "бета", которые могут мешать команде
vagrant box add
. Если у вас возникли проблемы с запускомvagrant box add
, вы можете запустить командуvagrant up
, и правильный контейнер будет загружен, когда Vagrant попытается запустить виртуальную машину.
Установка Homestead
Вы можете установить Homestead, клонировав репозиторий на свой локальный компьютер. Рассмотрите возможность клонирования репозитория в папку Homestead
в вашем «домашнем» каталоге, поскольку контейнер Homestead будет служить хостом для всех ваших проектов Laravel:
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
. Файл Homestead.yaml
будет помещен в каталог Homestead:
Mac / Linux
bash init.sh
Windows
init.bat
Настройка Homestead
Настройка вашего провайдера
Ключ provider
в вашем файле Homestead.yaml
указывает, какой провайдер Vagrant следует использовать: 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. Этот плагин будет поддерживать правильные права пользователя / группы для файлов и каталогов в поле 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. Пример конфигурации сайта включен в файл 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 запускает несколько сервисов; однако вы можете настроить, какие службы будут включены или отключены во время подготовки. Например, вы можете включить PostgreSQL и отключить MySQL:
services:
- enabled:
- "postgresql@12-main"
- disabled:
- "mysql"
Указанные службы будут запускаться или останавливаться в зависимости от их порядка в директивах enabled
и disabled
.
Разрешение имени хоста
Homestead публикует имена хостов через mDNS
для автоматического разрешения хоста. Если вы установите hostname: homestead
в вашем файле Homestead.yaml
, хост будет доступен по адресу homestead.local
. Дистрибутивы MacOS, iOS и Linux для настольных ПК по умолчанию включают поддержку mDNS
. Windows требует установки Bonjour Print Services для Windows.
Использование автоматических имен хостов лучше всего подходит для установок Homestead «под проект». Если вы размещаете несколько сайтов на одном экземпляре Homestead, вы можете добавить «домены» для своих веб-сайтов в файл hosts
на вашем компьютере. Файл hosts
будет перенаправлять запросы для ваших сайтов Homestead на ваш компьютер Homestead. В Mac и Linux этот файл находится в /etc/hosts
. В Windows он находится в C:\Windows\System32\drivers\etc\hosts
. Строки, которые вы добавляете в этот файл, будут выглядеть следующим образом:
192.168.10.10 homestead.test
Убедитесь, что в списке указан IP-адрес, указанный в файле Homestead.yaml
. После того, как вы добавили домен в файл hosts
и запустили окно Vagrant, вы сможете получить доступ к сайту через свой веб-браузер:
http://homestead.test
Запуск The Vagrant Box
После того как вы отредактировали Homestead.yaml
по своему вкусу, запустите команду vagrant up
из каталога Homestead. Vagrant загрузит виртуальную машину и автоматически настроит ваши общие папки и сайты Nginx.
Чтобы уничтожить машину, вы можете использовать команду vagrant destroy --force
.
Установка по проекту
Вместо того, чтобы устанавливать Homestead глобально и использовать один и тот же контейнер 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
в своем браузере. Помните, что вам все равно нужно будет добавить запись файла /etc/hosts
для homestead.test
или домена по вашему выбору, если вы не используете автоматическое разрешение имен хостов.
Установка дополнительных компонентов
Дополнительное программное обеспечение устанавливается с помощью параметра features
в файле конфигурации Homestead. Большинство функций можно включить или отключить с помощью логического значения, в то время как некоторые функции позволяют использовать несколько параметров конфигурации:
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
- 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. MariaDB служит заменой MySQL, поэтому вам все равно следует использовать драйвер базы данных mysql
в конфигурации базы данных вашего приложения.
MongoDB
При установке MongoDB по умолчанию для имени пользователя базы данных будет указано значение homestead
, а для соответствующего пароля - значение secret
.
Elasticsearch
Вы можете указать поддерживаемую версию Elasticsearch, которая может быть основной версией или точным номером версии (major.minor.patch). При установке по умолчанию будет создан кластер с именем «homestead». Никогда не следует отдавать Elasticsearch больше половины памяти операционной системы, поэтому убедитесь, что на вашем компьютере Homestead выделено как минимум вдвое больше памяти Elasticsearch.
Ознакомьтесь с документацией Elasticsearch, чтобы узнать, как настраивать конфигурацию.
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
Иногда вы можете захотеть запустить vagrant up
Homestead-машину из любой точки файловой системы. Вы можете сделать это в системах Mac / Linux, добавив функцию Bash в свой профиль Bash. В Windows вы можете сделать это, добавив «пакетный» файл в свой PATH
. Эти скрипты позволят вам запускать любую команду Vagrant из любой точки вашей системы и автоматически укажут эту команду на вашу установку Homestead:
Mac / Linux
function homestead() {
( cd ~/Homestead && vagrant $* )
}
Не забудьте настроить путь ~/Homestead
в функции в соответствии с местоположением вашей фактической установки 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 на вашем компьютере Homestead, подумайте о добавлении «функции», описанной выше, на ваш хост-компьютер, чтобы быстро использовать SSH в контейнере Homestead.
Подключение к базам данных
База данных homestead
настроена как для MySQL, так и для PostgreSQL из коробки. Чтобы подключиться к базе данных MySQL или PostgreSQL из клиента базы данных хост-компьютера, необходимо подключиться к 127.0.0.1
и порту 33060
(MySQL) или 54320
(PostgreSQL). Имя пользователя и пароль для обеих баз данных - homestead
/ secret
.
Вы должны использовать эти нестандартные порты только при подключении к базам данных с вашего хост-компьютера. Вы будете использовать порты
3306
и5432
по умолчанию в файле конфигурации базы данных Laravel, поскольку Laravel работает на виртуальной машине.
Резервные копии базы данных
Homestead может автоматически создавать резервную копию вашей базы данных, когда ваш контейнер Vagrant уничтожается. Чтобы использовать эту функцию, вы должны использовать 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 использует функцию тонких снимков LVM с поддержкой копирования при записи. На практике это означает, что изменение одной строки в таблице приведет к записи только внесенных вами изменений на диск, что значительно сэкономит время и дисковое пространство во время восстановления.
Поскольку lmm
взаимодействует с LVM, он должен запускаться от имени пользователя root
. Чтобы увидеть все доступные команды, запустите sudo lmm
в поле Vagrant. Обычный рабочий процесс выглядит следующим образом:
- Импортируйте базу данных в ветку
master
lmm по умолчанию. - Сохраните снимок неизмененной базы данных с помощью
sudo lmm branch prod-YYYY-MM-DD
. - Измените базу данных.
- Запустите
sudo lmm merge prod-YYYY-MM-DD
, чтобы отменить все изменения. - Запустите
sudo lmm delete <branch>
, чтобы удалить ненужные ветки.
Добавление дополнительных сайтов
После того, как ваша среда 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
автоматически, вам может потребоваться добавить новый сайт в этот файл:
192.168.10.10 homestead.test
192.168.10.10 another.test
После добавления сайта запустите команду vagrant reload --provision
из каталога Homestead.
Типы сайтов
Homestead поддерживает несколько типов сайтов, которые позволяют легко запускать проекты, не основанные на Laravel. Например, мы можем легко добавить приложение Symfony в Homestead, используя тип сайта symfony2
:
sites:
- map: symfony2.test
to: /home/vagrant/my-symfony-project/web
type: "symfony2"
Доступные типы сайтов: apache
, apigility
, expressive
, laravel
(по умолчанию), 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
.
Wildcard SSL
Homestead настраивает самоподписанный SSL-сертификат для каждого сайта, определенного в разделе sites
: вашего файла Homestead.yaml
. Если вы хотите сгенерировать wildcard SSL-сертификат для сайта, вы можете добавить опцию wildcard
в конфигурацию этого сайта. По умолчанию сайт будет использовать wildcard сертификат вместо сертификата определенного домена:
- map: foo.domain.test
to: /home/vagrant/domain
wildcard: "yes"
Если для параметра use_wildcard
установлено значение no
, wildcard сертификат будет сгенерирован, но не будет использоваться:
- map: foo.domain.test
to: /home/vagrant/domain
wildcard: "yes"
use_wildcard: "no"
Настройка расписаний Cron
Laravel предоставляет удобный способ планировать задания Cron, например schedule:run
запуская команду 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_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
, указав следующий параметр конфигурации в разделе функций:
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
Чтобы подготовить buckets, добавьте директиву buckets
в файл конфигурации Homestead:
buckets:
- name: your-bucket
policy: public
- name: your-private-bucket
policy: none
Поддерживаемые значения policy
: none
, download
, upload
и public
.
Порты
По умолчанию в среду Homestead перенаправляются следующие порты:
- SSH: 2222 → Forwards To 22
- ngrok UI: 4040 → Forwards To 4040
- HTTP: 8000 → Forwards To 80
- HTTPS: 44300 → Forwards To 443
- MySQL: 33060 → Forwards To 3306
- PostgreSQL: 54320 → Forwards To 5432
- MongoDB: 27017 → Forwards To 27017
- Mailhog: 8025 → Forwards To 8025
- Minio: 9600 → Forwards To 9600
Перенаправление дополнительных портов
При желании вы можете перенаправить дополнительные порты в поле Vagrant, а также указать их протокол:
ports:
- send: 50000
to: 5000
- send: 7777
to: 777
protocol: udp
Совместное использование вашего окружения
Иногда вы можете поделиться тем, над чем вы сейчас работаете, с коллегами или клиентом. У Vagrant есть встроенный способ поддержки этого через vagrant share
; однако это не сработает, если в файле Homestead.yaml
настроено несколько сайтов.
Чтобы решить эту проблему, Homestead включает собственную команду share
. Для начала подключитесь по SSH к вашей машине Homestead через vagrant ssh
и запустите share homestead.test
. Это предоставит общий доступ к сайту homestead.test
из вашего файла конфигурации Homestead.yaml
. Вы можете заменить homestead.test
на любой из других настроенных вами сайтов:
share homestead.test
После выполнения команды вы увидите экран Ngrok, который содержит журнал активности и общедоступные URL-адреса для общего сайта. Если вы хотите указать настраиваемый регион, поддомен или другие параметры выполнения Ngrok, вы можете добавить их в свою команду share
:
share homestead.test -region=eu -subdomain=laravel
Помните, что Vagrant по своей сути небезопасен, и вы открываете свою виртуальную машину в Интернете при выполнении команды
share
.
Несколько версий PHP
В Homestead 6 появилась поддержка нескольких версий PHP на одной виртуальной машине. Вы можете указать, какую версию PHP использовать для данного сайта в файле Homestead.yaml
. Доступные версии PHP: «5.6», «7.0», «7.1», «7.2», «7.3» и «7.4» (по умолчанию):
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
php7.1 artisan list
Вы также можете обновить версию CLI по умолчанию, выполнив следующие команды на своей виртуальной машине Homestead:
php56
php70
php71
php72
php73
php74
Web-серверы
По умолчанию Homestead использует веб-сервер Nginx. Однако он может установить Apache, если в качестве типа сайта указан apache
. Хотя оба веб-сервера могут быть установлены одновременно, они не могут работать одновременно. Команда оболочки flip
доступна для упрощения процесса переключения между веб-серверами. Команда flip
автоматически определяет, какой веб-сервер работает, отключает его, а затем запускает другой сервер. Чтобы использовать эту команду, подключитесь к компьютеру Homestead по SSH и запустите команду в терминале:
flip
Почта
В Homestead есть агент передачи почты Postfix, который по умолчанию прослушивает порт 1025
. Итак, вы можете указать своему приложению использовать почтовый драйвер smtp localhost
на порту 1025
. Затем вся отправленная почта будет обрабатываться Postfix и перехвачена Mailhog. Для просмотра отправленных писем откройте в браузере http://localhost:8025
.
Laravel Dusk
Чтобы запускать тесты Laravel Dusk в Homestead, вы должны включить функцию webdriver
в конфигурации Homestead:
features:
- webdriver: true
Не забудьте после этого подготовить свою виртуальную машину Homestead, чтобы убедиться, что функция webdriver
полностью установлена.
Отладка и профилирование
Отладка веб-запросов с помощью Xdebug
Homestead включает поддержку пошаговой отладки с помощью Xdebug. Например, вы можете загрузить веб-страницу из браузера, и PHP подключится к вашей среде IDE, чтобы разрешить проверку и изменение выполняемого кода.
По умолчанию Xdebug уже запущен и готов принимать соединения. Если вам нужно включить Xdebug в CLI, запустите команду sudo phpenmod xdebug
в вашем поле Vagrant. Затем следуйте инструкциям вашей IDE, чтобы включить отладку. Наконец, настройте свой браузер для запуска Xdebug с расширением или bookmarklet.
Xdebug заставляет PHP работать значительно медленнее. Чтобы отключить Xdebug, запустите
sudo phpdismod xdebug
в контейнере Vagrant и перезапустите службу FPM.
Отладка консольных приложений
Чтобы отладить приложение PHP CLI, используйте псевдоним оболочки xphp
внутри поля Vagrant:
xphp path/to/script
Автозапуск Xdebug
При отладке функциональных тестов, которые отправляют запросы к веб-серверу, легче автоматически запускать отладку, чем изменять тесты для прохождения через настраиваемый заголовок или файл cookie для запуска отладки. Чтобы заставить Xdebug запускаться автоматически, измените /etc/php/7.x/fpm/conf.d/20-xdebug.ini
внутри вашего контейнера Vagrant и добавьте следующую конфигурацию:
; Если Homestead.yaml содержит другую подсеть для IP-адреса, этот адрес может быть другим...
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 1
Профилирование приложений с помощью Blackfire
Blackfire - это сервис SaaS для профилирования веб-запросов и приложений CLI, а также для написания тестов производительности. Он предлагает интерактивный пользовательский интерфейс, который отображает данные профиля в виде графиков вызовов и временных шкал. Он создан для использования в разработке, тестировании и производстве без дополнительных затрат для конечных пользователей. Он обеспечивает проверку производительности, качества и безопасности кода и параметров конфигурации 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 предлагает различные варианты профилирования приложения, включая инструмент командной строки (CLI) и расширение для браузера. Пожалуйста, просмотрите документацию Blackfire для получения более подробной информации.
Профилирование производительности PHP с помощью XHGui
XHGui - это пользовательский интерфейс для исследования производительности ваших PHP-приложений. Чтобы включить 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
.
Чтобы профилировать запрос CLI с помощью XHGui, добавьте к команде префикс XHGUI=on
:
XHGUI=on path/to/script
Результаты профиля CLI можно просмотреть так же, как результаты профиля в web.
Обратите внимание, что профилирование замедляет выполнение скрипта, и абсолютное время может быть в два раза больше, чем в реальных запросах. Поэтому всегда сравнивайте процентные улучшения, а не абсолютные числа. Кроме того, имейте в виду, что время выполнения включает любое время, затраченное на паузу в отладчике.
Поскольку профили производительности занимают значительное место на диске, они автоматически удаляются через несколько дней.
Сетевые интерфейсы
Свойство 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
Вы можете расширить Homestead с помощью сценария after.sh
в корне каталога Homestead. В этот файл вы можете добавить любые команды оболочки, которые необходимы для правильной конфигурации и настройки вашей виртуальной машины.
При настройке Homestead Ubuntu может спросить вас, хотите ли вы сохранить исходную конфигурацию пакета или перезаписать ее новым файлом конфигурации. Чтобы избежать этого, вы должны использовать следующую команду при установке пакетов, чтобы избежать перезаписи любой конфигурации, ранее написанной Homestead:
sudo apt-get -y \
-o Dpkg::Options::="--force-confdef" \
-o Dpkg::Options::="--force-confold" \
install your-package
Пользовательские настройки
При использовании Homestead, работая в команде разработчиков, вы можете настроить Homestead, чтобы он лучше соответствовал вашему личному стилю разработки. Вы можете создать файл user-customizations.sh
в корне каталога Homestead (в том же каталоге, где находится ваш Homestead.yaml
). В этом файле вы можете сделать любую настройку, которую захотите; однако версия user-customizations.sh
не должна контролироваться.
Обновление Homestead
Прежде чем начать обновление Homestead, убедитесь, что вы удалили свою текущую виртуальную машину, выполнив следующую команду в каталоге Homestead:
vagrant destroy
Затем вам нужно обновить исходный код Homestead. Если вы клонировали репозиторий, вы можете выполнить следующие команды в том месте, где вы изначально клонировали репозиторий:
git fetch
git pull origin release
Эти команды извлекают последний код Homestead из репозитория GitHub, извлекают последние теги, а затем проверяют последний выпуск с тегами. Вы можете найти последнюю стабильную версию выпуска на странице выпусков GitHub.
Если вы установили Homestead через файл composer.json
вашего проекта, вы должны убедиться, что ваш файл composer.json
содержит "laravel/homestead": "^11"
и обновите свои зависимости:
composer update
Затем вы должны обновить поле Vagrant с помощью команды vagrant box update
:
vagrant box update
Затем вы должны запустить команду bash init.sh
из каталога Homestead, чтобы обновить некоторые дополнительные файлы конфигурации. Вас спросят, хотите ли вы перезаписать существующие файлы Homestead.yaml
, after.sh
и aliases
:
Mac / Linux
bash init.sh
Windows
init.bat
Наконец, вам нужно будет снова запустить свой контейнер Homestead, чтобы использовать последнюю версию Vagrant:
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
Перевод:
https://laravel.com/docs/8.x/homestead
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)