Unetway

Laravel - Valet

Вступление

Valet - это среда разработки Laravel для минималистов Mac. Нет бродяги, нет файла. Вы даже можете поделиться своими сайтами публично, используя локальные туннели. Да, нам это тоже нравится./etc/hosts

Laravel Valet настраивает ваш Mac, чтобы он всегда запускал Nginx в фоновом режиме при запуске вашей машины. Затем, используя DnsMasq , Valet проксирует все запросы в домене, чтобы они указывали на сайты, установленные на вашем локальном компьютере.*.test

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

Стандартная поддержка Valet включает, но не ограничивается:

  • Laravel
  • Lumen
  • Bedrock
  • CakePHP 3
  • Concrete5
  • Contao
  • Craft
  • Drupal
  • Jigsaw
  • Joomla
  • Katana
  • Kirby
  • Magento
  • OctoberCMS
  • Sculpin
  • Slim
  • Statamic
  • Static HTML
  • Symfony
  • WordPress
  • Zend

 

Valet или Homestead

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

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

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

Установка

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

  • Установите или обновите Homebrew до последней версии, используя brew update.
  • Установите PHP 7.3, используя Homebrew через brew install php.
  • Установите Composer .
  • Установите Valet с Composer через . Убедитесь, что каталог находится в "ПУТИ" вашей системы.composer global require laravel/valet~/.composer/vendor/bin
  • Запустите valet installкоманду. Это настроит и установит Valet и DnsMasq, а также зарегистрирует демон Valet для запуска при запуске вашей системы.

Как только Valet установлен, попробуйте пропинговать любой домен на вашем терминале с помощью команды, такой как . Если Valet установлен правильно, вы увидите, что этот домен отвечает .*.testping foobar.test127.0.0.1

Valet автоматически запускает своего демона при каждой загрузке вашей машины. Нет необходимости запускать valet startили valet installкогда-либо снова, когда начальная установка Valet завершена.

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

По умолчанию Valet обслуживает ваши проекты с использованием .testДВУ. Если вы хотите использовать другой домен, вы можете сделать это с помощью команды.valet tld tld-name

Например, если вы хотите использовать .appвместо .test, запустите, valet tld appи Valet начнет обслуживать ваши проекты автоматически.*.app

База данных

Если вам нужна база данных, попробуйте MySQL, запустив в командной строке. После установки MySQL вы можете запустить его с помощью команды. Затем вы можете подключиться к базе данных, используя имя пользователя и пустую строку для пароля.brew install mysql@5.7brew services start mysql@5.7127.0.0.1root

Версии PHP

Valet позволяет переключать версии PHP с помощью команды. Valet установит указанную версию PHP через Brew, если она еще не установлена:valet use php@version

valet use php@7.2

valet use php

 

Модернизация

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

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

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

valet stop
valet uninstall

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

composer global require laravel/valet

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

valet install
valet restart

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

 

Обслуживающие сайты

Как только Valet установлен, вы готовы начать обслуживать сайты. Valet предоставляет две команды, которые помогут вам обслуживать ваши сайты Laravel: parkи link.

parkCommand

  • Создайте новый каталог на вашем Mac, запустив что-то вроде . Далее и беги . Эта команда зарегистрирует ваш текущий рабочий каталог как путь, который Valet должен искать для сайтов.mkdir ~/Sitescd ~/Sitesvalet park
  • Затем создайте новый сайт Laravel внутри этого каталога: .laravel new blog
  • Откройте в вашем браузере.http://blog.test

Это все, что нужно сделать. Теперь любой проект Laravel, который вы создаете в своем «припаркованном» каталоге, будет автоматически обслуживаться с использованием соглашения.http://folder-name.test

linkCommand

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

  • Чтобы использовать команду, перейдите к одному из ваших проектов и запустите в своем терминале. Валет создаст символическую ссылку, в которой будет указана ваша текущая рабочая директория.valet link app-name~/.config/valet/Sites
  • После запуска linkкоманды вы можете получить доступ к сайту в браузере по адресу .http://app-name.test

Чтобы увидеть список всех ваших связанных каталогов, выполните valet linksкоманду. Вы можете использовать, чтобы уничтожить символическую ссылку.valet unlink app-name

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

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

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

valet secure laravel

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

valet unsecure laravel

 

Совместное использование сайтов

Валет даже включает в себя команду, чтобы поделиться своими локальными сайтами со всем миром. После установки Valet установка дополнительного программного обеспечения не требуется.

Чтобы поделиться сайтом, перейдите в каталог сайта в вашем терминале и выполните valet shareкоманду. Общедоступный URL-адрес будет вставлен в ваш буфер обмена и готов для вставки прямо в ваш браузер. Вот и все.

Чтобы прекратить публикацию вашего сайта, нажмите, чтобы отменить процесс.Control + C

 

Переменные среды конкретного сайта

Некоторые приложения, использующие другие платформы, могут зависеть от переменных среды сервера, но не обеспечивают способ настройки этих переменных в вашем проекте. Valet позволяет вам настраивать переменные среды, специфичные для сайта, добавляя файл в корневой каталог вашего проекта. Эти переменные будут добавлены в глобальный массив:.valet-env.php$_SERVER

<?php

return [
    'WEBSITE_NAME' => 'My Blog',
];

 

Свои Valet Drivers

Вы можете написать свой собственный «драйвер» Valet для обслуживания приложений PHP, работающих на другой платформе или CMS, которая изначально не поддерживается Valet. Когда вы устанавливаете Valet, создается каталог, содержащий файл. Этот файл содержит пример реализации драйвера, чтобы продемонстрировать, как написать собственный драйвер. Написание драйвера требуется только реализовать три метода: , и .~/.config/valet/DriversSampleValetDriver.phpservesisStaticFilefrontControllerPath

Все три метода получить $sitePath$siteNameи $uriценности в качестве своих аргументов. Это $sitePathполный путь к сайту, обслуживаемому на вашем компьютере, например . Это часть "host" / "site name" домена ( ). Является входящим запросом URI ( )./Users/Lisa/Sites/my-project$siteNamemy-project$uri/foo/bar

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

Давайте рассмотрим пример реализации каждого метода, который должен реализовывать ваш собственный драйвер Valet.

servesМетод

servesМетод должен возвращать , trueесли ваш драйвер должен обрабатывать входящий запрос. В противном случае метод должен вернуться false. Таким образом, в рамках этого метода вы должны попытаться определить, $sitePathсодержит ли данный проект проект того типа, который вы пытаетесь обслуживать.

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

/**
 * Determine if the driver serves the request.
 *
 * @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:

/**
 * Determine if the incoming request is for a static file.
 *
 * @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;
}

isStaticFileМетод будет вызываться только если servesметод возвращает trueдля входящего запроса и URI запроса не /.

frontControllerPathМетод

frontControllerPathМетод должен возвращать полный путь к «фронт - контроллер» вашего приложения, которые , как правило , файл «index.php» или эквивалент:

/**
 * Get the fully resolved path to the application's front controller.
 *
 * @param  string  $sitePath
 * @param  string  $siteName
 * @param  string  $uri
 * @return string
 */
public function frontControllerPath($sitePath, $siteName, $uri)
{
    return $sitePath.'/public/index.php';
}

Локальные Drivers

Если вы хотите определить собственный драйвер Valet для отдельного приложения, создайте его в корневом каталоге приложения. Ваш пользовательский драйвер может расширять базовый класс или расширять существующий драйвер для конкретного приложения, такой как :LocalValetDriver.phpValetDriverLaravelValetDriver

class LocalValetDriver extends LaravelValetDriver
{
    /**
     * Determine if the driver serves the request.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     * @return bool
     */
    public function serves($sitePath, $siteName, $uri)
    {
        return true;
    }

    /**
     * Get the fully resolved path to the application's front controller.
     *
     * @param  string  $sitePath
     * @param  string  $siteName
     * @param  string  $uri
     * @return string
     */
    public function frontControllerPath($sitePath, $siteName, $uri)
    {
        return $sitePath.'/public_html/index.php';
    }
}

 

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

Команда Описание
valet forget Запустите эту команду из «припаркованного» каталога, чтобы удалить его из списка припаркованных каталогов.
valet log Просмотр списка журналов, которые написаны службами Valet.
valet paths Просмотреть все ваши "припаркованные" пути.
valet restart Перезапустите демон Valet.
valet start Запустите демон Valet.
valet stop Останови Демон Валета.
valet uninstall Удалите демон Valet.