{{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. |