Laravel Homestead

Введение

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

Установка и настройка

Установка VirtualBox и Vagrant

Перед запуском среды Homestead, вы должны установить VirtualBox и Vagrant. Оба этих программных продукта имеют легкие в использовании установщики для всех популярных операционных систем.

Добавление бокса в Vagrant

Как только VirtualBox и Vagrant будут установлены, вам следует добавить бокс laravel/homestead в Vagrant, используя следующую команду в командной строке. Процесс скачки бокса займет какое-то время, в зависимости от скорости вашего интернет-соединения:

vagrant box add laravel/homestead

Установка Homestead

При помощи Composer и PHP

На машине должен быть установлен 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    

При помощи git

В этом варианте вы можете обойтись без установки 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)

SSH-ключи

Далее вам нужно отредактировать созданный Homestead.yaml. В этом файле вы можете указать путь к вашему публичному и приватному SSH-ключам, а также сконфигурировать совместно используемые локальной и виртуальной машиной папки.

Ни разу не использовали SSH ключи? Под Mac, Linux или Windows с установленным Git+msysgit вы можете создать пару ключей (приватный id_rsa и публичный id_rsa.pub), используя следующую команду:

ssh-keygen -t rsa -C "your@email.com"

В 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

Алиасы (aliases) Bash

Чтобы добавить произвольный алиас в Homestead, просто укажите его в файле aliases в папке ~/.homestead.

Запуск Vagrant

После того как вы отредактировали файл 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://homestead.app

Повседневное использование

Соединение По SSH

Чтобы подсоединиться к виртуальной машине Homestead по SSH, нужно выполнить в терминале команду vagrant ssh из каталога с установленным Homestead.

Вероятно, вам придется часто подключаться к вашей Homestead-машине, поэтому логичным будет создать «alias» на хост-машине:

alias vm="ssh vagrant@127.0.0.1 -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