Может войдёшь?
Черновики Написать статью Профиль

Valet

перевод документация 5.х

  1. 1. Введение
    1. 1.1. Valet или Homestead
  2. 2. Установка
    1. 2.1. Обновление
  3. 3. Описание версии
    1. 3.1. Версия 1.1.5
    2. 3.2. Версия 1.1.0
  4. 4. Обслуживание сайтов
  5. 5. Открытие общего доступа к сайтам
  6. 6. Просмотр журналов
  7. 7. Пользовательские драйверы Valet
  8. 8. Другие команды Valet
Этот перевод актуален для англоязычной документации на (ветка 5.3) и (ветка 5.2). Опечатка? Выдели и нажми Ctrl+Enter.

Введение

Valet — среда для разработки в Laravel для минималистов, работающих на Mac. Без Vagrant, без файла /etc/hosts. Можно даже расшаривать сайты в общий доступ через локальные туннели. Да, нам и самим это нравится.

Laravel Valet включает на вашем Mac фоновую автозагрузку Nginx (до версии Valet 2.0 — Caddy ). Затем с помощью DnsMasq Valet настраивает прокси для всех запросов к домену *.dev, для переадресации их на сайты на вашей локальной машине.

Другими словами, это молниеносное окружение для разработки в Laravel, которое использует около 7 Мб RAM. Valet не является полной заменой для Vagrant или Homestead, но предоставляет отличную альтернативу, когда вам нужна база для гибкой настройки, максимальная скорость, или вы работаете на машине с ограниченным объёмом RAM.

Из коробки Valet поддерживает (но не ограничивается только ими):

Также вы можете дополнить Valet своим собственным драйвером.

Valet или Homestead

Как вы знаете, Laravel предлагает Homestead — другую локальную среду разработки. Valet и Homestead отличаются целевой аудиторией и подходом к локальной разработке. Homestead включает в себя целую виртуальную машину с Ubuntu и автоматической настройкой Nginx. Homestead — отличный выбор, если вам нужна полностью виртуальная среда разработки на Linux или на Windows / Linux.

Valet поддерживает только Mac и требует установки PHP и сервера базы данных непосредственно на вашу локальную машину. Это легко делается при помощи Homebrew такими командами: shbrew install php71 и shbrew install mariadb. Valet обеспечивает молниеносную среду разработки с минимальным потреблением ресурсов, поэтому идеально подходит для разработчиков, использующих только PHP / MySQL и не нуждающихся в полностью виртуальной среде разработки.

И Valet, и Homestead являются отличным выбором для настройки среды разработки в Laravel. Выбор зависит от ваших личных предпочтений и потребностей вашей команды.

Установка

Valet требует MacOS и Homebrew. Перед установкой необходимо убедиться, что другие программы, такие как Apache и Nginx, не используют 80 порт вашей локальной машины.

  • Установите или обновите Homebrew до последней версии с помощью shbrew update.
  • Установите PHP 7.1 с помощью Homebrew командой shbrew install homebrew/php/php71.
  • Установите Valet через Composer командой shcomposer global require laravel/valet. Убедитесь, что в вашей системной переменной PATH есть каталог ~/.composer/vendor/bin.
  • Выполните команду shvalet install. Она установит и настроит Valet и DnsMasq, и пропишет демон Valet в автозагрузку.

После установки Valet попробуйте выполнить в терминале shping к любому домену *.dev такой командой shping foobar.dev. Если Valet установлен корректно, то вы увидите, что этот домен соответствует 127.0.0.1.

Valet автоматически запускает своего демона при запуске ОС. После начальной установки Valet больше не потребуется выполнять shvalet start или shvalet install.

Использование другого домена

По умолчанию Valet использует для ваших проектов домен верхнего уровня .dev. Если вы хотите использовать другой домен, используйте команду shvalet domain tld-name.

Например, чтобы использовать .app вместо .dev, выполните shvalet domain app, и Valet автоматически начнёт использовать новый домен.

База данных

Если вам нужна база данных, попробуйте MariaDB с помощью команды shbrew install mariadb. После установки MariaDB, вы можете запустить её командой shbrew services start mariadb. Затем вы можете подключиться к БД на 127.0.0.1, имя пользователя — root, пароль — пустая строка.

+ 5.3

добавлено в 5.3 ()

Обновление

Вы можете обновить установленный Valet терминальной командой shcomposer global update. После обновления рекомендуется выполнить команду shvalet install, чтобы Valet сделал дополнительные обновления ваших конфигурационных файлов при необходимости.

Обновление до Valet 2.0

В Valet 2.0 изменён базовый веб-сервер с Caddy на Nginx. Перед обновлением на эту версию вы должны выполнить следующие команды, чтобы остановить и удалить существующий демон Caddy:

shvalet stop
valet uninstall

Далее вам надо обновить Valet до последней версии. Это делается с помощью Git или Composer, в зависимости от того, как вы устанавливали Valet изначально. Если вы устанавливали его через Composer, то вам надо использовать следующие команды для обновления до последней мажорной версии:

shcomposer global require laravel/valet

Когда будет скачан свежий исходный код Valet, вы должны выполнить команду shinstall:

shvalet install
valet restart

После обновления может понадобиться пере-разместить или пере-привязать ваши сайты.

+ 5.2

добавлено в 5.2 ()

Описание версии

Версия 1.1.5

В версию 1.1.5 вошло множество внутренних улучшений.

Инструкции по обновлению

После обновления Valet с помощью команды shcomposer global update вам надо выполнить команду shvalet install.

Версия 1.1.0

В версию 1.1.0 вошло множество значительных улучшений. Встроенный PHP-сервер был заменён на Caddy для обработки входящих HTTP-запросов. Выбор Caddy позволит сделать множество улучшений в будущем, а также позволяет сайтам Valet выполнять HTTP-запросы к другим сайтам Valet, не блокируя встроенный PHP-сервер.

Инструкции по обновлению

После обновления Valet с помощью команды shcomposer global update вам надо выполнить команду shvalet install для создания нового файла демона Caddy в вашей системе.

Обслуживание сайтов

После установки Valet можно начать обслуживать сайты. Valet предоставляет две команды для помощи в обслуживании Laravel-сайтов: shpark и shlink.

Команда shpark

  • Создайте новый каталог на своём Mac с помощью команды shmkdir ~/Sites. Затем перейдите к ней shcd ~/Sites и выполните shvalet park. Эта команда зарегистрирует текущий каталог как путь, по которому Valet будет искать сайты.
  • Теперь создайте новый Laravel-сайт в этом каталоге: shlaravel new blog.
  • Откройте http://blog.dev в своём браузере.

Вот и всё. Теперь все проекты, которые вы разместите в каталоге «парковки», будут обслуживаться автоматически с адресами в соответствии с названиями их папок http://folder-name.dev.

Команда shlink

Для обслуживания Laravel-сайтов также можно использовать команду shlink. Эта команда полезна, когда вы хотите обслуживать один сайт в каталоге, а не весь каталог.

  • Для использования команды перейдите к одному из своих проектов и выполните shvalet link app-name в терминале. Valet создаст в ~/.valet/Sites символьную ссылку на ваш текущий каталог.
  • После запуска команды shlink вы можете перейти на сайт http://app-name.dev в своём браузере.

Для просмотра списка всех привязанных каталогов выполните команду shvalet links. Для удаления символьной ссылки используйте shvalet unlink app-name.

+ 5.3

добавлено в 5.3 ()

Вы можете использовать команду shvalet link для обслуживания одного проекта из нескольких (под)доменов. Чтобы добавить поддомен или другой домен в свой проект, выполните shvalet link subdomain.app-name в папке проекта.

Защита сайтов с помощью TLS

По умолчанию Valet обслуживает сайты через чистый HTTP. Но при желании вы можете включить шифрование TLS, используя HTTP/2, с помощью команды shsecure. Например, если Valet обслуживает ваш сайт на домене laravel.dev, то для его защиты вам надо выполнить команду:

shvalet secure laravel

Чтобы отключить защиту и перевести трафик обратно на чистый HTTP, используйте команду shunsecure. Как и команда secure эта команда принимает имя хоста, для которого необходимо отключить защиту:

shvalet unsecure laravel

Открытие общего доступа к сайтам

Valet имеет команду для открытия доступа к вашим локальным сайтам для всех. Кроме Valet не нужно никакое ПО.

Для открытия доступа к сайту перейдите в терминале в его каталог и выполните команду shvalet share. URL для общего доступа будет помещён в буфер обмена, и его можно вставить в браузер. Это всё.

Для закрытия общего доступа нажмите Control + C для отмены процесса.

+ 5.3

добавлено в 5.3 ()

В настоящее время shvalet share не поддерживает общий доступ к сайтам, которые были защищены командой shvalet secure.

+ 5.2

добавлено в 5.2 ()

Просмотр журналов

Для вывода в терминал всех журналов по всем вашим сайтам выполните команду shvalet logs. Новые записи журналов будут выводиться в терминал по мере их появления. Это отличный способ следить за всеми журналами, не выходя из терминала.

Пользовательские драйверы Valet

Вы можете написать свой собственный «драйвер» Valet для обслуживания PHP-приложений, работающих на другом фреймворке или CMS, изначально не поддерживаемых Valet. При установке Valet создаётся папка ~/.valet/Drivers, содержащая файл SampleValetDriver.php. В этом файле находится пример реализации драйвера для демонстрации. Для написания драйвера необходимо реализовать всего три метода: PHPserves(), PHPisStaticFile() и PHPfrontControllerPath().

Все три метода принимают в качестве аргументов PHP$sitePath, PHP$siteName и PHP$uri. Параметр PHP$sitePath — полный путь к сайту на вашей машине, например, /Users/Lisa/Sites/my-project. Параметр PHP$siteName — часть домена «хост» / «имя сайта» (my-project). Параметр PHP$uri — URI входящих запросов (/foo/bar).

Когда вы завершили написание своего драйвера Valet, поместите его в каталог ~/.valet/Drivers используя принцип именования FrameworkValetDriver.php. Например, если вы написали драйвер для WordPress, то имя файла должно быть WordPressValetDriver.php.

Давайте рассмотрим примеры реализации каждого из этих методов.

Метод PHPserves()

Метод PHPserves() должен возвращать PHPtrue, если ваш драйвер должен обрабатывать входящие запросы. Иначе метод должен возвращать PHPfalse. В этом методе вы должны попытаться определить, содержит ли данный PHP$sitePath проект того типа, который вы хотите обслуживать.

Например, давайте предположим, что мы пишем WordPressValetDriver. Наш метод PHPserves() должен выглядеть примерно так:

PHP
/**
 * Определение, обслуживает ли драйвер запрос.
 *
 * @param  string  $sitePath
 * @param  string  $siteName
 * @param  string  $uri
 * @return bool
 */
public function serves($sitePath$siteName$uri)
{
  return 
is_dir($sitePath.'/wp-admin');
}

Метод PHPisStaticFile()

Метод PHPisStaticFile() должен определять, является ли входящий запрос запросом к «статическому» файлу, такому как изображение или таблица стилей. Если файл статический, метод должен вернуть полный путь к этому файлу на диске. Если входящий запрос не к статическому файлу, метод должен вернуть PHPfalse:

PHP
/**
 * Определение, является ли входящий запрос запросом к статическому файлу.
 *
 * @param  string  $sitePath
 * @param  string  $siteName
 * @param  string  $uri
 * @return string|false
 */
public function isStaticFile($sitePath$siteName$uri)
{
  if (
file_exists($staticFilePath $sitePath.'/public/'.$uri)) {
    return 
$staticFilePath;
  }

  return 
false;
}

Метод PHPisStaticFile() будет вызван, только если метод PHPserves() возвращает PHPtrue для входящего запроса, и значение URI запроса не равно /.

Метод PHPfrontControllerPath()

Метод PHPfrontControllerPath() должен вернуть полный путь к «первичному контроллеру» вашего приложения, которым обычно является ваш файл index.php или его эквивалент:

PHP
/**
 * Получение полного пути к первичному контроллеру приложения.
 *
 * @param  string  $sitePath
 * @param  string  $siteName
 * @param  string  $uri
 * @return string
 */
public function frontControllerPath($sitePath$siteName$uri)
{
  return 
$sitePath.'/public/index.php';
}

Другие команды Valet

Команда Описание
valet forgetВыполните эту команду в каталоге "парковки" для удаления его из списка каталогов парковки.
valet pathsПросмотр всех путей "парковки".
valet restartПерезапуск демона Valet.
valet startЗапуск демона Valet.
valet stopОстановка демона Valet.
valet uninstallПолное удаление демона Valet.

Как вы считаете, полезен ли этот материал? Да Нет

Комментарии (2)

pilat

По поводу «Пользовательские драйверы Valet»: нет ли рекомендаций по поводу отладки драйверов?

А то я что-то набросал свое, но получаю редирект на `localhost:8888` с ошибкой `ERR_CONNECTION_REFUSED`. Попытки использовать `var_dump` в телах методов ничего не принесли :/

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.