Установка и настройка рабочей среды Homestead для Laravel

dev15.10.2016

Homestead – это специально подготовленный разработчиками Laravel образ Ubuntu Linux, включающий в себя все необходимые инструменты для создания приложений на этом замечательном фреймворке. В официальной документации Laravel процесс установки Homestead описан довольно неплохо, но всё же содержит некоторые пробелы. Их я и попытаюсь заполнить в этой статье.

Итак, приступим. Первым делом нужно установить VirtualBox и Vagrant.

Последнюю версию VirtualBox можно скачать на странице https://www.virtualbox.org/wiki/Downloadsopen in new window. При установке можно оставить все настройки по умолчанию.

Установщик Vagrant скачиваем на странице https://developer.hashicorp.com/vagrant/installopen in new window. По умолчанию программа устанавливается в корень диска C:\, в папку HashiCorp\Vagrant\. Я предпочитаю изменить этот путь на C:\Program Files (x86)\HashiCorp\Vagrant\. После установки Vagrant потребуется перезагрузить компьютер.

Теперь нужно добавить бокс laravel/homestead в Vagrant. Открываем командную строку Windows от имени администратора (сочетание клавиш Win+R, затем команда cmd в окне Выполнить) и выполняем следующую команду:

vagrant box add laravel/homestead

В консоли вы увидите примерно следующее:

01

Процесс загрузки займёт некоторое время, в зависимости от скорости вашего интернет-соединения.

Для загрузки актуальной версии Homestead будем использовать Git. Скачать его можно на странице https://git-scm.com/downloadsopen in new window. При установке все настройки можно оставить по умолчанию. Чтобы команда git стала доступна в консоли Windows, также потребуется перезагрузить компьютер.

Теперь нужно клонировать репозиторий Homestead CLI в произвольную директорию, например в вашу домашнюю папку. Для этого запустите консоль Windows от имени администратора и выполните следующую команду:

git clone https://github.com/laravel/homestead.git Homestead

На экране вы увидите следующее:

02

При этом в вашем домашнем каталоге будет создана папка Homestead. Перейдите в неё и запустите файл init.bat, он создаст конфигурационный файл Homestead.yaml в папке .homestead в вашей домашней директории.

03

Теперь создадим SSH-ключи для доступа к нашей виртуальной машине. Для этого нужно открыть терминал, устанавливаемый вместе с Git (например, щёлкнув на экране правой кнопкой мыши и выбрав из контекстного меню пункт Git Bash Here) и выполнить следующую команду:

ssh-keygen -t rsa –C '[название ключа]'

При запросе пути к каталогу для сохранения файлов ключей просто нажмите Enter, при этом будет использовано значение по умолчанию, указанное в скобках (папка .ssh в домашней директории, будет создана автоматически). Также необходимо будет ввести и подтвердить пароль для ключа.

04

Чтобы Vagrant использовал именно эти ключи, а не создавал новые файлы ключей при каждом запуске из-за настроек безопасности, нужно добавить следующую строчку в файл Vagrantfile в папке Homestead:

config.ssh.insert_key = false

После этого он должен выглядеть примерно так:

# -*- mode: ruby -*-
# vi: set ft=ruby :

require 'json'
require 'yaml'

VAGRANTFILE_API_VERSION = "2"
confDir = $confDir ||= File.expand_path("~/.homestead")

homesteadYamlPath = confDir + "/Homestead.yaml"
homesteadJsonPath = confDir + "/Homestead.json"
afterScriptPath = confDir + "/after.sh"
aliasesPath = confDir + "/aliases"

require File.expand_path(File.dirname(__FILE__) + '/scripts/homestead.rb')

Vagrant.require_version '>= 1.8.4'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.ssh.insert_key = false
    
    if File.exist? aliasesPath then
        config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
    end

    if File.exist? homesteadYamlPath then
        settings = YAML::load(File.read(homesteadYamlPath))
    elsif File.exist? homesteadJsonPath then
        settings = JSON.parse(File.read(homesteadJsonPath))
    end

    Homestead.configure(config, settings)

    if File.exist? afterScriptPath then
        config.vm.provision "shell", path: afterScriptPath, privileged: false
    end

    if defined? VagrantPlugins::HostsUpdater
        config.hostsupdater.aliases = settings['sites'].map { |site| site['map'] }
    end
end

Всё почти готово к запуску, осталось совсем немного.

Для начала откроем файл Homestead.yaml (помните, он находится в папке .homestead в нашей домашней директории). Вот его содержимое:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

Здесь содержатся настройки виртуальной машины. В принципе, все они вполне работоспособны, нужно лишь внести небольшие изменения в настройки операционной системы. В первую очередь создадим папку Code в нашей домашней директории. Через эту папку мы сможем работать с сайтом, который будет доступен по адресу http://homestead.appopen in new window. Чтобы получить возможность обращаться к этому сайту из браузера, добавим следующую строку в файл hosts, находящийся в директории C:\Windows\System32\drivers\etc\:

192.168.10.10 homestead.app

SSH-ключи уже созданы и находятся в нужной директории.

Всё готово к запуску системы. Перейдите в директорию с установленным Homestead, откройте терминал и выполните команду vagrant up.

05
06
07
08

Поздравляю! Мы запустили виртуальную машину Homestead. Проверить её статус можно с помощью команды vagrant status, для остановки виртуальной машины используйте команду vagrant halt.

Открыв страницу http://hometead.appopen in new window вы увидите следующее:

09

Это всего лишь означает, что в рабочей директории сайта, определённой в файле Homestead.yaml, пока что нет файлов. Это легко исправить, добавив файлы сайта в папку Code\Laravel\public\ (такая конфигурация очень удобна для установки Laravel: скопировав дистрибутив в папку Laravel мы получаем доступ к папке public через браузер, сами файлы движка при этом остаются недоступными извне).

Осталось настроить доступ к виртуальной машине через SSH.

Нам понадобится SSH-клиент PuTTY, доступный на этойopen in new window странице. Предлагаю скачать ZIP-архив и распаковать его в папку Putty в вашей домашней директории. Запустите файл PUTTY.exe. Подключиться можно со следующими параметрами:

  • Логин: vagrant
  • Пароль: vagrant
  • Адрес сервера: 127.0.0.1
  • Порт: 2222

Введите все эти параметры (кроме пароля) в окне PuTTY Configuration и нажмите кнопку Open.

10

Введите пароль в окне терминала (пароль не отображается при вводе, и может сложиться впечатление, что терминал завис, однако это не так) и нажмите Enter. После этого вы сможете работать с виртуальной машиной через SSH.

11

Можно автоматизировать процесс подключения, исключив необходимость каждый раз вводить все данные и пароль. Данные для подключения мы сохраним в PuTTY, для подключения будем использовать ранее сгенерированный SSH-ключ.

Проблема в том, что PuTTY использует собственный формат приватных ключей для подключения. К счастью, в его составе есть утилита для конвертации стандартных файлов ключей. Запустите PUTTYGEN.EXE, нажмите кнопку Load и выберите ранее сгенерированный файл приватного ключа id_rsa (для возможности выбора установите режим просмотра на показ всех файлов в выпадающем меню справа от поля Имя файла).

12
13

После выбора потребуется ввести пароль, использованный вами при генерации ключа. Файл ключа будет загружен и сконвертирован в формат PuTTY. Очистите поля Key passphrase и Confirm passphrase, чтобы впоследствии подключаться без пароля.

14

Теперь нажмите кнопку Save private key и сохраните ключ в той же папке под именем id_rsa.ppk, предварительно согласившись на создание ключа без пароля.

Снова откройте PUTTY.EXE. В разделе Session введите настройки подключения, как делали до этого. Затем перейдите в раздел Connection > SSH > Auth, нажмите кнопку Browse и выберите ранее сгенерированный файл приватного ключа.

15

Вернитесь в раздел Session и сохраните конфигурацию. Для этого в поле Saved Sessions введите произвольное имя конфигурации (например Homestead) и нажмите кнопку Save.

16

Для подключения дважды кликните по имени сохранённой конфигурации в списке.

17

На этом настройку рабочей среды Homestead можно считать завершённой.