{{TOC}} {{DOCVER 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15}} == Введение == Valet - среда для разработки в Laravel для минималистов, работающих на Mac. Без Vagrant, без файла %%(t)/etc/hosts%%. Можно даже расшаривать сайты в общий доступ через локальные туннели. //Да, нам и самим это нравится.// Laravel Valet включает на вашем Mac фоновую автозагрузку ((https://www.nginx.com/ Nginx)) (до версии Valet 2.0 - ((https://caddyserver.com Caddy)) ). Затем с помощью ((https://en.wikipedia.org/wiki/Dnsmasq DnsMasq)) Valet настраивает прокси для всех запросов к домену %%(t)*.dev%%, для переадресации их на сайты на вашей локальной машине. Другими словами, это молниеносное окружение для разработки в Laravel, которое использует около 7 Мб RAM. Valet не является полной заменой для Vagrant или Homestead, но предоставляет отличную альтернативу, когда вам нужна база для гибкой настройки, максимальная скорость, или вы работаете на машине с ограниченным объёмом RAM. Из коробки Valet поддерживает (но не ограничивается только ими): * ((https://laravel.com Laravel)) * ((https://lumen.laravel.com Lumen)) * ((https://symfony.com Symfony)) * ((https://framework.zend.com Zend)) * ((https://cakephp.org CakePHP 3)) * ((https://wordpress.org WordPress)) * ((https://roots.io/bedrock/ Bedrock)) * ((https://craftcms.com Craft)) * ((https://statamic.com Statamic)) * ((https://jigsaw.tighten.co Jigsaw)) * Статический HTML Также вы можете дополнить Valet своим ((#custom-valet-drivers собственным драйвером)). === Valet или Homestead === Как вы знаете, Laravel предлагает ((//docs/v5/homestead Homestead)) - другую локальную среду разработки. Valet и Homestead отличаются целевой аудиторией и подходом к локальной разработке. Homestead включает в себя целую виртуальную машину с Ubuntu и автоматической настройкой Nginx. Homestead - отличный выбор, если вам нужна полностью виртуальная среда разработки на Linux или на Windows / Linux. Valet поддерживает только Mac и требует установки PHP и сервера базы данных непосредственно на вашу локальную машину. Это легко делается при помощи ((http://brew.sh/ Homebrew)) такими командами: %%(sh)brew install php71%% и %%(sh)brew install mariadb%%. Valet обеспечивает молниеносную среду разработки с минимальным потреблением ресурсов, поэтому идеально подходит для разработчиков, использующих только PHP / MySQL и не нуждающихся в полностью виртуальной среде разработки. И Valet, и Homestead являются отличным выбором для настройки среды разработки в Laravel. Выбор зависит от ваших личных предпочтений и потребностей вашей команды. == Установка == **Valet требует MacOS и ((http://brew.sh/ Homebrew)). Перед установкой необходимо убедиться, что другие программы, такие как Apache и Nginx, не используют 80 порт вашей локальной машины.** * Установите или обновите ((http://brew.sh/ Homebrew)) до последней версии с помощью %%(sh)brew update%%. * Установите PHP 7.1 с помощью Homebrew командой %%(sh)brew install homebrew/php/php71%%. * Установите Valet через Composer командой %%(sh)composer global require laravel/valet%%. Убедитесь, что в вашей системной переменной %%(t)PATH%% есть каталог %%(t)~/.composer/vendor/bin%%. * Выполните команду %%(sh)valet install%%. Она установит и настроит Valet и DnsMasq, и пропишет демон Valet в автозагрузку. После установки Valet попробуйте выполнить в терминале %%(sh)ping%% к любому домену %%(t)*.dev%% такой командой %%(sh)ping foobar.dev%%. Если Valet установлен корректно, то вы увидите, что этот домен соответствует %%(t)127.0.0.1%%. Valet автоматически запускает своего демона при запуске ОС. После начальной установки Valet больше не потребуется выполнять %%(sh)valet start%% или %%(sh)valet install%%. **Использование другого домена** По умолчанию Valet использует для ваших проектов домен верхнего уровня %%(t).dev%%. Если вы хотите использовать другой домен, используйте команду %%(sh)valet domain tld-name%%. Например, чтобы использовать %%(t).app%% вместо %%(t).dev%%, выполните %%(sh)valet domain app%%, и Valet автоматически начнёт использовать новый домен. **База данных** Если вам нужна база данных, попробуйте MariaDB с помощью команды %%(sh)brew install mariadb%%. После установки MariaDB, вы можете запустить её командой %%(sh)brew services start mariadb%%. Затем вы можете подключиться к БД на %%(t)127.0.0.1%%, имя пользователя - %%(t)root%%, пароль - пустая строка. %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) === Обновление === Вы можете обновить установленный Valet терминальной командой %%(sh)composer global update%%. После обновления рекомендуется выполнить команду %%(sh)valet install%%, чтобы Valet сделал дополнительные обновления ваших конфигурационных файлов при необходимости. **Обновление до Valet 2.0** В Valet 2.0 изменён базовый веб-сервер с Caddy на Nginx. Перед обновлением на эту версию вы должны выполнить следующие команды, чтобы остановить и удалить существующий демон Caddy: %%(sh) valet stop valet uninstall ~%% Далее вам надо обновить Valet до последней версии. Это делается с помощью Git или Composer, в зависимости от того, как вы устанавливали Valet изначально. Если вы устанавливали его через Composer, то вам надо использовать следующие команды для обновления до последней мажорной версии: %%(sh) composer global require laravel/valet ~%% Когда будет скачан свежий исходный код Valet, вы должны выполнить команду %%(sh)install%%: %%(sh) valet install valet restart ~%% После обновления может понадобиться пере-разместить или пере-привязать ваши сайты. %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) == Описание версии == === Версия 1.1.5 === В версию 1.1.5 вошло множество внутренних улучшений. **Инструкции по обновлению** После обновления Valet с помощью команды %%(sh)composer global update%% вам надо выполнить команду %%(sh)valet install%%. === Версия 1.1.0 === В версию 1.1.0 вошло множество значительных улучшений. Встроенный PHP-сервер был заменён на ((https://caddyserver.com/ Caddy)) для обработки входящих HTTP-запросов. Выбор Caddy позволит сделать множество улучшений в будущем, а также позволяет сайтам Valet выполнять HTTP-запросы к другим сайтам Valet, не блокируя встроенный PHP-сервер. **Инструкции по обновлению** После обновления Valet с помощью команды %%(sh)composer global update%% вам надо выполнить команду %%(sh)valet install%% для создания нового файла демона Caddy в вашей системе. %% == Обслуживание сайтов == После установки Valet можно начать обслуживать сайты. Valet предоставляет две команды для помощи в обслуживании Laravel-сайтов: %%(sh)park%% и %%(sh)link%%. **Команда %%(sh)park%%** * Создайте новый каталог на своём Mac с помощью команды %%(sh)mkdir ~/Sites%%. Затем перейдите к ней %%(sh)cd ~/Sites%% и выполните %%(sh)valet park%%. Эта команда зарегистрирует текущий каталог как путь, по которому Valet будет искать сайты. * Теперь создайте новый Laravel-сайт в этом каталоге: %%(sh)laravel new blog%%. * Откройте %%(t)http://blog.dev%% в своём браузере. **Вот и всё.** Теперь все проекты, которые вы разместите в каталоге "парковки", будут обслуживаться автоматически с адресами в соответствии с названиями их папок %%(t)http://folder-name.dev%%. **Команда %%(sh)link%%** Для обслуживания Laravel-сайтов также можно использовать команду %%(sh)link%%. Эта команда полезна, когда вы хотите обслуживать один сайт в каталоге, а не весь каталог. * Для использования команды перейдите к одному из своих проектов и выполните %%(sh)valet link app-name%% в терминале. Valet создаст в %%(t)~/.valet/Sites%% символьную ссылку на ваш текущий каталог. * После запуска команды %%(sh)link%% вы можете перейти на сайт %%(t)http://app-name.dev%% в своём браузере. Для просмотра списка всех привязанных каталогов выполните команду %%(sh)valet links%%. Для удаления символьной ссылки используйте %%(sh)valet unlink app-name%%. %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) .(alert) Вы можете использовать команду %%(sh)valet link%% для обслуживания одного проекта из нескольких (под)доменов. Чтобы добавить поддомен или другой домен в свой проект, выполните %%(sh)valet link subdomain.app-name%% в папке проекта. %% **Защита сайтов с помощью TLS** По умолчанию Valet обслуживает сайты через чистый HTTP. Но при желании вы можете включить шифрование TLS, используя HTTP/2, с помощью команды %%(sh)secure%%. Например, если Valet обслуживает ваш сайт на домене %%(t)laravel.dev%%, то для его защиты вам надо выполнить команду: %%(sh) valet secure laravel %% Чтобы отключить защиту и перевести трафик обратно на чистый HTTP, используйте команду %%(sh)unsecure%%. Как и команда %%(t)secure%% эта команда принимает имя хоста, для которого необходимо отключить защиту: %%(sh) valet unsecure laravel %% == Открытие общего доступа к сайтам == Valet имеет команду для открытия доступа к вашим локальным сайтам для всех. Кроме Valet не нужно никакое ПО. Для открытия доступа к сайту перейдите в терминале в его каталог и выполните команду %%(sh)valet share%%. URL для общего доступа будет помещён в буфер обмена, и его можно вставить в браузер. Это всё. Для закрытия общего доступа нажмите %%(t)Control + C%% для отмены процесса. %%(DOCNEW 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51) .(alert) В настоящее время %%(sh)valet share%% не поддерживает общий доступ к сайтам, которые были защищены командой %%(sh)valet secure%%. %% %%(DOCNEW 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15) == Просмотр журналов == Для вывода в терминал всех журналов по всем вашим сайтам выполните команду %%(sh)valet logs%%. Новые записи журналов будут выводиться в терминал по мере их появления. Это отличный способ следить за всеми журналами, не выходя из терминала. %% == ((#custom-valet-drivers)) Пользовательские драйверы Valet == Вы можете написать свой собственный "драйвер" Valet для обслуживания PHP-приложений, работающих на другом фреймворке или CMS, изначально не поддерживаемых Valet. При установке Valet создаётся папка %%(t)~/.valet/Drivers%%, содержащая файл %%(t)SampleValetDriver.php%%. В этом файле находится пример реализации драйвера для демонстрации. Для написания драйвера необходимо реализовать всего три метода: %%serves()%%, %%isStaticFile()%% и %%frontControllerPath()%%. Все три метода принимают в качестве аргументов %%$sitePath%%, %%$siteName%% и %%$uri%%. Параметр %%$sitePath%% - полный путь к сайту на вашей машине, например, %%(t)/Users/Lisa/Sites/my-project%%. Параметр %%$siteName%% - часть домена "хост" / "имя сайта" (%%(t)my-project%%). Параметр %%$uri%% - URI входящих запросов (%%(t)/foo/bar%%). Когда вы завершили написание своего драйвера Valet, поместите его в каталог %%(t)~/.valet/Drivers%% используя принцип именования %%(t)FrameworkValetDriver.php%%. Например, если вы написали драйвер для WordPress, то имя файла должно быть %%(t)WordPressValetDriver.php%%. Давайте рассмотрим примеры реализации каждого из этих методов. **Метод %%serves()%%** Метод %%serves()%% должен возвращать %%true%%, если ваш драйвер должен обрабатывать входящие запросы. Иначе метод должен возвращать %%false%%. В этом методе вы должны попытаться определить, содержит ли данный %%$sitePath%% проект того типа, который вы хотите обслуживать. Например, давайте предположим, что мы пишем %%(t)WordPressValetDriver%%. Наш метод %%serves()%% должен выглядеть примерно так: %% /** * Определение, обслуживает ли драйвер запрос. * * @param string $sitePath * @param string $siteName * @param string $uri * @return bool */ public function serves($sitePath, $siteName, $uri) { return is_dir($sitePath.'/wp-admin'); } %% **Метод %%isStaticFile()%%** Метод %%isStaticFile()%% должен определять, является ли входящий запрос запросом к "статическому" файлу, такому как изображение или таблица стилей. Если файл статический, метод должен вернуть полный путь к этому файлу на диске. Если входящий запрос не к статическому файлу, метод должен вернуть %%false%%: %% /** * Определение, является ли входящий запрос запросом к статическому файлу. * * @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; } %% .(alert) Метод %%isStaticFile()%% будет вызван, только если метод %%serves()%% возвращает %%true%% для входящего запроса, и значение URI запроса не равно %%(t)/%%. **Метод %%frontControllerPath()%%** Метод %%frontControllerPath()%% должен вернуть полный путь к "первичному контроллеру" вашего приложения, которым обычно является ваш файл %%(t)index.php%% или его эквивалент: %% /** * Получение полного пути к первичному контроллеру приложения. * * @param string $sitePath * @param string $siteName * @param string $uri * @return string */ public function frontControllerPath($sitePath, $siteName, $uri) { return $sitePath.'/public/index.php'; } %% == Другие команды Valet == %%(hvlraw)
Команда Описание
valet forgetВыполните эту команду в каталоге "парковки" для удаления его из списка каталогов парковки.
valet pathsПросмотр всех путей "парковки".
valet restartПерезапуск демона Valet.
valet startЗапуск демона Valet.
valet stopОстановка демона Valet.
valet uninstallПолное удаление демона Valet.
%%