Вступление
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 установлен правильно, вы увидите, что этот домен отвечает .*.test
ping foobar.test
127.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.7
brew services start mysql@5.7
127.0.0.1
root
Версии PHP
Valet позволяет переключать версии PHP с помощью команды. Valet установит указанную версию PHP через Brew, если она еще не установлена:valet use php@version
valet use php@7.2
valet use php
Модернизация
Вы можете обновить установку Valet, используя команду в вашем терминале. После обновления рекомендуется запустить команду, чтобы Valet мог выполнить дополнительные обновления в ваших файлах конфигурации, если это необходимо.composer global update
valet 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
.
park
Command
- Создайте новый каталог на вашем Mac, запустив что-то вроде . Далее и беги . Эта команда зарегистрирует ваш текущий рабочий каталог как путь, который Valet должен искать для сайтов.
mkdir ~/Sites
cd ~/Sites
valet park
- Затем создайте новый сайт Laravel внутри этого каталога: .
laravel new blog
- Откройте в вашем браузере.
http://blog.test
Это все, что нужно сделать. Теперь любой проект Laravel, который вы создаете в своем «припаркованном» каталоге, будет автоматически обслуживаться с использованием соглашения.http://folder-name.test
link
Command
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/Drivers
SampleValetDriver.php
serves
isStaticFile
frontControllerPath
Все три метода получить $sitePath
, $siteName
и $uri
ценности в качестве своих аргументов. Это $sitePath
полный путь к сайту, обслуживаемому на вашем компьютере, например . Это часть "host" / "site name" домена ( ). Является входящим запросом URI ( )./Users/Lisa/Sites/my-project
$siteName
my-project
$uri
/foo/bar
Как только вы завершили свой собственный драйвер Valet, поместите его в каталог, используя соглашение об именах. Например, если вы пишете собственный драйвер камердинера для WordPress, ваше имя файла должно быть .~/.config/valet/Drivers
FrameworkValetDriver.php
WordPressValetDriver.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.php
ValetDriver
LaravelValetDriver
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. |
0 комментариев