laravel vapor что это
Laravel Framework Russian Community
Пролог
Начало работы
Архитектурные концепции
Основное
Погружение
Безопасность
База данных
Eloquent ORM
Тестирование
Пакеты
Развертывание
Введение
Когда вы будете готовы развернуть свое приложение Laravel в эксплуатационном окружении, вы должны сделать несколько важных вещей, чтобы убедиться, что ваше приложение работает максимально эффективно. В этой документации мы рассмотрим несколько отличных отправных точек, чтобы убедиться, что ваше приложение Laravel развернуто правильно.
Требования к серверу
Фреймворк Laravel имеет несколько системных требований. Вы должны убедиться, что ваш веб-сервер имеет следующую минимальную версию PHP и расширения:
Конфигурация сервера
Nginx
Если вы развертываете свое приложение на сервере, на котором работает Nginx, то вы можете использовать следующий конфигурационный файл в качестве отправной точки для настройки веб-сервера. Скорее всего, этот файл нужно будет настроить в зависимости от конфигурации вашего сервера. Если вам нужна помощь в управлении вашим сервером, рассмотрите возможность использования собственной службы управления и развертывания серверов Laravel, такой как Laravel Forge.
Убедитесь, что, как и в конфигурации ниже, ваш веб-сервер направляет все запросы в файл public/index.php вашего приложения. Вы никогда не должны пытаться переместить файл index.php в корень вашего проекта, поскольку обслуживание приложения из корня проекта откроет доступ ко многим конфиденциальным файлам конфигурации из общедоступной сети Интернет:
Оптимизация
Оптимизация автозагрузчика
При развертывании в эксплуатационном окружении, убедитесь, что вы оптимизировали файл автозагрузчика классов Composer, чтобы он мог быстро найти нужный файл для загрузки конкретного класса:
Оптимизация загрузки конфигурации
При развертывании вашего приложения в эксплуатационном окружении, вы должны убедиться, что вы выполнили команду config:cache Artisan в процессе развертывания:
Эта команда объединит все файлы конфигурации Laravel в один кешированный файл, что значительно сократит количество обращений, которые фреймворк должен совершить к файловой системе при загрузке значений вашей конфигурации.
Оптимизация загрузки маршрута
Если вы создаете большое приложение с множеством маршрутов, вам следует убедиться, что вы выполнили команду route:cache Artisan в процессе развертывания:
Эта команда сокращает регистрации всех маршрутов до одного вызова метода в кешированном файле, повышая производительность при регистрации сотен маршрутов.
Оптимизация загрузки шаблонов
При развертывании вашего приложения в эксплуатационном окружении, вы должны убедиться, что вы выполнили команду view:cache Artisan в процессе развертывания:
Эта команда предварительно скомпилирует все ваши шаблоны Blade, чтобы они не компилировались во время запроса, повышая производительность каждого запроса, возвращающего шаблоном.
Режим отладки
Развертывание с помощью Forge / Vapor
Laravel Forge
Если вы не совсем готовы управлять конфигурацией своего собственного сервера или вам неудобно настраивать все различные службы, необходимые для запуска надежного приложения Laravel, то Laravel Forge – замечательная альтернатива.
Laravel Forge может создавать серверы на различных поставщиках инфраструктуры, таких как DigitalOcean, Linode, AWS и других. Кроме того, Forge устанавливает и управляет всеми инструментами, необходимыми для создания надежных приложений Laravel, таких как Nginx, MySQL, Redis, Memcached, Beanstalk и других.
Laravel Vapor
Если вам нужна полностью бессерверная платформа развертывания с автоматическим масштабированием, настроенная для Laravel, ознакомьтесь с Laravel Vapor. Laravel Vapor – это платформа для бессерверного развертывания Laravel, работающая на AWS. Запустите свою инфраструктуру Laravel на Vapor и влюбитесь в масштабируемую простоту бессерверной архитектуры. Laravel Vapor настроен создателями Laravel для бесперебойной работы с фреймворком, поэтому вы можете продолжать писать свои приложения Laravel точно так, как вы привыкли.
Laravel 8 · Развертывание
Введение
Когда вы будете готовы развернуть свое приложение Laravel в эксплуатационном окружении, вы должны сделать несколько важных вещей, чтобы убедиться, что ваше приложение работает максимально эффективно. В этой документации мы рассмотрим несколько отличных отправных точек, чтобы убедиться, что ваше приложение Laravel развернуто правильно.
Требования к серверу
Фреймворк Laravel имеет несколько системных требований. Вы должны убедиться, что ваш веб-сервер имеет следующую минимальную версию PHP и расширения:
Конфигурация сервера
Nginx
Если вы развертываете свое приложение на сервере, на котором работает Nginx, то вы можете использовать следующий конфигурационный файл в качестве отправной точки для настройки веб-сервера. Скорее всего, этот файл нужно будет настроить в зависимости от конфигурации вашего сервера. Если вам нужна помощь в управлении вашим сервером, рассмотрите возможность использования собственной службы управления и развертывания серверов Laravel, такой как Laravel Forge.
Убедитесь, что, как и в конфигурации ниже, ваш веб-сервер направляет все запросы в файл public/index.php вашего приложения. Вы никогда не должны пытаться переместить файл index.php в корень вашего проекта, поскольку обслуживание приложения из корня проекта откроет доступ ко многим конфиденциальным файлам конфигурации из общедоступной сети Интернет:
Оптимизация
Оптимизация автозагрузчика
При развертывании в эксплуатационном окружении, убедитесь, что вы оптимизировали файл автозагрузчика классов Composer, чтобы он мог быстро найти нужный файл для загрузки конкретного класса:
Оптимизация загрузки конфигурации
При развертывании вашего приложения в эксплуатационном окружении, вы должны убедиться, что вы выполнили команду config:cache Artisan в процессе развертывания:
Эта команда объединит все файлы конфигурации Laravel в один кешированный файл, что значительно сократит количество обращений, которые фреймворк должен совершить к файловой системе при загрузке значений вашей конфигурации.
Оптимизация загрузки маршрута
Если вы создаете большое приложение с множеством маршрутов, вам следует убедиться, что вы выполнили команду route:cache Artisan в процессе развертывания:
Эта команда сокращает регистрации всех маршрутов до одного вызова метода в кешированном файле, повышая производительность при регистрации сотен маршрутов.
Оптимизация загрузки шаблонов
При развертывании вашего приложения в эксплуатационном окружении, вы должны убедиться, что вы выполнили команду view:cache Artisan в процессе развертывания:
Эта команда предварительно скомпилирует все ваши шаблоны Blade, чтобы они не компилировались во время запроса, повышая производительность каждого запроса, возвращающего шаблоном.
Режим отладки
Развертывание с помощью Forge / Vapor
Laravel Forge
Если вы не совсем готовы управлять конфигурацией своего собственного сервера или вам неудобно настраивать все различные службы, необходимые для запуска надежного приложения Laravel, то Laravel Forge – замечательная альтернатива.
Laravel Forge может создавать серверы на различных поставщиках инфраструктуры, таких как DigitalOcean, Linode, AWS и других. Кроме того, Forge устанавливает и управляет всеми инструментами, необходимыми для создания надежных приложений Laravel, таких как Nginx, MySQL, Redis, Memcached, Beanstalk и других.
Laravel Vapor
Если вам нужна полностью бессерверная платформа развертывания с автоматическим масштабированием, настроенная для Laravel, ознакомьтесь с Laravel Vapor. Laravel Vapor – это платформа для бессерверного развертывания Laravel, работающая на AWS. Запустите свою инфраструктуру Laravel на Vapor и влюбитесь в масштабируемую простоту бессерверной архитектуры. Laravel Vapor настроен создателями Laravel для бесперебойной работы с фреймворком, поэтому вы можете продолжать писать свои приложения Laravel точно так, как вы привыкли.
Что нового в Laravel 6.0
В этой статье узнаем, что нового добавили в Laravel 6.0, и ознакомимся с новыми функциями и обновлениями фреймворка.
Что нового?
Семантическое версионирование.
Хоть фреймворк и «перепрыгнул» с версии 5.8 на 6.0, Тейлор сказал, что с точки зрения новых функций и изменений, это обновление больше похоже на переход с 5.8 на 5.9.
При выпуске новых версий Laravel, всегда проделывалась огромная работа по внедрению новых фишек, что типично для молодого фреймворка. Все обновления версий 5.x являются основой стабильной и надежной структуры фреймворка. В дальнейшем, начиная с версии 6.0, вам не придется сильно беспокоиться об огромных кардинальных изменениях фреймворка и переписывать их с каждым новым мажорным выпуском. Именно по причине внедрения новой стабильности версий, фреймворк принял более традиционное семантическое версионирование, от которого разработчикам становится только лучше.
Миддлверы для Job-ов
Вместо ручного добавления дополнительных, однотипных проверок в Job-ах, теперь вы можете создать миддлвер (аналогично HTTP-миддлверам), вынеся туда общую логику, а затем просто можете привязать его к конкретному Job-у.
В этом примере я продемонстрирую, как можно добавить ограничение скорости для Job-а до 6 секунд. Ранее вы бы добавили этот код в метод handle() добавляя этот код в каждый из Job-ов, где это требует логика работы.
В этом новом релизе теперь вы можете вынести этот код из метода handle() и переместить его в специальный общий миддлер. Вы можете создать папку app/Jobs/Middleware (или где угодно, Laravel не призывает к чему-то конкретному) и добавить файл нового миддлера.
Теперь вы можете привязать этот миддлер к Job-у, и каждый Job будет проходить через этот миддлвер перед выполнение работы. Если вы знакомы с HTTP-миддлверами, который используете в контроллерах/роутах проекта, концепция одна и та же.
Это позволит сохранить ваши Job-файлы небольшими, удобными для чтения и сфокусированными на решении конкретной задачи. Это также позволит вам легко повторно использовать миддлверы для Job-ов, имеющих общую логику проверок.
Ленивые коллекции
В Laravel 6.0 представлены ленивые коллекции, которые позволят вам снизить потребление памяти при работе с большими данными.
Eloquent улучшенная работа с подзапросами
В этом примере представьте, что у вас есть 2 таблицы: отели hotels и reservations брони. Вы хотите узнать, номер какого типа был зарезервирован последним для определенного отеля. Вместо того, чтобы делать два отдельных Eloqunt запроса, теперь вы можете сделать так:
Улучшение пользовательских ответов на авторизацию
Например, представим, что у вас есть метод, который определяет, имеет ли пользователь права на редактирование сообщения. До версии 6.0 было трудно передать конкретное сообщение о том, по каким причинам доступ был отклонён, и были некоторые трудности с отображением подобного сообщения обратно пользователю.
С добавлением метода Gate::inspect() теперь вы можете легко задать сообщение ошибки, которое получит пользователь и отправить его ему обратно.
К примеру, если вы хотите ограничить редактирование сообщений любому пользователю, не являющимся администратором, вы бы создали Gate правило для редактирования поста.
Laravel UI composer библиотека
Теперь ваш файл app.js выглядит так:
Теперь в философии Laravel нет жесткого навязывания использования VueJs, Bootstrap в проекте.
Тейлор и команда вынесли в отдельный пакет заготовки для проектов с ядром под различный фронтенд. Этот пакет теперь включает в себя пресеты для React, Vue и Bootstrap.
После чего, у нас добавятся новые ui команды для работы с фронтендом.
Удаление ранее помеченных deprecated-хелперов
А чтобы понять, как создать свои собственные, советую почитать статью о том, как создавать и подключать собственные хелперы.
С полным списком прочих мелких модификаций можете ознакомиться на странице.
Ребрендинг
С каждой новой мажорной версией также появляется редизайн официального сайта Laravel, и 6.0 не является исключением!
В дополнение к новому логотипу, вы также можете найти увидеть новый дизайн сайта Laravel.com.
Laravel Vapor
До Laravel Vapor большинство людей использовали Laravel Forge для деплоя и развертывания своих приложений. С помощью Forge вы можете подключит любой выбранный вами сервер (Digital Ocean, AWS и т.д.), а Forge уже сам позаботится о том, чтобы быстрее, и с вашим минимальным участием выгрузить и развернуть приложение. Это, конечно, круто, но вам всё равно приходилось вручную устанавливать некоторые компоненты/обновления.
Laravel Vapor делает всё то, что может Forge, и даже немного больше. Теперь, вместо того, чтобы самостоятельно управлять и обновлять серверы для вашего приложения Laravel, Vapor полностью избавляет вас от регистрации и управления сервером!
Конечно, это не значит, что серверы не задействованы при его работе, это просто значит, что вам не нужно иметь с ними дело, и работать с ними мануально. Следующим преимуществом является то, что вы платите только за то, что используете. Вместо того, чтобы платить фиксированную месячную ставку, вы платите только тогда, когда к вашему приложению происходят обращения. Так же, из весомых преимуществ это то, что вам не нужно беспокоиться о масштабировании, поскольку Vapor позаботится об этом за вас в автоматическом режиме.
Вот еще несколько удивительных и полезных функций, которые предоставляет Vapor:
Стоимость всего этого составляет 39 долларов в месяц или 399 долларов в год с неограниченным количеством членов команды и проектов. Имейте в виду, что к этому всему ещё придётся добавить собственные расходы на AWS-сервера. Но, это избавляет вас от многих проблем с деплоем приложения, масштабирования и администрирования серверов вручную.
Обновление Laravel до версии 6.0
Как гласит документация Laravel, для обновления с 5.8 до 6.0 потребуется около часа. Это примерное время, так как ваш проект может иметь зависимости от сторонних библиотек, которые увеличат это время, поэтому примите это к сведению, когда решитесь обновить версию фреймворка.
Как обновить Laravel до версии 6.0
После чего, в терминале выполните:
Laravel Shift
Процесс очень простой и является идеальным вариантом, если простое изменение версии пакетов в вашем composer.json не сработало. Услуга не бесплатная, не такая большая. Инструкцию по обновлению вы можете найти на странице.
Нужно ли обновляться?
Эта таблица с сайта Laravel описывает текущий график поддержки: .
Поскольку исправление ошибок в предыдущем LTS-релизе заканчиваются очень скоро, возможно, стоит обновить его до 6.0, чтобы точно быть уверенным в том, что ваш проект будет поддерживаться ещё несколько лет.
Резюме
Laravel вызвал большой энтузиазм и волнение в мире PHP, и было здорово видеть, как фреймворк и его сопутствующие продукты продолжают улучшаться и двигать вперёд разработку. И из этой статьи вы узнали, что нового в Laravel 6.0, какие фичи были добавлены, и что было удалено в Laravel 6.0.
В дополнение к семантическому версионированию, в версии 6.0 улучшена скорость доступа к коллекциям, добавлены Eloquent-выборку в подзапросах, добавлены миддлеверы в Job-ах, и многое другое.
Subscribe to Блог php программиста: статьи по PHP, JavaScript, MySql
Get the latest posts delivered right to your inbox
Laravel 6 — Что нового?
Laravel 6.0 станет версией LTS (Long Term Support) — с поддержкой в течении длительного времени, вплоть до сентября 2022 года. Шестая версия фреймворка продолжает улучшения, сделанные в Laravel 5.8, переход на семантическое управление версиями, совместимость с Laravel Vapor, улучшенные ответы авторизации, мидлвары задач, ленивые коллекции, улучшения подзапросов, извлечение фронтенд каркаса ( frontend scaffolding) в отдельный пакет laravel/ui, и множество других исправлений и улучшений. Официальный релиз запланирован на 3 сентября 2019 года.
Семантическое управление версиями
Фреймворк Laravel (laravel/framework) теперь соответствует стандарту семантического управления версиями. Это делает фреймворк совместимым с другими пакетами Laravel, уже использующими этот стандарт. Цикл выпуска Laravel останется неизменным.
Совместимость с Laravel Vapor
Laravel 6.0 обеспечивает совместимость с Laravel Vapor, автоматически масштабируемой безсерверной платформой для развертывания Laravel. Vapor абстрагирует сложность управления приложениями Laravel в AWS Lambda, а также сопряжения этих приложений с очередями SQS, базами данных, кластерами Redis, сетями, CloudFront CDN и многим другим.
Улучшенные ответы авторизации (Improved Authorization Responses)
В предыдущих версиях Laravel было сложно получать и выставлять пользовательские авторизационные сообщения конечным пользователям. Это затрудняло объяснение им, почему конкретный запрос был отклонен. В Laravel 6.0 делать это теперь намного проще через авторизационные ответные сообщения и новый метод Gate::inspect. Например, учитывая следующий метод политики:
Ответ и сообщение политики авторизации могут быть легко получены при помощи метода Gate::inspect:
Кроме того, эти пользовательские сообщения будут автоматически возвращаться на фронтенд при использовании вспомогательных методов, таких как $this->authorize или Gate::authorize из ваших маршрутов или контроллеров.
Мидлвары задач (Job Middleware)
Мидлвары задач позволяет вам обернуть очередь задач в собственную логику, уменьшая шаблонность в самих задачах. Например, в предыдущих версиях Laravel вы могли обернуть логику метода handle задачи коллбэком с ограничением скорости:
В Laravel 6.0 эта логика может быть перемещена в мидлвар задачи, освобождая метод ваш handle задачи от лимитирования скорости:
После создания мидлвара их можно прикрепить к задаче, вернув из метода middleware:
Ленивые Коллекции
Многим разработчикам нравятся методы Laravel Collection. Чтобы дополнить и без того мощный класс Collection, Laravel 6.0 представляет LazyCollection, использующий генераторы PHP, для работы с очень большими наборами данных, сохраняя при этом низкое потребление памяти.
Например, представьте, что вашему приложению требуется обработать файл логов размером в несколько гигабайт, используя преимущества методов Laravel Collection для анализа записей. Вместо одновременного чтения всего файла в память, ленивые коллекции могут хранить небольшую часть файла в памяти в конкретный момент времени:
Или представьте, что вам нужно перебрать 10 000 моделей Eloquent. При использовании традиционных коллекций Laravel все 10 000 моделей Eloquent должны быть загружены в память одновременно:
Однако, начиная с Laravel 6.0, метод cursor в построителе запросов был обновлен и теперь возвращает экземпляр LazyCollection. Это позволяет вам по-прежнему выполнять только один запрос к базе данных, но одновременно сохранять в памяти только одну модель Eloquent. В этом примере обратный вызов filter не выполняется до тех пор, пока мы не проведем итерацию по каждому пользователю индивидуально, что позволяет значительно сократить использование памяти:
Расширения Eloquent Subquery
Laravel 6.0 представляет ряд новых усовершенствований и улучшений в поддержке подзапросов базы данных. Например, давайте представим, что у нас есть таблица destinations и таблица flight. Таблица flights содержит столбец arrived_at который указывает, когда рейс прибыл в пункт назначения.
Используя новую функцию выбора подзапроса в Laravel 6.0, мы можем выбрать все destinations и название рейса, который последний раз прибыл в этот пункт назначения, используя один запрос:
Кроме того, мы можем использовать новые функции подзапроса, добавленные в функцию orderBy, чтобы отсортировать все пункты назначения на основе того, когда последний рейс прибыл в этот пункт назначения. Опять же, это может быть сделано при выполнении одного запроса к базе данных:
Laravel UI
Каркас фронтенда, обычно поставляемый с предыдущими версиями Laravel, были перенесен в отдельный пакет laravel/ui. Это позволяет создавать и версионировать пользовательские интерфейсы отдельно от основного фреймворка. В результате этого изменения в дефолтном каркасе фреймворка не будет Bootstrap и Vue. Также была вынесена из фреймворка команда make:auth.
Чтобы восстановить традиционный каракас Vue/Bootstrap, имеющийся в предыдущих версиях Laravel, вы можете установить пакет laravel/ui
и использовать artisan команду ui для установки фронтенд каркаса:
Наш Телеграм-канал — следите за новостями о Laravel.
Задать вопросы по урокам можно на нашем форуме.
Vapor
Laravel ecosystem — including Laravel, Forge, and Vapor — is PHP 8.1 ready
As you may have noticed in the past few weeks, we ensured that Laravel, first-party libraries, Forge, Envoyer, Nova, and Vapor, do support PHP 8.1 since day one. So, let’s take a look at what you need to start using PHP 8.1.
Vapor: RDS Proxies Now Support MySQL 8.0
Starting today, you may use Vapor’s managed RDS Proxies with MySQL 8.0 — the most recent MySQL version.
Vapor: PHP 8.1 Release Candidate Is Now Supported
Starting today, you may use PHP 8.1 Release Candidates in your Vapor environments. To get started, simply specify «php-8.1:al2» as your preferred runtime in your «vapor.yml» configuration file.
Vapor: Octane Support Is Now Available
Today we’re pleased to announce that Octane support is now available in Laravel Vapor. The speed improvements are just mind-blowing, so put on your seat belt, and let’s get into the details.
Vapor: API Gateway vs Load Balancers
When using an AWS serverless infrastructure powered by Vapor, you have three different options to consider when determining how to route traffic to your application: API Gateway v1, API Gateway v2, and Load Balancers. In this article, we are going to compare these three options in terms of performance, pricing, and features.
Vapor: Common Infrastructure Performance Tips
In this article, we’ll cover the Vapor most common infrastructure performance tips that may speed your Laravel applications powered by Vapor.
Vapor: Introducing Managed Firewalls
Today, we are proud to introduce Vapor’s managed firewalls for basic protection against denial-of-service attacks targeting your environment, as well as protection against pervasive bot traffic that can consume your environment’s resources.
Vapor: Database Upgrades Are Now Available
Vapor allows you to easily create and manage RDS and Aurora Serverless databases. And, starting today, you may upgrade an existing database directly from the Vapor UI or using the Vapor CLI.
Vapor: Redis 6.x Clusters Are Now Available
Starting today, in addition to Redis 5.x Clusters, you may now also create and manage Redis 6.x Clusters. Redis 6.x is the latest version of open-source Redis software. This new version brings improved security and boosts the performance of your cache.
Vapor: Asia Pacific (Osaka) Region Is Now Available
Starting today, you may also choose the Asia Pacific (Osaka) region when starting a new project on Vapor. This new region offers low latency for customers seeking to serve end-users in Western Japan.
Vapor: «Learn Laravel Vapor» is now available on YouTube
The video series «Learn Laravel Vapor» has been completed and is now available for viewing on YouTube. With 2 hours of content, our team will help you launch your Laravel infrastructure on Vapor and fall in love with the scalable simplicity of serverless.
Vapor: Docker Based Runtimes Are Now Available In All Regions
Previously, only a few regions supported Docker runtimes. But, starting today, you can use Docker runtimes in all regions supported by Vapor.