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

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

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

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

Установщик Vagrant скачиваем на странице https://www.vagrantup.com/downloads.html. По умолчанию программа устанавливается в корень диска C:\, в папку HashiCorp\Vagrant\. Я предпочитаю изменить этот путь на C:\Program Files (x86)\HashiCorp\Vagrant\. После установки Vagrant потребуется перезагрузить компьютер.

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

vagrant box add laravel/homestead

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

02

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

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

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

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

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

03

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

04

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

ssh-keygen -t rsa –C '[Ваш email]'

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

05

Чтобы 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.app. Чтобы получить возможность обращаться к этому сайту из браузера, добавим следующую строку в файл hosts, находящийся в директории C:\Windows\System32\drivers\etc\:

192.168.10.10 homestead.app

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

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

06
07
08
09

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

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

10

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

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

Скачиваем SSH-клиент PuTTY на странице http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. Предлагаю скачать ZIP-архив и распаковать его в папку Putty в вашей домашней директории. Запустите файл PUTTY.exe. Подключиться можно со следующими параметрами:

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

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

11

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

12

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

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

13
14

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

15

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

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

16

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

17

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

18

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