Homestead Laravel
- Вступ
- Встановлення та налаштування
-
Щоденне використання
- Доступ до Homestead в усьому світі
- Підключення через SSH
- Підключення до баз даних
- Резервне копіювання баз даних
- Snapshots бази даних
- Додавання додаткових сайтів
- Змінні середовища
- Wildcard SSL
- Налаштування розкладу Cron
- Налаштування Mailhog
- Налаштування Minio
- Порти
- Спільне використання Environment
- Кілька версій PHP
- Веб-сервери
- Пошта
- Dusk Laravel
- Debug та профілювання
- Мережеві інтерфейси
- Розширення Homestead
- Оновлення Homestead
- Налаштування провайдера
Вступ
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.
Включене програмне забезпечення
Необов’язкове програмне забезпечення
Встановлення та налаштування
Перші кроки
Перед запуском середовища 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. Загальний робочий процес виглядає так:
- Імпортуйте базу даних за замовчуванням
master
лмм гілка. - Збережіть знімок незміненої бази даних за допомогою
sudo lmm branch prod-YYYY-MM-DD
. - Змінити базу даних.
- Біжи
sudo lmm merge prod-YYYY-MM-DD
скасувати всі зміни. - Біжи
sudo lmm delete <branch>
видалити непотрібні гілки.
Додавання додаткових сайтів
Після того, як ваше середовище Homestead буде створено та запущено, ви можете додати додаткові сайти Nginx для своїх програм Laravel. Ви можете запускати скільки завгодно установок Laravel в одному середовищі Homestead. Щоб додати додатковий сайт, додайте його до вашогоHomestead.yaml
файл:
sites:
- map: homestead.test
to: /home/vagrant/project1/public
- map: another.test
to: /home/vagrant/project2/public
Якщо Vagrant не керує автоматично вашим файлом "хостів", можливо, вам доведеться також додати новий сайт до цього файлу:
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