Laravel Homestead
11.x
.
Почему это важно?
- Введение
- Включённое ПО
- Установка и настройка
- Первые шаги
- Настройка Homestead
- Запуск Vagrant Box
- Установка для проекта
- Установка MariaDB
- Повседневное использование
- Глобальный доступ к Homestead
- Подключение через SSH
- Подключение к базам данных
- Добавление дополнительных сайтов
- Настройка расписания Cron
- Порты
- Совместное использование вашей среды
- Несколько версий PHP
- Сетевые интерфейсы
- Обновление Homestead
- Старые версии
- Специальные настройки провайдера
- VirtualBox
Введение
Laravel стремится преобразить процесс разработки на PHP, это относится и к локальной среде разработки. Vagrant обеспечивает простой, элегантный способ настройки и управления виртуальными машинами.
Laravel Homestead — официальный предустановленный Vagrant-бокс, который предоставляет вам замечательную среду разработки без необходимости установки PHP, веб-сервера и любого другого серверного программного обеспечения на ваш компьютер. Можно больше не беспокоиться о том, что ваша операционная система засоряется! Vagrant-боксы очень удобны. Если что-то пошло не так, вы можете уничтожить и пересоздать бокс в считанные минуты!
Homestead запускается на ОС Windows, Mac и Linux, и включает в себя веб-сервер Nginx, PHP 7.1, MySQL, Postgres, Redis, Memcached, Node и все другие полезные штуки, которые вам понадобятся для разработки удивительных Laravel-приложений.
Если вы используете Windows, возможно, вам необходимо включить аппаратную виртуализацию (VT-x). Она обычно включается через BIOS. Если вы используете Hyper-V на UEFI-системе, вам может понадобиться отключить Hyper-V, для доступа к VT-x.
Включённое ПО
- Ubuntu 16.04
- Git
- PHP 7.1
- Nginx
- MySQL
- MariaDB
- Sqlite3
- Postgres
- Composer
- Node (с Yarn, Bower, Grunt, and Gulp)
- Redis
- Memcached
- Beanstalkd
- Mailhog
- ngrok
Установка и настройка
Первые шаги
Прежде чем запустить среду Homestead, вы должны установить VirtualBox 5.1, VMWare или Parallels, а также Vagrant. Эти программные пакеты предоставляют простые в использовании визуальные инсталляторы для всех популярных операционных систем.
Для использования VMWare вам необходимо приобрести и VMware Fusion/Workstation, и плагин VMware Vagrant. Хотя он и платный, зато VMware изначально обеспечивает большую скорость работы общих папок.
Для использования провайдера Parallels вам необходимо установить плагин Parallels Vagrant. Он бесплатный.
Установка Homestead Vagrant Box
После установки VirtualBox / VMware и Vagrant вы должны добавить бокс laravel/homestead
в ваш Vagrant, используя следующую команду в вашем терминале. Скачивание образа может занять несколько минут в зависимости от скорости вашего Интернет-подключения:
vagrant box add laravel/homestead
Если выполнение команды завершится неудачно, проверьте, что у вас установлена свежая версия Vagrant.
Установка Homestead
Вы можете установить Homestead просто клонировав репозиторий. Клонируйте репозиторий в папку Homestead
в директорию “home”, потому что коробка Homestead станет хостом всех ваших Laravel-проектов:
cd ~
git clone https://github.com/laravel/homestead.git Homestead
Вы должны проверить меченную версию Homestead, так как ветка master
не всегда может быть стабильна. Самую свежую стабильную версию можно найти на странице релиза в GitHub:
cd Homestead
// Клонировать желаемый релиз...
git checkout v6.1.0
После клонирования репозитория Homestead выполните в этой директории команду bash init.sh
, чтобы создать конфиг Homestead.yaml
. Файл Homestead.yaml
будет помещен в директорию Homestead:
// Mac / Linux...
bash init.sh
// Windows...
init.bat
Настройка Homestead
Настройка провайдера
Параметр provider
в вашем файле Homestead.yaml
указывает на то, какой Vagrant-провайдер следует использовать: virtualbox
, vmware_fusion
, vmware_workstation
или parallels
. Вы можете задать тот, который предпочитаете:
provider: virtualbox
Настройка общих папок
В свойстве folders
файла Homestead.yaml
перечислены все папки, которые вы хотите расшарить для вашей среды Homestead. Поскольку файлы в этих папках будут меняться, они будут синхронизироваться с вашей локальной машиной и средой Homestead. Вы можете настроить столько папок, сколько вам необходимо:
folders:
- map: ~/Code
to: /home/vagrant/Code
Для включения NFS просто добавьте простой ключ к вашей синхронизируемой папке:
folders:
- map: ~/Code
to: /home/vagrant/Code
type: "nfs"
При использовании NFS вам следует рассмотреть возможность установки плагина vagrant-bindfs. Этот плагин будет поддерживать верные права пользователя / группы относительно файлов / директорий для файлов и директорий в боксе Homestead.
Также вы можете передавать параметры, поддерживаемые синхронизируемыми папками Vagrant, указывая их под ключом options
:
folders:
- map: ~/Code
to: /home/vagrant/Code
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.app
to: /home/vagrant/Code/Laravel/public
Если вы измените параметр sites
после подключения Homestead-бокса, необходимо перезапустить vagrant reload --provision
, чтобы обновить конфигурацию Nginx на виртуальной машине.
Файл Hosts
Вы должны добавить “домены” для своих Nginx-сайтов в файл hosts
на вашей машине. Файл hosts
перенаправит запросы к вашим сайтам в вашу машину Homestead. На Mac и Linux этот файл расположен в /etc/hosts
. На Windows он расположен в C:\Windows\System32\drivers\etc\hosts
. Строки, которые вы добавляете в этот файл, будут выглядеть примерно так:
192.168.10.10 homestead.app
Удостоверьтесь, что IP-адрес тот же, что вы установили в своём файле Homestead.yaml
. Когда вы добавите домен в свой файл hosts
и запустите Vagrant-бокс, вы можете получить доступ к сайту через свой веб-браузер:
http://homestead.app
Запуск Vagrant Box
Когда вы отредактировали Homestead.yaml
по собственному усмотрению, выполните команду vagrant up
в папке Homestead. Vagrant загрузит виртуальную машину и настроит ваши общие папки и сайты Nginx автоматически.
Чтобы уничтожить машину, вы можете использовать команду vagrant destroy --force
.
Установка для проекта
Вместо глобальной установки Homestead и использования одного Homestead-бокса для всех ваших проектов, вы можете настроить отдельный экземпляр Homestead для каждого проекта. Установка Homestead для проекта может быть выгоднее, когда вы хотите поставлять файл Vagrantfile
вместе с вашим проектом, позволяя тем, кто работает над проектом, просто выполнять vagrant up
.
Чтобы установить Homestead непосредственно в ваш проект, затребуйте его с помощью Composer:
composer require laravel/homestead --dev
Когда Homestead установлен, используйте команду make
для создания Vagrantfile
и файла Homestead.yaml
в корне вашего проекта. Команда make
автоматически настроит директивы sites
м folders
в файле Homestead.yaml
.
Mac / Linux:
php vendor/bin/homestead make
Windows:
vendor\\bin\\homestead make
Затем выполните команду vagrant up
терминале и зайдите в свой проект по адресу http://homestead.app
через браузер. Не забывайте, что вам по-прежнему необходимо добавить строку для homestead.app
или любого другого выбранного вами домена в /etc/hosts
.
Установка MariaDB
Если вы решили использовать MariaDB вместо MySQL, вы можете добавить параметр mariadb
в свой файл Homestead.yaml
. Этот параметр удалит MySQL и установит MariaDB. MariaDB является полноценной заменой для MySQL, поэтому вы должны использовать тот же драйвер БД mysql
в настройках базы данных приложения:
box: laravel/homestead
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox
mariadb: true
Повседневное использование
Глобальный доступ к Homestead
Иногда вам может понадобиться выполнить vagrant up
yвашей 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-директории.
Но поскольку вам, скорее всего, потребуется часто подключаться к вашей Homestead-машине по SSH, будет удобно создать “функцию” на вашей хост-машине для быстрого подключения, как описано выше.
Подключение к базам данных
База homestead
изначально настроена на использование и MySQL, и Postgres. Для ещё большего удобства файл Laravel .env
настраивает фреймворк на использование этой БД по умолчанию.
Чтобы подключиться к вашей базе данных MySQL или Postgres через клиент БД с вашей хост-машины, вы должны подключиться к 127.0.0.1
через порт 33060
(MySQL) или 54320
(Postgres). Имя пользователя и пароль для обеих баз данных homestead
/ secret
.
Вы должны использовать эти нестандартные порты только подключаясь к базам данных с вашей главной машины. Вы будете использовать порты 3306 и 5432 в вашем конфигурационном файле базы данных Laravel, так как Laravel запущен на виртуальной машине.
Добавление дополнительных сайтов
После настройки и запуска вашей среды Homestead вы можете захотеть добавить дополнительные Nginx-сайты для своих Laravel-приложений. Вы можете запустить в одной среде Homestead столько установок Laravel, сколько захотите. Вы можете просто добавить сайты в свой файл Homestead.yaml
:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
- map: another.app
to: /home/vagrant/Code/another/public
Если Vagrant не управляет вашим файлом “hosts” автоматически, вам может потребоваться также добавить к тому файлу новый сайт:
192.168.10.10 homestead.app
192.168.10.10 another.app
После добавления сайта выполните команду vagrant reload --provision
из своей директории Homestead.
Типы сайтов
Homestead поддерживает несколько типов файлов, что позволяет вам запросто работать с проектами, которые не работаю на Laravel. Например, мы можем запросто добавить Symfony-приложение в Homestead, используя тип сайта symfony2
:
sites:
- map: symfony2.app
to: /home/vagrant/Code/Symfony/public
type: symfony2
Доступные типы сайтов: apache
, laravel
(по умолчанию), proxy
, silverstripe
, statamic
, symfony2
и symfony4
.
Параметры сайтов
Вы можете добавить дополнительные Nginx-значения fastcgi_param
вашему сайте через директиву params
. Например, мы добавим параметр FOO
со значением BAR
:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
params:
- key: FOO
value: BAR
Настройка расписания Cron
Laravel предоставляет удобный способ для планирования Cron-задач путём планирования единственной Artisan-команды schedule:run
на ежеминутное выполнение. Команда schedule:run
проверит запланированные задачи, определённые в классе App\Console\Kernel
, и определит, какие задачи необходимо выполнить.
Если вы хотите выполнить команду schedule:run
для сайта Homestead, вы можете задать значение true
для параметра schedule
при определении сайта:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
schedule: true
Cron-задача для сайта будет определена в папке /etc/cron.d
на виртуальной машине.
Порты
По умолчанию следующие порты переадресованы в вашу среду Homestead:
- SSH: 2222 → переадресован в 22
- HTTP: 8000 → переадресован в 80
- HTTPS: 44300 → переадресован в 443
- MySQL: 33060 → переадресован в 3306
- Postgres: 54320 → переадресован в 5432
- Mailhog: 8025 → переадресован в 8025
Перенаправление дополнительных портов
По желанию можно переадресовать дополнительные порты в Vagrant-бокс, а также указать их протокол:
ports:
- send: 50000
to: 5000
- send: 7777
to: 777
protocol: udp
Совместное использование вашей среды
Иногда вам может потребоваться поделиться тем, над чем вы работаете в данный момент, с другими разработчиками или клиентом. В Vagrant есть встроенный способ поддержки данного функционала через vagrant share
; однако, это не будет работать, если в вашем файле Homestead.yaml
настроено несколько сайтов.
Чтобы решить это проблему у Homestead есть собственная команда share
. Для начала подключитесь к своей Homested-машине через vagrant ssh
и выполните share homestead.app
. Это позволит поделиться сайтом homestead.app
из вашего конфига Homestead.yaml
. Конечно же, вы можете заменить любой из других своих настроенных сайтов на homestead.app
:
share homestead.app
После запуска команды вы увидите, как появится экран Ngrok, на котором содержится журнал активности и общедоступные URL для сайта, которым вы поделились. Если вы хотите указать пользовательскую область, поддомен или другую настройку Ngrok, можно добавить их к своей команде share
:
share homestead.app -region=eu -subdomain=laravel
Помните, что Vagrant от природы небезопасен и вы выставляете свою виртуальную машину всему Интернет-пространству во время запуска команды
share
.
Несколько версий PHP
Совместимо только с Nginx.
Homestead 6 представил поддержку нескольких версий PHP на одной и той же виртуальной машине. Вы можете указать какие версии PHP использовать для заданного сайта в своем файле Homestead.yaml
. Доступные версии PHP: “5.6”, “7.0” и “7.1”:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
php: "5.6"
Дополнительно вы можете пользоваться любой из поддерживаемых версий PHP через CLI:
php5.6 artisan list
php7.0 artisan list
php7.1 artisan list
Сетевые интерфейсы
Свойство 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)"
Обновление Homestead
Для обновления Homestead надо выполнить два простых шага. Во-первых, вам надо обновить Vagrant-бокс с помощью команды vagrant box update
:
vagrant box update
Затем вам надо обновить исходный код Homestead. Если вы клонировали репозиторий, то можете просто выполнить git pull origin master
в то место, куда вы клонировали репозиторий изначально.
Если вы установили Homestead через файл composer.json
, то должны убедиться, что файл composer.json
содержит строку "laravel/homestead": "^4"
и обновить ваши зависимости:
composer update
Старые версии
Если вам нужна более старая версия PHP, посмотрите документацию по нескольким PHP-версиям прежде чем начнете использовать старую версию Homestead.
Вы можете легко изменить используемую в Homestead версию бокса, добавив следующую строку в ваш файл Homestead.yaml
:
version: 0.6.0
Пример:
box: laravel/homestead
version: 0.6.0
ip: "192.168.20.20"
memory: 2048
cpus: 4
provider: virtualbox
При использовании старых версий бокса Homestead вам надо проверить версию на совместимость с исходным кодом Homestead. Ниже приведена таблица поддерживаемых версий бокса с указанием того, какую версию исходного кода необходимо использовать, и какая в коробке версия PHP:
Версия Homestead | Версия бокса | |
---|---|---|
PHP 7.0 | 3.1.0 | 0.6.0 |
PHP 7.1 | 4.0.0 | 1.0.0 |
Специальные настройки провайдера
VirtualBox
По умолчанию Homestead настраивает natdnshostresolver
как on
. Это позволяет Homestead использовать настройки DNS вашей операционной системы хоста. Если вы хотите переопределить такое поведение, добавьте следующие строки к своему файлу Homestead.yaml
:
provider: virtualbox
natdnshostresolver: off