Версія фреймворка: 8.x

Laravel Valet

Introduction

Valet - середовище розробки Laravel для мінімалістів Mac. Ні бродяга, ні/etc/hostsфайл. Ви навіть можете публічно ділитися своїми веб-сайтами за допомогою місцевих тунелів.Так, нам теж це подобається.

Laravel Valet налаштовує ваш Mac завжди працюватиNginxу фоновому режимі, коли машина запускається. Потім, використовуючиDnsMasq, Valet проксі-сервери всі запити на*.testдомену, щоб вказувати на сайти, встановлені на вашому локальному комп'ютері.

Іншими словами, надзвичайно швидке середовище розробки Laravel, яке використовує приблизно 7 МБ оперативної пам'яті. Valet не є повною заміною Vagrant або Homestead, але пропонує чудову альтернативу, якщо ви хочете гнучкі основи, віддаєте перевагу екстремальній швидкості або працюєте на машині з обмеженою кількістю оперативної пам'яті.

Незрозуміла підтримка Valet включає, але не обмежується:

- [Laravel](https://laravel.com) - [Lumen](https://lumen.laravel.com) - [Bedrock](https://roots.io/bedrock/) - [CakePHP 3](https://cakephp.org) - [Concrete5](https://www.concrete5.org/) - [Contao](https://contao.org/en/) - [Craft](https://craftcms.com) - [Drupal](https://www.drupal.org/) - [ExpressionEngine](https://www.expressionengine.com/) - [Jigsaw](https://jigsaw.tighten.co) - [Joomla](https://www.joomla.org/) - [Katana](https://github.com/themsaid/katana) - [Kirby](https://getkirby.com/) - [Magento](https://magento.com/) - [OctoberCMS](https://octobercms.com/) - [Sculpin](https://sculpin.io/) - [Slim](https://www.slimframework.com) - [Statamic](https://statamic.com) - Static HTML - [Symfony](https://symfony.com) - [WordPress](https://wordpress.org) - [Zend](https://framework.zend.com)

Тим не менш, ви можете продовжити службу Valet своїмкористувацькі драйвери.

Valet Or Homestead

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

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

І Valet, і Homestead - це чудовий вибір для налаштування середовища розробки Laravel. Який із них ви оберете, буде залежати від вашого особистого смаку та потреб вашої команди.

Встановлення

Valet вимагає macOS іСаморобний. Перед установкою слід переконатися, що жодні інші програми, такі як Apache або Nginx, не прив’язують до порту 80 вашої локальної машини.

  • Install or update Homebrew to the latest version using brew update.
  • Install PHP 8.0 using Homebrew via brew install php.
  • Install Composer.
  • Install Valet with Composer via composer global require laravel/valet. Make sure the ~/.composer/vendor/bin directory is in your system's "PATH".
  • Run the valet install command. This will configure and install Valet and DnsMasq, and register Valet's daemon to launch when your system starts.

Після встановлення програми Valet спробуйте пінгувати будь-яку*.testдомену на вашому терміналі за допомогою команди, наприкладping foobar.test. Якщо Valet встановлено правильно, ви побачите, як цей домен відповідає127.0.0.1.

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

База даних

Якщо вам потрібна база даних, спробуйте MySQL, запустившиbrew install mysql@5.7у вашому командному рядку. Після встановлення MySQL ви можете запустити його за допомогоюbrew services start mysql@5.7команди. Потім ви можете підключитися до бази даних за адресою127.0.0.1за допомогоюrootім'я користувача та порожній рядок для пароля.

Версії PHP

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

valet use php@7.2

valet use php
Valet обслуговує лише одну версію PHP одночасно, навіть якщо у вас встановлено кілька версій PHP.

Скидання встановлення

Якщо у вас виникли проблеми з належним запуском інсталяції Valet, запустітьcomposer global updateкоманда, за якою слідуєvalet installскине вашу установку і може вирішити різноманітні проблеми. У рідкісних випадках може знадобитися "жорсткий скидання" Valet, виконавшиvalet uninstall --forceслідом за нимvalet install.

Оновлення

Ви можете оновити установку Valet за допомогоюcomposer global updateу вашому терміналі. Після оновлення є гарною практикою запускатиvalet installкоманда, щоб Valet міг додатково оновити ваші файли конфігурації, якщо це необхідно.

Обслуговування сайтів

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

parkКоманда

  • Create a new directory on your Mac by running something like mkdir ~/Sites. Next, cd ~/Sites and run valet park. This command will register your current working directory as a path that Valet should search for sites.
  • Next, create a new Laravel site within this directory: laravel new blog.
  • Open http://blog.test in your browser.

**Це все.**Тепер будь-який проект Laravel, який ви створюєте у своєму "припаркованому" каталозі, буде автоматично обслуговуватися за допомогоюhttp://folder-name.testконвенції.

linkКоманда

linkкоманда може також використовуватися для обслуговування ваших сайтів Laravel. Ця команда корисна, якщо ви хочете обслуговувати один сайт у каталозі, а не весь каталог.

  • To use the command, navigate to one of your projects and run valet link app-name in your terminal. Valet will create a symbolic link in ~/.config/valet/Sites which points to your current working directory.
  • After running the link command, you can access the site in your browser at 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 додаткове встановлення програмного забезпечення не потрібно.

Обмін сайтами через Ngrok

Щоб надати спільний доступ до сайту, перейдіть до каталогу сайту у вашому терміналі та запустітьvalet shareкоманди. Загальнодоступна URL-адреса буде вставлена ​​у ваш буфер обміну і готова вставити безпосередньо у ваш браузер або поділитися з командою.

Щоб припинити ділитися своїм веб-сайтом, натиснітьControl + Cскасувати процес.

Ви можете передати додаткові параметри команді спільного доступу, наприкладvalet share --region=eu. Для отримання додаткової інформації зверніться додокументація ngrok.

Спільний доступ до сайтів через Expose

Якщо у вас єВиставлятивстановлений, ви можете поділитися своїм веб-сайтом, перейшовши до каталогу сайту у вашому терміналі та запустившиexposeкоманди. Для отримання додаткових параметрів командного рядка, які він підтримує, зверніться до документації для експозиції. Після спільного використання веб-сайту Expose відобразить загальну URL-адресу, яку ви можете використовувати на своїх інших пристроях або серед членів команди.

Щоб припинити ділитися своїм веб-сайтом, натиснітьControl + Cскасувати процес.

Спільний доступ до сайтів у вашій локальній мережі

Valet обмежує вхідний трафік внутрішнім127.0.0.1інтерфейс за замовчуванням. Таким чином ваша машина розробки не піддається ризику безпеки через Інтернет.

Якщо ви хочете дозволити іншим пристроям у вашій локальній мережі отримувати доступ до сайтів Valet на вашому комп'ютері через IP-адресу вашого пристрою (наприклад:192.168.1.10/app-name.test), вам потрібно буде вручну відредагувати відповідний файл конфігурації Nginx для цього сайту, щоб зняти обмеження наlistenдирективою, видаливши127.0.0.1:префікс директиви для портів 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 дозволяє налаштувати змінні середовища для певного сайту, додавши a.valet-env.phpфайл у корені вашого проекту. Ці змінні будуть додані до$_SERVERглобальний масив:

<?php

// Set $_SERVER['key'] to "value" for the foo.test site...
return [
    'foo' => [
        'key' => 'value',
    ],
];

// Set $_SERVER['key'] to "value" for all sites...
return [
    '*' => [
        'key' => 'value',
    ],
];

Послуги проксі-сервера

Іноді вам може знадобитися додати домен Valet до іншої служби на вашому локальному комп'ютері. Наприклад, іноді вам може знадобитися запустити Valet, одночасно запустивши окремий сайт у Docker; однак Valet і Docker не можуть одночасно прив'язуватися до порту 80.

Для вирішення цього питання ви можете використовуватиproxyкоманда згенерувати проксі. Наприклад, ви можете проксі-сервер весь трафік зhttp://elasticsearch.testдоhttp://127.0.0.1:9200:

valet proxy elasticsearch http://127.0.0.1:9200

Ви можете видалити проксі черезunproxyкоманда:

valet unproxy elasticsearch

Ви можете використовуватиproxiesкоманда для переліку всіх конфігурацій веб-сайтів, які проксі-сервером:

valet proxies

Спеціальні драйвери для камердинера

Ви можете написати власний "драйвер" Valet для обслуговування додатків PHP, що працюють на іншому фреймворку або CMS, що не підтримується Valet. Коли ви встановлюєте Valet, a~/.config/valet/Driversстворюється каталог, який міститьSampleValetDriver.phpфайл. Цей файл містить зразок реалізації драйвера, щоб продемонструвати, як написати власний драйвер. Написання драйвера вимагає лише трьох методів:serves,isStaticFile, іfrontControllerPath.

Всі три методи отримують$sitePath,$siteName, і$uriзначення як їх аргументи.$sitePath- це повністю кваліфікований шлях до веб-сайту, який обслуговується на вашому комп'ютері, наприклад/Users/Lisa/Sites/my-project.$siteNameє частиною домену "хост" / "ім'я сайту" (my-project).$uriURI вхідного запиту (/foo/bar).

Після завершення користувацького драйвера Valet помістіть його в~/.config/valet/Driversкаталог за допомогоюFrameworkValetDriver.phpконвенція іменування. Наприклад, якщо ви пишете власний драйвер камердинера для WordPress, ім'я вашого файлу має бутиWordPressValetDriver.php.

Let's take a look at a sample implementation of each method your custom Valet driver should implement.

servesМетод

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

Наприклад, давайте зробимо Шаблон, що пишемо aWordPressValetDriver. Наші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';
}

Місцеві водії

Якщо ви хочете визначити власний драйвер 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.
valet trust Додайте файли sudoers для Brew та Valet, щоб дозволити запускати команди Valet без запиту на введення паролів.
valet uninstall Видалити Valet: Відображає інструкції щодо ручного видалення; або пройти--forceдля агресивного видалення всього Valet.

Каталоги та файли Valet

Ви можете знайти такий каталог та інформацію про файли корисними під час вирішення проблем із середовищем Valet:

Файл / Шлях Опис
~/.config/valet/ Містить усі конфігурації Valet. Можливо, ви захочете зберегти резервну копію цієї папки.
~/.config/valet/dnsmasq.d/ Містить конфігурацію DNSMasq.
~/.config/valet/Drivers/ Містить спеціальні драйвери Valet.
~/.config/valet/Extensions/ Містить спеціальні розширення / команди Valet.
~/.config/valet/Nginx/ Містить усі конфігурації сайту, створені службою Valet. Ці файли відновлюються під час запускуinstall,secure, іtldкоманди.
~/.config/valet/Sites/ Містить усі символічні посилання для пов'язаних проектів.
~/.config/valet/config.json Головний файл конфігурації Valet
~/.config/valet/valet.sock Сокет PHP-FPM, використовуваний конфігурацією Nginx від Valet. Це буде існувати, лише якщо PHP працює належним чином.
~/.config/valet/Log/fpm-php.www.log Журнал користувача щодо помилок PHP.
~/.config/valet/Log/nginx-error.log Журнал користувачів щодо помилок Nginx.
/usr/local/var/log/php-fpm.log Системний журнал помилок PHP-FPM.
/usr/local/var/log/nginx Містить журнали доступу та помилок Nginx.
/usr/local/etc/php/X.X/conf.d Містить*.iniфайли для різних налаштувань конфігурації PHP.
/usr/local/etc/php/X.X/php-fpm.d/valet-fpm.conf Файл конфігурації пулу PHP-FPM.
~/.composer/vendor/laravel/valet/cli/stubs/secure.valet.conf Конфігурація Nginx за замовчуванням, яка використовується для створення сертифікатів сайту.