Статьи

Что такое Laravel Valet и почему все суетятся?

Вчера Тейлор Отвелл выпустил Laravel Valet .

Значок камердинера

Если вы просто заинтересованы в общих чертах того, что это такое, для кого и как это работает, посмотрите смешное (и немного NSFW) видео ниже. Если вы хотите углубиться в подробности, узнать больше о продукте и узнать, почему он вызвал такой поляризационный шум в Reddit и Twitter, читайте дальше после прыжка.


Широкие мазки

Valet — это инструмент, который делает раскручивание демо или сбрасываемых проектов с одного дыхания.

Это инструмент, который сочетает в себе некоторые программы по умолчанию в OS X с некоторыми идеями о путях файлов и обслуживании приложений PHP, а также некоторые дополнительные инструменты для пропуска необходимости изменения файла /etc/hosts . Кроме того, он позволяет при необходимости пересылать доступ к локальному приложению через общедоступный Интернет.

В отличие от Vagrant или Docker, он не обеспечивает изоляции, поэтому все приложения используют одно и то же глобально доступное программное обеспечение. Почему это важно отметить, будет объяснено ниже.

Частности

Давайте погрузимся в подробности, один за другим.

Только OS X

Valet в настоящее время только OS X В настоящее время это жалоба номер один от новичков, сталкивающихся с Valet.

Хотя с технической точки зрения должна быть возможность заставить его работать в Linux, учитывая объем архитектуры, которую разделяют две системы, и тот факт, что в большинстве дистрибутивов Linux уже установлена ​​старая версия PHP, Windows, скорее всего, никогда не станет вариантом без полной , OS-специфическая перезапись.

Это не заговор. Тейлор не принадлежит к культу Apple, и он не пытается быть элитарным. Очень просто разрабатывать подобные проекты для OS X из-за очень хорошего менеджера пакетов (Homebrew) и разумных настроек по умолчанию, которые уже предустановлены.

Состояние общей системы

Из-за того, что виртуальные машины или контейнеры не используются, Valet использует версию PHP, установленную в OS X. Не многие знают об этом, но OS X на самом деле поставляется с предустановленной PHP, хотя по общему признанию устарела версия (на момент написания она по умолчанию). до 5.5.31). Хотя этой версии достаточно для запуска самых простых приложений, было бы стыдно не использовать самую последнюю версию.

Чтобы обновить до PHP7 на OS X с помощью Homebrew, сначала установите Homebrew, а затем запустите:

 brew update brew tap homebrew/dupes brew tap homebrew/versions brew tap homebrew/homebrew-php brew install php70 brew cleanup 

Наконец, заставьте OS X выполнить новый PHP по умолчанию, добавив следующую строку в ваш файл ~/.bash_profile :

 export PATH="/usr/local/bin:/usr/local/sbin:$PATH" 

Затем либо перезапустите окна терминала, либо запустите source ~/.bash_profile чтобы изменения вступили в силу.

PHP 7 работает на OS X

Обратите внимание, что для работы Valet необходимо также установить Composer глобально.

Кстати, это один из главных недостатков Valet, сродни использованию MAMP или XAMPP и аналогичных инструментов — все приложения будут использовать одну и ту же базу данных / версию / расширения PHP. Это означает, что зависимость от одного может разрушить зависимость других приложений от других. Будьте осторожны при запуске серьезных проектов с Valet!

Автоматический виртуальный хост

Valet использует DnsMasq для имитации виртуальных хостов в том смысле, что он берет любое имя папки, которое вы создаете с ним, и делает приложение доступным через домен {foldername}.dev .

Например, если вы запустите valet park в определенной папке, Valet будет искать в указанной папке настройки проекта, соответствующие тем, которые он поддерживает, и сразу же сделает их доступными в браузере с суффиксом .dev . Таким образом, создание нового проекта Laravel в ~/my-sites/laravel сделает сайт доступным на http://laravel.dev .

Обратите внимание, что для того, чтобы это работало, вам вообще не нужно трогать etc/hosts , в отличие от ситуации с Vagrant.

Это значительно упрощает предварительный просмотр демонстрационных приложений, которые вы создаете, и полностью исключает необходимость настройки Apache или Nginx — огромная головная боль для большинства людей.

Valet использует .dev по умолчанию. Несмотря на то, что .dev является широко распространенным, на самом деле он является действительным доменом верхнего уровня. Однако Valet может быть настроен на использование другого суффикса. После установки его с помощью Composer (желательно глобально) войдите в его домашнюю папку и найдите файл config.json . Там будет ключ domain со значением .dev . Изменение этого на что-то вроде .devlocal должно сделать .devlocal дело.

Dev / Prod Parity

Если вы читали мою книгу , вы можете спросить: «А как же паритет dev / prod?»

Вы были бы правы, задаваясь вопросом — это довольно большое дело. Среда, которую вы разрабатываете таким образом, настолько далека от любой возможной производственной среды, что смешно ожидать, что все будет работать так же, как и во время разработки. Поэтому Valet подходит только для:

  • демонстрационные / одноразовые проекты
  • или люди, которые абсолютно уверены, что они настроили свою среду prod для соответствия всем условиям приложения, разработанного в Valet

Последнее совершенно невозможно, поэтому я сомневаюсь, что мы увидим много серьезных, долгосрочных проектов, разработанных с помощью Valet.

Поставщик-замок (с оговоркой)

В настоящее время Valet поддерживает только следующие типы приложений:

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

Имейте это в виду, когда вы пытаетесь запустить свое собственное приложение с ним и обнаруживаете, что оно не работает!

Живой предварительный просмотр

Одним из главных достоинств Valet является то, с какой легкостью можно делиться работой над клиентом или другим разработчиком. Запуск valet share в папке приложения сделает его общедоступным онлайн через автоматически сгенерированную ссылку. Чтобы прекратить совместное использование сайта, просто остановите службу с помощью Ctrl + C

За кулисами Валет использует Ngrok для достижения этой цели.

Вывод

Конечно, весь набор инструментов в Valet — это то, что вы тоже можете использовать самостоятельно , но в типичном стиле Laravel многие мелкие полезные вещи были помещены в один удобный пакет, чтобы сделать весь процесс разработки и отладки приложения намного Быстрее. В конце концов, что такое сам Laravel, если не коллекция невероятно удобных пакетов, заключенных в одно чрезвычайно практичное целое?

Для получения дополнительной информации о Laravel Valet, пожалуйста, смотрите документацию . Мы не будем отказываться от нашего Homestead Improved в ближайшее время в пользу Valet (кросс-платформенность для нас важнее), но в Valet есть определенная ценность — от удобных инструментов, которые ускоряют процесс совместного использования и самостоятельного размещения, до использования ресурсов. (всего около 7 МБ ОЗУ!), Valet обладает множеством преимуществ перед такими настройками, как MAMP или XAMPP.

Вы будете использовать это?