Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас

Laravel Homestead

Вступ

Laravel Homestead - це застарілий пакет, який більше активно не підтримується. Як сучасну альтернативу можна використати Laravel Sail.

Laravel прагне зробити приємним увесь досвід розробки на PHP, включно з вашим локальним середовищем розробки. Laravel Homestead - це офіційний, заздалегідь зібраний Vagrant-бокс, який дає вам чудове середовище розробки, не вимагаючи встановлювати PHP, вебсервер чи будь-яке інше серверне ПЗ на вашу локальну машину.

Vagrant дає простий та елегантний спосіб керувати віртуальними машинами й розгортати їх. Vagrant-бокси повністю одноразові. Якщо щось піде не так, ви можете знищити й перестворити бокс за кілька хвилин!

Homestead працює на будь-якій системі Windows, macOS чи Linux і містить Nginx, PHP, MySQL, PostgreSQL, Redis, Memcached, Node і все інше ПЗ, потрібне для розробки чудових Laravel-застосунків.

Якщо ви користуєтеся Windows, вам може знадобитися увімкнути апаратну віртуалізацію (VT-x). Зазвичай це можна зробити через BIOS. Якщо ви використовуєте Hyper-V в UEFI-системі, вам, можливо, також доведеться вимкнути Hyper-V, щоб отримати доступ до VT-x.

Включене ПЗ

  • Ubuntu 22.04
  • Git
  • PHP 8.3
  • PHP 8.2
  • PHP 8.1
  • PHP 8.0
  • PHP 7.4
  • PHP 7.3
  • PHP 7.2
  • PHP 7.1
  • PHP 7.0
  • PHP 5.6
  • Nginx
  • MySQL 8.0
  • lmm
  • Sqlite3
  • PostgreSQL 15
  • Composer
  • Docker
  • Node (With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailpit
  • avahi
  • ngrok
  • Xdebug
  • XHProf / Tideways / XHGui
  • wp-cli

Додаткове ПЗ

  • Apache
  • Blackfire
  • Cassandra
  • Chronograf
  • CouchDB
  • Crystal & Lucky Framework
  • Elasticsearch
  • EventStoreDB
  • Flyway
  • Gearman
  • Go
  • Grafana
  • InfluxDB
  • Logstash
  • MariaDB
  • Meilisearch
  • MinIO
  • MongoDB
  • Neo4j
  • Oh My Zsh
  • Open Resty
  • PM2
  • Python
  • R
  • RabbitMQ
  • Rust
  • RVM (Ruby Version Manager)
  • Solr
  • TimescaleDB
  • Trader (PHP extension)
  • Webdriver & Laravel Dusk Utilities

Встановлення й налаштування

Перші кроки

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

Усі ці програмні пакети мають прості візуальні інсталятори для всіх популярних операційних систем.

Щоб скористатися провайдером Parallels, вам потрібно встановити плагін Parallels для Vagrant. Він безкоштовний.

Встановлення Homestead

Встановити Homestead можна, склонувавши репозиторій Homestead на вашу хост-машину. Варто склонувати репозиторій у теку Homestead у вашому «домашньому» каталозі, адже віртуальна машина Homestead буде хостом для всіх ваших Laravel-застосунків. У цій документації ми називатимемо цей каталог вашим «каталогом Homestead»:

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

Склонувавши репозиторій Laravel Homestead, вам слід перейти на гілку release. Ця гілка завжди містить останній стабільний випуск Homestead:

cd ~/Homestead

git checkout release

Далі виконайте команду bash init.sh з каталогу Homestead, щоб створити конфігураційний файл Homestead.yaml. У файлі Homestead.yaml ви налаштовуватимете всі параметри своєї інсталяції Homestead. Цей файл буде розміщено в каталозі Homestead:

# macOS / Linux...
bash init.sh

# Windows...
init.bat

Налаштування Homestead

Вибір провайдера

Ключ provider у вашому файлі Homestead.yaml вказує, який провайдер Vagrant слід використовувати: virtualbox чи parallels:

provider: virtualbox

Якщо ви користуєтеся Apple Silicon, потрібен провайдер Parallels.

Налаштування спільних тек

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

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

Користувачам Windows не варто використовувати синтаксис шляху ~/, натомість слід указувати повний шлях до свого проєкту, наприклад C:\Users\user\Code\project1.

Вам завжди слід зіставляти окремі застосунки з власними теками, а не мапити один великий каталог, що містить усі ваші застосунки. Коли ви мапите теку, віртуальна машина має відстежувати весь дисковий ввід-вивід для кожного файлу в цій теці. Якщо у теці багато файлів, ви можете зіткнутися зі зниженою продуктивністю:

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

Ніколи не монтуйте . (поточний каталог), використовуючи Homestead. Через це Vagrant не змапить поточну теку до /vagrant, що зламає додаткові можливості й призведе до несподіваних результатів під час розгортання.

Щоб увімкнути NFS, додайте до свого мапінгу теки опцію type:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "nfs"

Використовуючи NFS у Windows, варто розглянути встановлення плагіна vagrant-winnfsd. Цей плагін підтримуватиме правильні дозволи користувача / групи для файлів і каталогів усередині віртуальної машини Homestead.

Ви також можете передати будь-які опції, які підтримують синхронізовані теки Vagrant, перелічивши їх під ключем options:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

Налаштування сайтів Nginx

Не знайомі з Nginx? Не біда. Властивість sites вашого файлу Homestead.yaml дозволяє легко змапити «домен» на теку у вашому середовищі Homestead. Приклад конфігурації сайту є у файлі Homestead.yaml. Знову ж таки, ви можете додати до свого середовища Homestead скільки завгодно сайтів. Homestead може бути зручним віртуалізованим середовищем для кожного Laravel-застосунку, над яким ви працюєте:

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

Якщо ви зміните властивість sites після розгортання віртуальної машини Homestead, виконайте в терміналі команду vagrant reload --provision, щоб оновити конфігурацію Nginx на віртуальній машині.

Скрипти Homestead написані так, щоб бути максимально ідемпотентними. Однак, якщо ви стикаєтеся з проблемами під час розгортання, знищте й перезберіть машину командою vagrant destroy && vagrant up.

Резолвінг імен хостів

Homestead публікує імена хостів через mDNS для автоматичного резолвінгу хостів. Якщо ви встановите hostname: homestead у файлі Homestead.yaml, хост буде доступний за адресою homestead.local. macOS, iOS і десктопні дистрибутиви Linux підтримують mDNS за замовчуванням. Якщо ви користуєтеся Windows, вам потрібно встановити Bonjour Print Services for Windows.

Автоматичні імена хостів найкраще працюють для встановлення для окремого проєкту. Якщо ви хостите кілька сайтів на одному екземплярі Homestead, ви можете додати «домени» ваших вебсайтів до файлу hosts на своїй машині. Файл hosts перенаправлятиме запити до ваших сайтів Homestead у вашу віртуальну машину Homestead. У macOS і Linux цей файл розташований у /etc/hosts. У Windows - у C:\Windows\System32\drivers\etc\hosts. Рядки, які ви додаєте до цього файлу, виглядатимуть так:

192.168.56.56  homestead.test

Переконайтеся, що вказана IP-адреса - це та, яку задано у вашому файлі Homestead.yaml. Щойно ви додасте домен до файлу hosts і запустите Vagrant-бокс, ви зможете відкрити сайт у своєму браузері:

http://homestead.test

Налаштування сервісів

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

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

Указані сервіси буде запущено чи зупинено відповідно до їхнього порядку в директивах enabled і disabled.

Запуск Vagrant-боксу

Щойно ви відредагуєте Homestead.yaml на свій смак, виконайте команду vagrant up зі свого каталогу Homestead. Vagrant завантажить віртуальну машину й автоматично налаштує ваші спільні теки та сайти Nginx.

Щоб знищити машину, скористайтеся командою vagrant destroy.

Встановлення для окремого проєкту

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

Встановити Homestead у свій проєкт можна за допомогою менеджера пакетів Composer:

composer require laravel/homestead --dev

Щойно Homestead буде встановлено, викличте команду make з Homestead, щоб згенерувати Vagrantfile і файл Homestead.yaml для вашого проєкту. Ці файли буде розміщено в корені вашого проєкту. Команда make автоматично налаштує директиви sites і folders у файлі Homestead.yaml:

# macOS / Linux...
php vendor/bin/homestead make

# Windows...
vendor\\bin\\homestead make

Далі виконайте в терміналі команду vagrant up і відкрийте свій проєкт за адресою http://homestead.test у браузері. Пам'ятайте: вам усе одно потрібно буде додати запис для homestead.test (чи для обраного вами домену) до файлу /etc/hosts, якщо ви не користуєтеся автоматичним резолвінгом імен хостів.

Встановлення додаткового ПЗ

Додаткове ПЗ встановлюється через опцію features у вашому файлі Homestead.yaml. Більшість можливостей вмикаються чи вимикаються булевим значенням, а деякі допускають кілька параметрів конфігурації:

features:
    - blackfire:
        server_id: "server_id"
        server_token: "server_value"
        client_id: "client_id"
        client_token: "client_value"
    - cassandra: true
    - chronograf: true
    - couchdb: true
    - crystal: true
    - dragonflydb: true
    - elasticsearch:
        version: 7.9.0
    - eventstore: true
        version: 21.2.0
    - flyway: true
    - gearman: true
    - golang: true
    - grafana: true
    - influxdb: true
    - logstash: true
    - mariadb: true
    - meilisearch: true
    - minio: true
    - mongodb: true
    - neo4j: true
    - ohmyzsh: true
    - openresty: true
    - pm2: true
    - python: true
    - r-base: true
    - rabbitmq: true
    - rustc: true
    - rvm: true
    - solr: true
    - timescaledb: true
    - trader: true
    - webdriver: true

Elasticsearch

Ви можете вказати підтримувану версію Elasticsearch, яка має бути точним номером версії (major.minor.patch). Встановлення за замовчуванням створить кластер з іменем 'homestead'. Ніколи не віддавайте Elasticsearch більше ніж половину пам'яті операційної системи, тож переконайтеся, що ваша віртуальна машина Homestead має щонайменше вдвічі більше пам'яті, ніж виділено Elasticsearch.

Загляньте в документацію Elasticsearch, щоб дізнатися, як налаштувати конфігурацію.

MariaDB

Увімкнення MariaDB прибере MySQL і встановить MariaDB. MariaDB зазвичай є прямою заміною MySQL, тож у конфігурації бази даних вашого застосунку вам слід і далі використовувати драйвер бази даних mysql.

MongoDB

Встановлення MongoDB за замовчуванням встановить ім'я користувача бази даних homestead, а відповідний пароль - secret.

Neo4j

Встановлення Neo4j за замовчуванням встановить ім'я користувача бази даних homestead, а відповідний пароль - secret. Щоб відкрити браузер Neo4j, перейдіть за адресою http://homestead.test:7474 у своєму вебпереглядачі. Порти 7687 (Bolt), 7474 (HTTP) і 7473 (HTTPS) готові обслуговувати запити від клієнта Neo4j.

Аліаси

Ви можете додати Bash-аліаси до своєї віртуальної машини Homestead, змінивши файл aliases у своєму каталозі Homestead:

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

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

Оновлення Homestead

Перш ніж починати оновлення Homestead, переконайтеся, що ви прибрали свою поточну віртуальну машину, виконавши таку команду у своєму каталозі Homestead:

vagrant destroy

Далі вам потрібно оновити вихідний код Homestead. Якщо ви клонували репозиторій, виконайте такі команди там, де ви його спочатку склонували:

git fetch

git pull origin release

Ці команди підтягують останній код Homestead з репозиторію GitHub, отримують останні теги, а потім переходять на останній тегований випуск. Останню стабільну версію можна знайти на сторінці випусків Homestead на GitHub.

Якщо ви встановили Homestead через файл composer.json свого проєкту, переконайтеся, що ваш файл composer.json містить "laravel/homestead": "^12", і оновіть залежності:

composer update

Далі вам слід оновити Vagrant-бокс командою vagrant box update:

vagrant box update

Після оновлення Vagrant-боксу виконайте команду bash init.sh з каталогу Homestead, щоб оновити додаткові конфігураційні файли Homestead. Вас запитають, чи хочете ви перезаписати наявні файли Homestead.yaml, after.sh і aliases:

# macOS / Linux...
bash init.sh

# Windows...
init.bat

Насамкінець вам потрібно буде перестворити свою віртуальну машину Homestead, щоб скористатися останньою інсталяцією Vagrant:

vagrant up

Щоденне використання

Підключення через SSH

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

Додавання нових сайтів

Щойно ваше середовище Homestead розгорнуто й працює, ви можете захотіти додати нові сайти Nginx для інших своїх Laravel-проєктів. В одному середовищі Homestead можна запускати скільки завгодно Laravel-проєктів. Щоб додати новий сайт, додайте його до свого файлу Homestead.yaml.

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

Перш ніж додавати сайт, переконайтеся, що ви налаштували мапінг теки для каталогу проєкту.

Якщо Vagrant не керує вашим файлом «hosts» автоматично, вам, можливо, доведеться додати новий сайт і до цього файлу. У macOS і Linux цей файл розташований у /etc/hosts. У Windows - у C:\Windows\System32\drivers\etc\hosts:

192.168.56.56  homestead.test
192.168.56.56  another.test

Щойно сайт буде додано, виконайте в терміналі команду vagrant reload --provision зі свого каталогу Homestead.

Типи сайтів

Homestead підтримує кілька «типів» сайтів, що дозволяє легко запускати проєкти, не засновані на Laravel. Наприклад, ми можемо легко додати до Homestead застосунок Statamic, скориставшись типом сайту statamic:

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

Доступні типи сайтів: apache, apache-proxy, apigility, expressive, laravel (за замовчуванням), proxy (для nginx), silverstripe, statamic, symfony2, symfony4 і zf.

Параметри сайту

Ви можете додати до свого сайту додаткові значення fastcgi_param для Nginx через директиву сайту params:

sites:
    - map: homestead.test
      to: /home/vagrant/project1/public
      params:
          - key: FOO
            value: BAR

Змінні оточення

Ви можете визначити глобальні змінні оточення, додавши їх до свого файлу Homestead.yaml:

variables:
    - key: APP_ENV
      value: local
    - key: FOO
      value: bar

Після оновлення файлу Homestead.yaml обов'язково перерозгорніть машину командою vagrant reload --provision. Це оновить конфігурацію PHP-FPM для всіх встановлених версій PHP, а також оновить оточення для користувача vagrant.

Порти

За замовчуванням до вашого середовища Homestead прокидаються такі порти:

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

Прокидання додаткових портів

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

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

Нижче наведено список додаткових портів сервісів Homestead, які ви можете захотіти змапити зі своєї хост-машини на Vagrant-бокс:

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

Версії PHP

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

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

Усередині вашої віртуальної машини Homestead ви можете використовувати будь-яку з підтримуваних версій PHP через CLI:

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

Ви можете змінити версію PHP за замовчуванням, яку використовує CLI, виконавши такі команди всередині своєї віртуальної машини Homestead:

php56
php70
php71
php72
php73
php74
php80
php81
php82
php83

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

База даних homestead налаштована як для MySQL, так і для PostgreSQL «з коробки». Щоб підключитися до своєї бази MySQL чи PostgreSQL з клієнта бази даних на хост-машині, підключайтеся до 127.0.0.1 на порт 33060 (MySQL) чи 54320 (PostgreSQL). Ім'я користувача й пароль для обох баз - homestead / secret.

Ці нестандартні порти слід використовувати лише під час підключення до баз даних з вашої хост-машини. У конфігураційному файлі database вашого Laravel-застосунку ви використовуватимете стандартні порти 3306 і 5432, оскільки Laravel працює всередині віртуальної машини.

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

Homestead може автоматично створювати резервні копії вашої бази даних, коли віртуальну машину Homestead знищують. Щоб скористатися цією можливістю, вам потрібен Vagrant 2.1.0 чи новіший. Або ж, якщо у вас старіша версія Vagrant, вам потрібно встановити плагін vagrant-triggers. Щоб увімкнути автоматичне резервне копіювання бази даних, додайте до свого файлу Homestead.yaml такий рядок:

backup: true

Після налаштування Homestead експортуватиме ваші бази даних до каталогів .backup/mysql_backup і .backup/postgres_backup під час виконання команди vagrant destroy. Ці каталоги можна знайти в теці, куди ви встановили Homestead, або в корені вашого проєкту, якщо ви користуєтеся методом встановлення для окремого проєкту.

Налаштування розкладу cron

Laravel дає зручний спосіб планувати cron-завдання, запускаючи щохвилини єдину артизан-команду schedule:run. Команда schedule:run перегляне розклад завдань, визначений у вашому файлі routes/console.php, щоб з'ясувати, які заплановані завдання виконати.

Якщо ви хочете, щоб команда schedule:run виконувалася для сайту Homestead, встановіть опцію schedule в true під час визначення сайту:

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

Cron-завдання для сайту буде визначено в каталозі /etc/cron.d віртуальної машини Homestead.

Налаштування Mailpit

Mailpit дозволяє перехоплювати вашу вихідну пошту й переглядати її, фактично не надсилаючи листи одержувачам. Для початку оновіть файл .env свого застосунку, щоб використовувати такі поштові налаштування:

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Щойно Mailpit буде налаштовано, ви зможете відкрити панель Mailpit за адресою http://localhost:8025.

Налаштування Minio

Minio - це сервер об'єктного сховища з відкритим кодом і API, сумісним з Amazon S3. Щоб установити Minio, оновіть свій файл Homestead.yaml, додавши такий параметр конфігурації до секції features:

minio: true

За замовчуванням Minio доступний на порту 9600. Ви можете відкрити панель керування Minio за адресою http://localhost:9600. Ключ доступу за замовчуванням - homestead, а секретний ключ за замовчуванням - secretkey. Звертаючись до Minio, завжди використовуйте регіон us-east-1.

Щоб користуватися Minio, переконайтеся, що ваш файл .env містить такі опції:

AWS_USE_PATH_STYLE_ENDPOINT=true
AWS_ENDPOINT=http://localhost:9600
AWS_ACCESS_KEY_ID=homestead
AWS_SECRET_ACCESS_KEY=secretkey
AWS_DEFAULT_REGION=us-east-1

Щоб створити «S3»-бакети на базі Minio, додайте до свого файлу Homestead.yaml директиву buckets. Визначивши свої бакети, виконайте в терміналі команду vagrant reload --provision:

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

Підтримувані значення policy: none, download, upload і public.

Laravel Dusk

Щоб запускати тести Laravel Dusk усередині Homestead, увімкніть можливість webdriver у своїй конфігурації Homestead:

features:
    - webdriver: true

Після увімкнення можливості webdriver виконайте в терміналі команду vagrant reload --provision.

Спільний доступ до вашого середовища

Іноді ви можете захотіти поділитися тим, над чим зараз працюєте, з колегами чи клієнтом. 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

Якщо вам потрібно поділитися вмістом через HTTPS, а не HTTP, скористайтеся командою sshare замість share.

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

Налагодження та профілювання

Налагодження вебзапитів за допомогою Xdebug

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

За замовчуванням Xdebug уже запущено й готово приймати з'єднання. Якщо вам потрібно увімкнути Xdebug у CLI, виконайте команду sudo phpenmod xdebug усередині своєї віртуальної машини Homestead. Далі дотримуйтеся інструкцій вашої IDE, щоб увімкнути налагодження. Насамкінець налаштуйте свій браузер запускати Xdebug через розширення чи букмарклет.

Xdebug змушує PHP працювати значно повільніше. Щоб вимкнути Xdebug, виконайте sudo phpdismod xdebug усередині своєї віртуальної машини Homestead і перезапустіть сервіс FPM.

Автозапуск Xdebug

Налагоджуючи функціональні тести, які роблять запити до вебсервера, простіше запускати налагодження автоматично, ніж змінювати тести так, щоб вони передавали власний заголовок чи cookie для запуску налагодження. Щоб змусити Xdebug стартувати автоматично, змініть файл /etc/php/7.x/fpm/conf.d/20-xdebug.ini усередині своєї віртуальної машини Homestead і додайте таку конфігурацію:

; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
xdebug.client_host = 192.168.10.1
xdebug.mode = debug
xdebug.start_with_request = yes

Налагодження CLI-застосунків

Щоб налагодити PHP CLI-застосунок, скористайтеся shell-аліасом xphp усередині своєї віртуальної машини Homestead:

xphp /path/to/script

Профілювання застосунків за допомогою Blackfire

Blackfire - це сервіс для профілювання вебзапитів і CLI-застосунків. Він пропонує інтерактивний інтерфейс, який показує дані профілювання у графах викликів і на часових шкалах. Його створено для використання в розробці, staging і продакшені, без накладних витрат для кінцевих користувачів. Крім того, Blackfire перевіряє продуктивність, якість і безпеку коду та налаштувань php.ini.

Blackfire Player - це застосунок з відкритим кодом для вебкраулінгу, вебтестування та вебскрапінгу, який може працювати разом з Blackfire, щоб скриптувати сценарії профілювання.

Щоб увімкнути Blackfire, скористайтеся налаштуванням «features» у своєму конфігураційному файлі Homestead:

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

Облікові дані сервера й клієнта Blackfire потребують облікового запису Blackfire. Blackfire пропонує різні способи профілювати застосунок, зокрема CLI-інструмент і розширення для браузера. Будь ласка, перегляньте документацію Blackfire, щоб дізнатися більше.

Мережеві інтерфейси

Властивість networks файлу Homestead.yaml налаштовує мережеві інтерфейси для вашої віртуальної машини Homestead. Ви можете налаштувати скільки завгодно інтерфейсів:

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

Щоб увімкнути мостовий інтерфейс, налаштуйте параметр bridge для мережі й змініть тип мережі на public_network:

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

Щоб увімкнути DHCP, просто приберіть зі своєї конфігурації опцію ip:

networks:
    - type: "public_network"
      bridge: "en1: Wi-Fi (AirPort)"

Щоб змінити пристрій, який використовує мережа, додайте до конфігурації мережі опцію dev. Значення dev за замовчуванням - eth0:

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

Розширення Homestead

Ви можете розширити Homestead за допомогою скрипта after.sh у корені свого каталогу Homestead. У цьому файлі ви можете додати будь-які shell-команди, потрібні для належного налаштування вашої віртуальної машини.

Налаштовуючи Homestead, Ubuntu може запитати вас, чи хочете ви зберегти оригінальну конфігурацію пакета, чи перезаписати її новим конфігураційним файлом. Щоб уникнути цього, використовуйте під час встановлення пакетів таку команду, аби не перезаписати конфігурацію, раніше записану Homestead:

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

Користувацькі налаштування

Використовуючи Homestead у команді, ви можете захотіти підлаштувати Homestead під свій особистий стиль розробки. Для цього створіть файл user-customizations.sh у корені свого каталогу Homestead (у тому самому каталозі, що містить ваш файл Homestead.yaml). У цьому файлі ви можете зробити будь-які налаштування; однак user-customizations.sh не слід тримати під контролем версій.

Налаштування, специфічні для провайдера

VirtualBox

natdnshostresolver

За замовчуванням Homestead встановлює налаштування natdnshostresolver у on. Це дозволяє Homestead використовувати налаштування DNS вашої хост-операційної системи. Якщо ви хочете перевизначити цю поведінку, додайте до свого файлу Homestead.yaml такі параметри конфігурації:

provider: virtualbox
natdnshostresolver: 'off'