mcodex - Короткие статьи об основных понятиях, терминах и концепциях веб-разработки

Права на storage в Laravel

Ситуация: проект на Laravel, пользователи: Nginx/PHP-FPM: ‘www-data’, разработчик: ‘mcodex’. Если задать владельца всего проекта как www-data, то при выполнении консольной команды от имени пользователя, ( например, php artisan), может появится ошибка доступа к файлу лога “Failed to open stream: Permission denied”. Необходимо задать права на логи так, что бы в них могли записывать и у … Read more

Разбираемся с сервис-контейнером в Laravel.

Содержание Keynotes Почти каждый, кто пишет на Laravel, хотя бы раз слышал: “ну это же контейнер разрешает зависимости”. Звучит солидно, но за этой фразой у многих пустота. Давайте её заполним. Мы пойдём от проблемы к решению: сначала посмотрим, какую боль контейнер лечит, потом разберём, как он устроен внутри, а в конце напишем свой мини-контейнер строк … Read more

Воркеры в Laravel

«Воркер» – это не какая-то особая сущность фреймворка. Это обычный долгоживущий PHP-процесс, запущенный из командной строки, который крутит бесконечный цикл и не завершается. Когда вы выполняете php artisan queue:work, PHP-скрипт запускается и просто не возвращает управление. Внутри у него: Всё. Воркер – это исполнитель цикла «взять → выполнить → повторить». Чем воркер принципиально отличается от … Read more

Очереди в Laravel, Horizon, Supervisor

Как работают очереди в Laravel: Redis + Horizon + Supervisor Разберём эту систему по слоям: от концепции очередей до того, как Linux следит, чтобы всё это не падало. 1. Зачем вообще нужны очереди Когда пользователь делает запрос (например, регистрируется на сайте), некоторые действия долгие: отправить email, сгенерировать PDF, обработать видео, дёрнуть внешний API. Если делать … Read more

Локальный сайт с SSL

Иногда возникает необходимость открывать в браузере локальный сайт через https, например, для отладки функционала, доступ к которому ограничен по http (геопозиция, копирование в буфер и т.д.). 1. Устанаваливаем утилиту mkcert 2. Создаем корневой сертификат 3. Создаем сертификат для локального сайта 4. Проверяем папку, должны появится файлы 5. Добавляем сертфикат в настройку Nginx 6. Перегружаем Nginx