git 76d29dc81cf208f72b193e8b6f41a9051ea616e4
- Вступление
- Установка
- Обслуживание сайтов
- Сайты общего доступа
- Переменные среды, зависящие от конкретного сайта
- Прокси-сервисы
- Пользовательские Valet драйверы
- Другие команды Valet
- Директории и файлы Valet
Laravel Valet - это среда разработки для минималистов macOS. Laravel Valet настраивает ваш Mac на постоянный запуск Nginx в фоновом режиме при запуске вашего компьютера. Затем, используя DnsMasq, Valet проксирует все запросы в домене *.test, чтобы указать на сайты, установленные на вашем локальном компьютере.
Другими словами, Valet - это невероятно быстрая среда разработки Laravel, которая использует примерно 7 МБ оперативной памяти. Valet не является полной заменой Sail или Homestead, но предоставляет отличную альтернативу, если вам нужны гибкие основы, вы предпочитаете экстремальную скорость или работаете на компьютере с ограниченным объемом оперативной памяти.
Из коробки, поддержка Valet включает, но не ограничивается этим:
- Laravel
- Lumen
- Bedrock
- CakePHP 3
- Concrete5
- Contao
- Craft
- Drupal
- ExpressionEngine
- Jigsaw
- Joomla
- Katana
- Kirby
- Magento
- OctoberCMS
- Sculpin
- Slim
- Statamic
- Static HTML
- Symfony
- WordPress
- Zend
Однако вы можете расширить Valet с помощью ваших собственных пользовательских драйверов.
{note} для Valet требуется macOS и Homebrew. Перед установкой вы должны убедиться, что никакие другие программы, такие как Apache или Nginx, не привязаны к порту 80 вашего локального компьютера.
Чтобы начать, сначала вам нужно убедиться, что Homebrew обновлен с помощью команды update:
brew update
Далее вы должны использовать Homebrew для установки PHP:
brew install php
После установки PHP вы готовы к установке менеджера пакетов Composer. Кроме того, вы должны убедиться, что каталог ~/.composer/vendor/bin находится в "PATH" вашей системы. После установки Composer вы можете установить Laravel Valet в качестве глобального пакета Composer:
composer global require laravel/valet
Наконец, вы можете выполнить команду Valet install. Это позволит настроить и установить Valet и DnsMasq. Кроме того, демоны, от которых зависит Valet, будут настроены для запуска при запуске вашей системы:
valet install
Как только Valet будет установлен, попробуйте выполнить пинг любого домена *.test на вашем терминале, используя такую команду, как ping foobar.test. Если Valet установлен правильно, вы должны увидеть, что этот домен отвечает на 127.0.0.1.
Valet автоматически запускает необходимые службы при каждой загрузке вашего устройства.
Valet позволяет вам переключать версии PHP с помощью команды valet use php@version. Valet установит указанную версию PHP через Homebrew, если она еще не установлена:
valet use php@7.2
valet use php
Вы также можете создать файл .valetphprc в корневом каталоге вашего проекта. Файл .valetphprc должен содержать версию PHP, которую должен использовать сайт:
php@7.2
Как только этот файл будет создан, вы можете просто выполнить команду valet use, и команда определит предпочтительную версию PHP сайта, прочитав файл.
{note} Valet обслуживает только одну версию PHP одновременно, даже если у вас установлено несколько версий PHP.
Если вашему приложению нужна база данных, ознакомьтесь с DBngin. DBngin предоставляет бесплатный универсальный инструмент управления базами данных, который включает MySQL, PostgreSQL и Redis. После установки DBngin вы можете подключиться к своей базе данных по адресу 127.0.0.1, используя имя пользователя root и пустую строку для пароля.
Если у вас возникли проблемы с корректным запуском установки Valet, то выполнение команды composer global update, за которой следует valet install, приведет к сбросу вашей установки и может решить множество проблем. В редких случаях может потребоваться "жесткий сброс" Valet, выполнив команду valet uninstall --force, за которой следует valet install.
Вы можете обновить свою установку Valet, выполнив команду composer global update в вашем терминале. После обновления рекомендуется выполнить команду valet install, чтобы Valet мог при необходимости внести дополнительные обновления в ваши конфигурационные файлы.
Как только Valet будет установлен, вы будете готовы начать обслуживать свои приложения Laravel. Valet предоставляет две команды, которые помогут вам обслуживать ваши приложения: park и link.
Команда park регистрирует каталог на вашем компьютере, содержащий ваши приложения. Как только каталог будет "припаркован" с помощью Valet, все каталоги в этом каталоге будут доступны в вашем веб-браузере по адресу http://<имя каталога>.test:
cd ~/Sites
valet park
Вот и все, что нужно сделать. Теперь любое приложение, которое вы создадите в своем "припаркованном" каталоге, будет автоматически обслуживаться с использованием соглашения http://<имя каталога>.test. Итак, если ваш каталог пакетов содержит каталог с именем "laravel", приложение в этом каталоге будет доступно по адресу http://laravel.test. Кроме того, Valet автоматически позволяет вам получить доступ к сайту, используя поддомены с подстановочными знаками (http://foo.laravel.test).
Команда link также может быть использована для обслуживания ваших приложений Laravel. Эта команда полезна, если вы хотите обслуживать один сайт в каталоге, а не весь каталог целиком:
cd ~/Sites/laravel
valet link
После того, как приложение было связано с Valet с помощью команды link, вы можете получить доступ к приложению, используя его имя каталога. Итак, доступ к сайту, на который была дана ссылка в приведенном выше примере, можно получить по адресу http://laravel.test. Кроме того, Valet автоматически позволяет вам получить доступ к сайту, используя поддомены с подстановочными знаками (http://foo.laravel.test).
Если вы хотите обслуживать приложение под другим именем хоста, вы можете передать имя хоста команде link. Например, вы можете выполнить следующую команду, чтобы сделать приложение доступным по адресу http://application.test:
cd ~/Sites/laravel
valet link application
Вы можете выполнить команду links, чтобы отобразить список всех ваших связанных каталогов:
valet links
Команда unlink может быть использована для уничтожения символической ссылки на сайт:
cd ~/Sites/laravel
valet unlink
По умолчанию Valet обслуживает сайты по протоколу HTTP. Однако, если вы хотите обслуживать сайт по зашифрованному протоколу TLS с использованием HTTP/2, вы можете использовать команду secure. Например, если ваш сайт обслуживается Valet в домене laravel.test, вам следует выполнить следующую команду, чтобы обеспечить его безопасность:
valet secure laravel
Чтобы "снять защиту" с сайта и вернуться к обслуживанию его трафика по обычному протоколу HTTP, используйте команду unsecure. Как и команда secure, эта команда принимает имя хоста, с которого вы хотите снять защиту:
valet unsecure laravel
Иногда вы можете захотеть настроить Valet для обслуживания сайта "по умолчанию" вместо 404 при посещении неизвестного домена test. Чтобы выполнить это, вы можете добавить параметр default в свой конфигурационный файл ~/.config/valet/config.json, содержащий путь к сайту, который должен использоваться в качестве вашего сайта по умолчанию:
"default": "/Users/Sally/Sites/foo",
Valet даже включает в себя команду для обмена вашими локальными сайтами со всем миром, предоставляя простой способ протестировать ваш сайт на мобильных устройствах или поделиться им с членами команды и клиентами.
Чтобы предоставить общий доступ к сайту, перейдите в каталог сайта в вашем терминале и запустите команду Valet share. Общедоступный URL-адрес будет вставлен в ваш буфер обмена и готов для вставки непосредственно в ваш браузер или обмена с вашей командой:
cd ~/Sites/laravel
valet share
Чтобы прекратить совместное использование вашего сайта, вы можете нажать Control + C. Для предоставления доступа к вашему сайту с помощью Ngrok вам необходимо создать учетную запись Ngrok и настройка токена аутентификации.
{tip} Вы можете передать дополнительные параметры Ngrok команде
share, такие какvalet share --region=eu. Для получения дополнительной информации обратитесь к документации ngrok.
Если у вас установлен Expose, вы можете предоставить общий доступ к своему сайту, перейдя в каталог сайта в вашем терминале и выполнив команду expose. Обратитесь к документации Expose для получения информации о дополнительных параметрах командной строки, которые он поддерживает. После предоставления общего доступа к сайту Expose отобразит общедоступный URL-адрес, который вы можете использовать на других своих устройствах или среди членов команды:
cd ~/Sites/laravel
expose
Чтобы прекратить совместное использование вашего сайта, вы можете нажать Control + C.
Valet по умолчанию ограничивает входящий трафик внутренним интерфейсом 127.0.0.1, чтобы ваша машина разработки не подвергалась угрозам безопасности из Интернета.
Если вы хотите разрешить другим устройствам в вашей локальной сети получать доступ к сайтам Valet на вашем компьютере через IP-адрес вашего компьютера (например: 192.168.1.10/application.test), вам нужно будет вручную отредактировать соответствующий файл конфигурации Nginx для этого сайта, чтобы снять ограничение на директиву listen. Вам следует удалить префикс 127.0.0.1: в директиве listen для портов 80 и 443.
Если вы не запустили valet secure в проекте, вы можете открыть доступ к сети для всех сайтов, отличных от HTTPS, отредактировав файл /usr/local/etc/nginx/valet/valet.conf. Однако, если вы обслуживаете сайт проекта по протоколу HTTPS (вы запустили valet secure для сайта), то вам следует отредактировать файл ~/.config/valet/Nginx/app-name.test.
Как только вы обновите конфигурацию Nginx, запустите команду valet restart, чтобы применить изменения конфигурации.
Некоторые приложения, использующие другие фреймворки, могут зависеть от переменных окружения сервера, но не предоставляют способа настройки этих переменных в вашем проекте. Valet позволяет вам настраивать переменные среды для конкретного сайта, добавляя .valet-env.php файл в корневом каталоге вашего проекта. Этот файл должен возвращать массив пар переменных сайта / среды, которые будут добавлены в глобальный массив $_SERVER для каждого сайта, указанного в массиве:
<?php
return [
// Set $_SERVER['key'] to "value" for the laravel.test site...
'laravel' => [
'key' => 'value',
],
// Set $_SERVER['key'] to "value" for all sites...
'*' => [
'key' => 'value',
],
];
Иногда вы можете захотеть использовать прокси-сервер домена Valet для другой службы на вашем локальном компьютере. Например, иногда вам может понадобиться запустить Valet, одновременно запуская отдельный сайт в Docker; однако Valet и Docker не могут одновременно привязываться к порту 80.
Чтобы решить эту проблему, вы можете использовать команду proxy для создания прокси-сервера. Например, вы можете проксировать весь трафик с http://elasticsearch.test на http://127.0.0.1:9200:
// Proxy over HTTP...
valet proxy elasticsearch http://127.0.0.1:9200
// Proxy over TLS + HTTP/2...
valet proxy elasticsearch http://127.0.0.1:9200 --secureВы можете удалить прокси-сервер с помощью команды unproxy:
valet unproxy elasticsearch
Вы можете использовать команду proxies, чтобы перечислить все конфигурации сайта, которые проксируются:
valet proxies
Вы можете написать свой собственный "драйвер" Valet для обслуживания PHP-приложений, работающих на платформе или CMS, которые изначально не поддерживаются Valet. Когда вы устанавливаете Valet, создается каталог ~/.config/valet/Drivers, который содержит файл SampleValetDriver.php. Этот файл содержит пример реализации, демонстрирующий, как написать пользовательский драйвер. Для написания драйвера требуется всего лишь реализовать три метода: serves, isStaticFile и frontControllerPath.
Все три метода получают значения $sitePath, $siteName и $uri в качестве своих аргументов. $sitePath - это полный путь к сайту, который обслуживается на вашем компьютере, например /Users/Lisa/Sites/my-project. $siteName - это часть домена "host" / "название сайта" (my-project). $uri - это URI входящего запроса (/foo/bar).
Как только вы создадите свой пользовательский драйвер Valet, поместите его в каталог ~/.config/valet/Drivers, используя соглашение об именовании FrameworkValetDriver.php. Например, если вы пишете пользовательский драйвер valet для WordPress, ваше имя файла должно быть WordPressValetDriver.php.
Давайте взглянем на пример реализации каждого метода, который должен быть реализован вашим пользовательским драйвером Valet.
Метод 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 должен определять, относится ли входящий запрос к файлу, который является "статическим", такому как изображение или таблица стилей. Если файл статический, метод должен возвращать полный путь к статическому файлу на диске. Если входящий запрос не относится к статическому файлу, метод должен возвращать 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;
}
{note} Этот метод
isStaticFileбудет вызван только в том случае, если методservesвозвращаетtrueдля входящего запроса и URI запроса не равен/.
Метод 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';
}
Если вы хотите определить пользовательский драйвер 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 forget |
Запустите эту команду из "припаркованного" каталога, чтобы удалить его из списка припаркованных каталогов. |
valet log |
Просмотрите список журналов, которые записываются службами Valet. |
valet paths |
Просмотрите все ваши "припаркованные" пути. |
valet restart |
Перезапустите демонов Valet. |
valet start |
Запустите демонов Valet. |
valet stop |
Остановите демонов Valet. |
valet trust |
Добавьте файлы sudoers для Brew и Valet, чтобы разрешить выполнение команд Valet без запроса вашего пароля. |
valet uninstall |
Удаление Valet: показывает инструкции по удалению вручную. Передайте параметр --force, чтобы агрессивно удалить все ресурсы Valet. |
Следующая информация о каталоге и файле может оказаться полезной при устранении неполадок в среде Valet:
Содержит всю конфигурацию Valet. Возможно, вы захотите сохранить резервную копию этого каталога.
Этот каталог содержит конфигурацию DNSMasq.
Этот каталог содержит драйверы Valet. Драйверы определяют, как обслуживается конкретный фреймворк / CMS.
Этот каталог содержит пользовательские расширения / команды Valet.
Этот каталог содержит все конфигурации сайта Valet Nginx. Эти файлы перестраиваются при выполнении команд install, secure и tld.
Этот каталог содержит все символические ссылки для ваших связанных проектов.
Этот файл является основным файлом конфигурации Valet.
Этот файл представляет собой сокет PHP-FPM, используемый при установке Nginx от Valet. Это будет существовать только в том случае, если PHP запущен должным образом.
Этот файл является пользовательским журналом ошибок PHP.
Этот файл является пользовательским журналом ошибок Nginx.
Этот файл является системным журналом ошибок PHP-FPM.
Этот каталог содержит журналы доступов к Nginx и ошибок.
Этот каталог содержит файлы *.ini для различных настроек конфигурации PHP.
Этот файл является файлом конфигурации пула PHP-FPM.
Этот файл является конфигурацией Nginx по умолчанию, используемой для создания SSL-сертификатов для ваших сайтов.