Версія фреймворка: 8.x

Homestead Laravel

Вступ

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

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

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 (`master` branch) - Ubuntu 20.04 (`20.04` branch) - Git - PHP 8.0 - 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,ПаралеліабоХопер-Втак само, як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 не слід використовувати~/path синтаксис і замість цього повинні використовувати повний шлях до свого проекту, наприкладC:\Users\user\Code\project1.

Завжди слід зіставляти окремі проекти з їх власними папками, а не цілими~/codeпапку. Коли ви зіставляєте папку, віртуальна машина повинна відстежувати всі дискові операції введення-виведення_кожен_файл у папці. Це призводить до проблем із продуктивністю, якщо у вас є велика кількість файлів у папці.

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

    - map: ~/code/project2
      to: /home/vagrant/project2
Ніколи не слід монтувати.(поточний каталог) при використанні Homestead. Це призводить до того, що Vagrant не відображає поточну папку/vagrantі порушить додаткові функції та призведе до несподіваних результатів під час резервування.

Для того, щобТой самий, вам потрібно лише додати простий прапор до конфігурації синхронізованої папки:

folders:
    - map: ~/code/project1
      to: /home/vagrant/project1
      type: "nfs"
Під час використання NFS у Windows, вам слід розглянути можливість встановленняVagrantа-winnfsdпідключати. Цей плагін підтримуватиме правильні дозволи користувачів / груп для файлів та каталогів у полі Homestead.

Ви також можете передати будь-які варіанти, підтримувані Vagrant'sСинхронізовані папкиперерахувавши їх під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 для 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

Запуск кошика Vagrant

Після редагування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або вибраний вами домен, якщо ви не використовуєте автоматичнийдозвіл імені хосту.

Встановлення додаткових функцій

Додаткове програмне забезпечення встановлюється за допомогою параметра "особливості" у вашому файлі конфігурації 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, яка повинна мати точний номер версії (major.minor.patch). Інсталяція за замовчуванням створить кластер із назвою 'садиба'. Ви ніколи не повинні віддавати Elasticsearch більше половини пам'яті операційної системи, тому переконайтеся, що ваш апарат Homestead має принаймні вдвічі більше розподілу Elasticsearch.

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

Neo4j

За замовчуванням установка Neo4j встановить ім’я користувача бази данихhomesteadі відповідний пароль доsecret. Щоб отримати доступ до браузера Neo4j, відвідайтеhttp://homestead.test:7474через веб-браузер. Порти7687(Болт),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.

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

Ahomesteadбаза даних налаштована як для 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, або в кореневій частині вашого проекту, якщо ви використовуєтеза встановлення проектуметод.

Snapshots бази даних

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

Під капотом LMM використовує тонку функцію знімка LVM з підтримкою копіювання на запис. На практиці це означає, що зміна одного рядка в таблиці призведе лише до того, що внесені вами зміни будуть записані на диск, заощаджуючи значний час та місце на диску під час відновлення.

Оскількиlmmвзаємодіє з LVM, його потрібно запускати якroot. Щоб переглянути всі доступні команди, запустітьsudo lmmвсередині вашої коробки Vagrant. Загальний робочий процес виглядає так:

  1. Імпортуйте базу даних за замовчуваннямmasterлмм гілка.
  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 не керує автоматично вашим файлом "хостів", можливо, вам доведеться також додати новий сайт до цього файлу:

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.

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

Ви можете додати додатковий Nginxfastcgi_paramзначення для вашого сайту черезparamsдиректива сайту. Наприклад, ми додамо aFOOпараметр зі значенням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файл. Якщо ви хочете створити підстановочний SSL-сертифікат для сайту, ви можете додатиwildcardваріант конфігурації цього сайту. За замовчуванням сайт використовуватиме сертифікат підстановки_натомість_сертифіката конкретного домену:

- map: foo.domain.test
  to: /home/vagrant/domain
  wildcard: "yes"

Якщоuse_wildcardдля параметра встановлено значенняno, сертифікат підстановки буде створений, але не використовуватиметься:

- map: foo.domain.test
  to: /home/vagrant/domain
  wildcard: "yes"
  use_wildcard: "no"

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

Laravel забезпечує зручний спосіброзклад роботи Cronшляхом складання розкладу на одинschedule:runРеміснича команда повинна виконуватися щохвилини.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

Щоб забезпечити сегменти, додайте abucketsдиректива до вашого конфігураційного файлу 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

Спільне використання Environment

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

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

php56
php70
php71
php72
php73
php74

Веб-сервери

Homestead використовує веб-сервер Nginx за замовчуванням. Однак він може встановити Apache, якщоapacheвказано як тип сайту. Хоча обидва веб-сервери можуть бути встановлені одночасно, вони не можуть бути обома_біг_в той самий час.flipКоманда shell доступна для полегшення процесу перемикання між веб-серверами.flipКоманда автоматично визначає, який веб-сервер запущений, вимикає його, а потім запускає інший сервер. Щоб скористатися цією командою, вставте SSH у машину Homestead і запустіть команду у своєму терміналі:

flip

Пошта

До складу Homestead входить агент передачі пошти Postfix, який прослуховує порт1025за замовчуванням. Отже, ви можете доручити своїй програмі використовуватиsmtpпоштовий драйвер наlocalhostпорт1025. Тоді вся надіслана пошта буде оброблятися Postfix і перехоплюватися Mailhog. Щоб переглянути надіслані електронні листи, відкрийтеhttp: // localhost: 8025у веб-браузері.

Dusk Laravel

Для того, щоб бігтиDusk Laravelтести в Homestead, вам слід увімкнутиwebdriverособливістьу вашій конфігурації Homestead:

  features:
      - webdriver: true

Не забудьте забезпечити свою віртуальну машину Homestead згодом, щоб забезпечитиwebdriverфункція повністю встановлена.

Debug та профілювання

Debug веб-запитів за допомогою Xdebug

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

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

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

Debug програм CLI

Для Debug програми PHP CLI використовуйтеxphpпсевдонім оболонки всередині вашої коробки Vagrant:

xphp path/to/script

Автозапуск Xdebug

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

; If Homestead.yaml contains a different subnet for the IP address, this address may be different...
xdebug.remote_host = 192.168.10.1
xdebug.remote_autostart = 1

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

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

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

Щоб увімкнути Blackfire, використовуйте параметр "особливості" у файлі конфігурації 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 можна переглядати так само, як результати веб-профілю.

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

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

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

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

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

Щоб увімкнути aмостовийінтерфейс, налаштуйте abridgeналаштування та змініть тип мережі на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