Laravel Homestead
Laravel Homestead

Laravel 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. Обычный рабочий процесс выглядит следующим образом:

  1. Импортируйте базу данных в ветку master lmm по умолчанию.
  2. Сохраните снимок неизмененной базы данных с помощью sudo lmm branch prod-YYYY-MM-DD.
  3. Измените базу данных.
  4. Запустите sudo lmm merge prod-YYYY-MM-DD, чтобы отменить все изменения.
  5. Запустите 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

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню