git a986601afa71ddce152a46b61057d48e14644121
Laravel старается сделать восхитительной не только разработку на PHP, но и поднять на уровень выше вашу локальную среду разработки.
Vagrant предоставляет простой и элегантный способ создания и управления виртуальными машинами. Laravel Homestead является официальным "образом" (box) для Vagrant'а, и предоставляет замечательную среду разработки, не требуя устанавливать PHP, веб-сервер и какое бы то ни было дополнительное серверное ПО на вашей локальной машине. Больше не стоит беспокоиться о захламлении вашей операционной системы! Боксы Vagrant'а являются полностью одноразовыми. Если что-то пойдет не так, вы сможете уничтожить и пересоздать бокс за считанные минуты!
Homestead работает под любыми версиями Windows, Mac и Linux, и включает веб-сервер Nginx, PHP 5.6, MySQL, Postgres, Redis, Memcached и другие вкусности, которые могут потребоваться вам для разработки потрясающих Laravel-приложений.
Примечание: Если вы используете Windows, то вам надо разрешить в БИОСе аппаратную виртуализацию (VT-x).
Текущая версия Homestead создана и протестирована для использования под Vagrant 1.6.
- Ubuntu 14.04
- PHP 5.6
- Nginx
- MySQL
- Postgres
- Node (включая Bower, Grunt и Gulp)
- Redis
- Memcached
- Beanstalkd
- Laravel Envoy
- Fabric + HipChat Extension
Перед запуском среды Homestead, вы должны установить VirtualBox и Vagrant. Оба этих программных продукта имеют легкие в использовании установщики для всех популярных операционных систем.
Как только VirtualBox и Vagrant будут установлены, вам следует добавить бокс laravel/homestead
в Vagrant, используя следующую команду в командной строке. Процесс скачки бокса займет какое-то время, в зависимости от скорости вашего интернет-соединения:
vagrant box add laravel/homestead
На машине должен быть установлен PHP и Composer
После того как бокс Homestead добавлен в Vagrant, при помощи композера установите глобально инструмент Homestead CLI:
composer global require "laravel/homestead=~2.0"
Проверьте, чтобы папка ~/.composer/vendor/bin
(C:\Users\username\AppData\\Roaming\Сomposer\vendor\bin
в случае Windows) находилась у вас в PATH. Для проверки выполните в терминале команду homestead
.
После установки инструмента, создайте конфигурационный файл Homestead.yaml
:
homestead init
Файл Homestead.yaml
будет создан в папке ~/.homestead
(или C:\Users\username\.homestead
в случае Windows). Если вы используете Mac, Linux, или у вас в Windows стоит cygwin или msysgit (он ставится вместе с git), то вы можете редактировать его при помощи этой команды:
homestead edit
В этом варианте вы можете обойтись без установки PHP на локальную машину, вам понадобится только установленный Git+msysgit.
Склонируйте репозиторий с Homestead CLI в произвольную директорию:
git clone https://github.com/laravel/homestead.git Homestead
Выполните команду:
bash init.sh
Она создаст файл Homestead.yaml
в папке ~/.homestead
(или C:\Users\username\.homestead
в случае Windows)
Далее вам нужно отредактировать созданный Homestead.yaml
. В этом файле вы можете указать путь к вашему публичному и приватному SSH-ключам, а также сконфигурировать совместно используемые локальной и виртуальной машиной папки.
Ни разу не использовали SSH ключи? Под Mac, Linux или Windows с установленным Git+msysgit вы можете создать пару ключей (приватный id_rsa и публичный id_rsa.pub), используя следующую команду:
ssh-keygen -t rsa -C "[email protected]"
В Windows в качестве альтернативы вы можете использовать PuTTYgen.
Укажите путь к публичному ключу в свойстве authorize
файла Homestead.yaml
, а путь к приватному - в свойстве keys
.
В свойстве folders
в файле Homestead.yaml
перечислены все локальные папки, доступ к которым вы хотите предоставить в среде Homestead. Файлы в этих папках будут синхронизироваться между локальной и виртуальной машиной. Синхронизация будет двусторонней. Настроить можно столько папок, сколько необходимо.
Еще не знакомы с Nginx? Никаких проблем. Свойство sites
позволяет легко связать домен и папку в среде Homestead. В файле Homestead.yaml
имеется пример настройки одного сервера. Опять же, вы можете добавить столько сайтов, сколько вам нужно. Homestead может служить удобной виртуальной средой для нескольких проектов на Laravel.
Если вы хотите, чтобы ваш сайт работал под управлением HHVM, установите параметр hhvm
в true
:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
hhvm: true
Чтобы добавить произвольный алиас в Homestead, просто укажите его в файле aliases
в папке ~/.homestead
.
После того как вы отредактировали файл Homestead.yaml
, выполните в терминале команду vagrant up
из каталога с установленным Homestead.
Vagrant запустит виртуальную машину, настроит синхронизацию папок и сконфигурирует веб-сервер Nginx согласно вашему конфигу.
Чтобы уничтожить виртуальную машину, выполните команду vagrant destroy --force
.
Не забудьте добавить домены, которые вы будете использовать в Homestead, в файл hosts
. Файл hosts
будет перенаправлять ваши запросы к локальным доменам в среду Homestead. Под Mac и Linux это /etc/hosts
. В Windows - C:\Windows\System32\drivers\etc\hosts
. Строки, добавляемые вами в этот файл, будут выглядеть примерно так:
192.168.10.10 homestead.app
где 192.168.10.10 - это ip-адрес, прописанный в Homestead.yaml
После того, как вы добавите домен в файл hosts
, вы получите доступ к сайту, развернутому в Homestead из вашего браузера.
http:https://homestead.app
Чтобы подсоединиться к виртуальной машине Homestead по SSH, нужно выполнить в терминале команду vagrant ssh
из каталога с установленным Homestead.
Вероятно, вам придется часто подключаться к вашей Homestead-машине, поэтому логичным будет создать «alias» на хост-машине:
alias vm="ssh [email protected] -p 2222"
После этого вы сможете подключаться к вашей Homestead-машине с помощью команды vm
из любого каталога.
В Homestead установлены две СУБД - MySQL и Postgres. И там и там создана база данных homestead
. В Laravel, дефолтных конфигах для среды выполнения local
, уже указаны параметры для работы с этой базой данных.
Для соединения с СУБД Homestead вам нужно настроить клиент (Navicat, Sequel Pro, HeidiSQL и т.п.) на соединение с ip 127.0.0.1 и портом 33060 (MySQL) или 54320 (Postgres). Логин и пароль одинаковые для этих СУБД - homestead
/ secret
Примечание: Эти нестандартные порты следует использовать только когда вы устанавливаете соединение из своей основной системы. В файлах конфигурации Laravel следует использовать порты по умолчанию 3306 и 5432, так как Laravel запускается внутри виртуальной машины.
Через некоторое время вам, возможно, потребуется добавить домены новых сайтов в Homestead. Для этого есть два способа.
Во-первых, вы можете просто добавить сайты в файл Homestead.yaml
, после чего выполнить vagrant provision
.
Или же вы можете воспользоваться скриптом serve
, доступным в среде Homestead. Для того, чтобы им воспользоваться, войдите по SSH в среду Homestead и выполните следующую команду:
serve domain.app /home/vagrant/Code/путь/к/директории/public
Замечание: После запуска команды
serve
не забудьте добавить новый домен в файлhosts
в вашей основной системе.
Список портов, которые перенаправляются из локальной машины в Homestead:
- SSH: 2222 → Перенаправление на порт 22
- HTTP: 8000 → Перенаправление на порт 80
- MySQL: 33060 → Перенаправление на порт 3306
- Postgres: 54320 → Перенаправление на порт 5432