Как создать и развернуть проект на Laravel: структура, примеры и лучшие практики - Изображение №1
01

Как создать и развернуть проект на Laravel: структура, примеры и лучшие практики

Содержание:
Как вам статья?
Спасибо за отзыв!
5.0
Просмотров: 244

Laravel входит в число самых популярных PHP-фреймворков для разработки современных веб-приложений. Его используют для создания SaaS-платформ, CRM-систем, API-сервисов, маркетплейсов и сложных B2B-решений. Одной из причин популярности является сочетание ряда возможностей и простоты использования. Laravel предоставляет готовый ORM-слой Eloquent для работы с базой данных, CLI-инструмент Artisan для автоматизации типовых задач, а также стартовые наборы аутентификации Breeze или Jetstream. С помощью этих инструментов базовая пользовательская логика реализуется достаточно быстро.


В статье рассмотрим создание проекта, структуру, примеры проектов на Laravel, лучшие практики и процесс развертывания. Команда Asabix реализовала более 50 Laravel-проектов, поэтому наши рекомендации основаны на реальном опыте.


Разработка на Laravel: подготовка и создание проекта

Если вы решили создать новый проект на Laravel, прежде всего необходимо выполнить три ключевых шага: подготовить локальное окружение, установить необходимые инструменты и сгенерировать базовую структуру приложения. Laravel имеет достаточно простой процесс инициализации: достаточно установить PHP и Composer, создать проект через CLI и настроить конфигурацию окружения. Далее подключается база данных, выполняются миграции и запускается первый локальный сервер. Подробные технические объяснения всех этапов можно найти в документации Laravel, однако базовый процесс создания проекта выглядит именно так, поэтому рассмотрим его далее.


Требования к окружению

Перед созданием Laravel-проекта убедитесь, что ваша система соответствует базовым требованиям. Современные версии фреймворка работают с PHP 8.2 или новее и требуют нескольких стандартных PHP-расширений, включая BCMath, Ctype, JSON, Mbstring, OpenSSL, PDO, Tokenizer и XML.


Помимо PHP, для работы с Laravel необходимы следующие инструменты:


  • Composer – менеджер зависимостей для PHP, через который устанавливаются библиотеки и сам фреймворк;
  • MySQL или PostgreSQL – система управления базами данных;
  • Node.js и npm – используются для сборки frontend-ресурсов (через Vite);
  • Git – желательно для управления версиями и работы с репозиториями.

Проверить, установлены ли необходимые инструменты, можно с помощью CLI:


php -v

composer --version

node -v


Если все компоненты установлены, можно переходить к созданию проекта Laravel.


Установка Composer и Laravel Installer

Проект можно создать двумя способами: через стандартный Composer или через специальный Laravel Installer, который упрощает генерацию новых проектов.


Чтобы установить Laravel Installer глобально, выполните команду:


composer global require laravel/installer


После этого команда laravel станет доступной в вашем CLI. Проверить установку можно командой:


laravel --version


Это позволит быстро создавать готовые проекты на Laravel без дополнительной настройки.


Создание нового проекта

Существует два основных способа создания нового Laravel-приложения.


1) Через Laravel Installer:


laravel new example-app

cd example-app


Инсталлятор автоматически создаст структуру проекта, установит зависимости и подготовит базовую конфигурацию.


2) Альтернативный способ через Composer:


composer create-project laravel/laravel example-app

cd example-app


Этот метод использует стандартный механизм Composer для загрузки шаблона Laravel-проекта. Он дает больше контроля над процессом установки, но функционально результат будет таким же.


Настройка окружения

Следующим шагом после создания проекта является настройка конфигурации окружения. В Laravel все основные параметры приложения хранятся в файле .env.


Сначала скопируйте пример файла:


cp .env.example .env


Затем сгенерируйте уникальный ключ приложения:


php artisan key:generate


Этот ключ используется для шифрования сессий, cookie и других чувствительных данных. Без него Laravel не сможет корректно работать.


Переменные окружения

Файл .env определяет конфигурацию приложения в зависимости от окружения. Ключевые параметры:


APP_NAME="My App"

APP_ENV=local

APP_DEBUG=true

APP_URL=http://localhost:8000


Значение APP_ENV определяет режим работы приложения:


  • local – среда разработки с подробными сообщениями об ошибках;
  • staging – тестовая среда перед релизом;
  • production – рабочая среда.

В production-режиме всегда необходимо устанавливать:


APP_DEBUG=false


Это предотвращает отображение технической информации и ошибок пользователям. Также важно помнить, что файл .env не должен попадать в Git-репозиторий – обычно он уже добавлен в .gitignore.


Подключение базы данных

Laravel использует ORM Eloquent и систему миграций для работы с базой данных. Перед запуском приложения необходимо настроить подключение к БД в файле .env


DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=my_app

DB_USERNAME=root

DB_PASSWORD=secret


Перед выполнением миграций убедитесь, что база данных my_app уже создана. После этого можно сгенерировать структуру таблиц с помощью миграций:


php artisan migrate


Команда выполнит все файлы миграций и создаст необходимые таблицы в базе данных. После настройки запустите локальный сервер:


php artisan serve


Laravel будет доступен по адресу:


http://localhost:8000


Если все выполнено правильно, в браузере откроется стандартная приветственная страница Laravel – это означает, что проект успешно создан и готов к дальнейшей разработке.


Установка локального стека для разработки

Следующим шагом является запуск приложения локально. В локальной среде разработки можно тестировать функциональность, проверять маршруты, работать с базой данных и отлаживать код перед развертыванием на сервере. Самый простой способ организовать локальный стек – использовать встроенный сервер Laravel, который запускается одной командой. Он подходит для индивидуальной разработки, быстрого тестирования функций или изучения фреймворка. Не требует установки дополнительных сервисов или контейнеризации: достаточно иметь установленный PHP и выполнить команду в корне проекта.


Однако при командной разработке или в сложных проектах возникает необходимость в одинаковом окружении для всех участников, так как различия в версиях PHP, расширениях или локальных сервисах часто становятся причиной ошибок. Альтернативный подход, предлагаемый Laravel, – использование контейнеризированной среды через Docker. Для этого во фреймворке предусмотрен инструмент Laravel Sail (позволяет развернуть полный стек разработки за несколько команд). Laravel Sail создает изолированную среду на основе Docker-контейнеров, где уже настроены основные сервисы: PHP, веб-сервер, база данных, кэш и другие вспомогательные компоненты. Таким образом, все разработчики работают в одинаковой конфигурации независимо от операционной системы или локальных настроек.


Так что выбрать: встроенный сервер Laravel или Docker-среду? Это зависит от задач проекта. Если вы работаете над небольшим приложением или только знакомитесь с Laravel, достаточно стандартного локального сервера. Если же проект предполагает командную разработку, интеграции с несколькими сервисами или более сложную инфраструктуру, стоит использовать контейнеризацию через Sail. Рассмотрим оба варианта запуска локальной среды.


Локальный сервер Laravel

Самый простой способ запустить приложение – использовать встроенный сервер Laravel. В корне проекта выполните команду:


php artisan serve


После запуска приложение будет доступно в браузере по адресу:


http://localhost:8000


Этот сервер использует возможности PHP для обработки HTTP-запросов и позволяет быстро проверять работу маршрутизации, контроллеров и шаблонов. Он не предназначен для production-среды, но отлично подходит для локальной разработки.


Laravel Sail (Docker)

Для командной разработки Laravel рекомендует использовать Laravel Sail – готовую Docker-среду для запуска проекта.


Установка Sail выполняется командой:


php artisan sail:install


После установки можно запустить окружение:


./vendor/bin/sail up


Laravel Sail автоматически создает Docker-контейнеры для основных сервисов, необходимых для работы приложения.


Основные преимущества Sail:


  • одинаковое окружение для всей команды;
  • готовые контейнеры для сервисов (MySQL, Redis, Mailpit);
  • отсутствие проблем с локальными версиями PHP или расширениями.

Разработчики могут быстро подключаться к проекту и не тратить время на сложную настройку локальной инфраструктуры.


Структура проекта Laravel

Как уже упоминалось, Laravel популярен благодаря понятной и логичной структуре проекта. Фреймворк использует стандартизированную архитектуру, которая помогает быстро ориентироваться в коде, разделять ответственность между компонентами и поддерживать систему в долгосрочной перспективе. Стандартная структура директорий в Laravel построена на принципе Separation of Concerns – то есть разделения логики приложения по ролям. Маршруты, бизнес-логика, конфигурации, шаблоны и служебные файлы находятся в отдельных папках. После создания нового Laravel-проекта вы увидите несколько основных директорий. Самые важные из них отвечают за логику приложения, маршрутизацию, конфигурацию и хранение временных данных.


Основные директории


Папка Назначение Ключевые файлы
app/ Бизнес-логика приложения Models, Controllers
routes/ Маршрутизация приложения web.php, api.php
resources/ Шаблоны и frontend-ресурсы views/
public/ Публичная директория веб-сервера index.php
config/ Конфигурационные файлы app.php
storage/ Логи, кэш и служебные файлы logs/, cache/

Рассмотрим кратко роль каждой из этих директорий.


app/ – основная папка, в которой находится код приложения. Здесь размещаются контроллеры, модели, сервисы, события, middleware и другие компоненты, реализующие бизнес-логику системы. Именно здесь обычно происходит основная разработка сайтов на Laravel.


routes/ – содержит файлы маршрутизации. Laravel позволяет разделять маршруты для веб-интерфейса и API. Как правило, используются файлы web.php для браузерных маршрутов и api.php для REST API.


resources/ – предназначена для пользовательского интерфейса. Здесь находятся Blade-шаблоны, а также frontend-ресурсы, которые компилируются через Vite или другие инструменты.


public/ – единственная директория, которая должна быть доступна веб-серверу. В ней находится файл index.php, через который обрабатываются все HTTP-запросы к приложению. Также здесь могут храниться статические файлы, например изображения.


config/ – содержит конфигурационные файлы фреймворка. Здесь настраиваются параметры приложения, сервисы, очереди, кэширование, подключения к базе данных и другие системные компоненты.


storage/ – используется для хранения служебных данных: логов, кэша, сессий, временных файлов и загруженных пользователями документов. Эта директория активно используется во время работы приложения, поэтому веб-сервер должен иметь права на запись в неё.


Storage symlink

Во многих случаях файлы, хранящиеся в storage, должны быть доступны из веб-интерфейса – например, пользовательские изображения.


Для этого Laravel использует символическую ссылку между директориями storage и public. Создать её можно командой:


php artisan storage:link


Эта команда создаёт симлинк между storage/app/public и public/storage. Благодаря этому файлы, сохранённые в хранилище приложения, становятся доступными через браузер без прямого доступа к внутренним директориям Laravel.


Примеры кода и архитектура Laravel

Следующим шагом в разработке на Laravel является понимание того, как организован код приложения. Фреймворк предлагает набор инструментов и шаблонов, которые помогают быстро создавать основные компоненты системы: контроллеры, маршруты, классы валидации и сервисы для бизнес-логики. Благодаря этому код остается структурированным и легко поддерживается в крупных проектах. Laravel использует Artisan CLI, который позволяет автоматически генерировать файлы и базовую структуру компонентов. Это значительно ускоряет разработку и обеспечивает соблюдение архитектурных стандартов фреймворка.


Создание контроллера

Контроллеры отвечают за обработку HTTP-запросов и взаимодействие между моделями и представлениями (views). В Laravel их можно быстро создать с помощью Artisan. Например, следующая команда создаёт resource-контроллер со стандартным набором CRUD-методов:


php artisan make:controller UserController --resource


После выполнения команды в директории app/Http/Controllers появится файл UserController.php, содержащий методы для работы с ресурсом:


  • index() – отображение списка записей
  • create() – форма создания новой записи
  • store() – сохранение новой записи
  • show() – просмотр одной записи
  • edit() – форма редактирования
  • update() – обновление записи
  • destroy() – удаление записи

Маршрутизация

После создания контроллера необходимо настроить маршруты, которые определяют, как HTTP-запросы будут обрабатываться приложением.


В Laravel маршруты обычно задаются в файле routes/web.php. Например:


Route::prefix('admin')->group(function () {
 Route::resource('users', UserController::class);
});


В этом примере все маршруты для ресурса users будут доступны с префиксом /admin. Laravel автоматически создаст полный набор CRUD-маршрутов, например:


  • /admin/users
  • /admin/users/create
  • /admin/users/{id}
  • /admin/users/{id}/edit

Валидация через Form Request

В Laravel используется механизм Form Request, который позволяет вынести правила валидации из контроллера в отдельный класс.


Создать Form Request можно с помощью Artisan:


php artisan make:request StoreUserRequest


После этого в директории app/Http/Requests будет создан класс StoreUserRequest, где можно задать правила проверки данных. Например:


public function rules()
{
 return [
  'name' => 'required|string|max:255',
  'email' => 'required|email|unique:users'
 ];
}


Это делает контроллеры более компактными и упрощает повторное использование логики валидации.


Service Layer для бизнес-логики

В небольших проектах бизнес-логику иногда размещают прямо в контроллерах. Однако в более сложных системах это приводит к появлению так называемых “fat controllers”, которые сложно поддерживать и тестировать.


Чтобы этого избежать, логику приложения выносят в отдельный слой сервисов (Service Layer).


Пример структуры:


app/

 Services/

  UserService.php


В сервисе могут находиться операции, связанные с пользователями: создание, обновление, валидация или интеграции с другими сервисами. Использование сервисного слоя позволяет:


  • избежать перегруженных контроллеров;
  • изолировать бизнес-логику от HTTP-уровня;
  • упростить написание unit-тестов;
  • переиспользовать код в разных частях системы.

Domain-based структура для больших систем

В крупных проектах стандартная структура Laravel часто расширяется domain-based подходом. В этом случае код организуется не только по типу файлов, но и по бизнес-доменам.


Например:


app/

 Domains/

  Users/

  Controllers

  Models

  Services


Такой подход позволяет группировать все компоненты, связанные с конкретной частью бизнес-логики, в одном месте, что упрощает навигацию по коду и делает архитектуру более понятной для новых разработчиков.


Пример проекта на Laravel

Как архитектура Laravel работает на практике? Рассмотрим упрощённый пример проектов Laravel – админ-панель для управления пользователями. Такой проект может быть частью CRM, внутреннего кабинета или B2B-системы. Он включает базовый CRUD-функционал, валидацию и сервисный слой для бизнес-логики.


Пример структуры проекта:


app/

 Http/

  Controllers/

   UserController.php

  Requests/

   StoreUserRequest.php

   UpdateUserRequest.php

 Models/

  User.php

 Services/

  UserService.php

routes/

 web.php

resources/

 views/

  users/

   index.blade.php

   create.blade.php

   edit.blade.php

database/

 migrations/

  2026_01_01_000000_create_users_table.php


В этой структуре:


  • UserController обрабатывает HTTP-запросы и возвращает ответы;
  • StoreUserRequest и UpdateUserRequest отвечают за валидацию;
  • UserService содержит бизнес-логику создания и обновления пользователей;
  • модель User работает с таблицей users;
  • Blade-шаблоны отображают интерфейс;
  • миграции создают структуру таблиц.

Пример маршрутов:


Route::prefix('admin')->group(function () {
 Route::resource('users', UserController::class);
});


Контроллер не должен содержать всю логику напрямую. Его задача – принять запрос, передать данные в сервис и вернуть результат:


public function store(StoreUserRequest $request, UserService $userService)
{
 $userService->create($request->validated());
 return redirect()->route('users.index')
 ->with('success', 'User created successfully.');
}


Основная логика создания пользователя выносится в сервис:


public function create(array $data): User
{
 return User::create($data);
}


Здесь реализовано правильное разделение ответственности в Laravel-проекте: контроллер управляет потоком запроса, Form Request валидирует данные, модель работает с базой данных, а сервис инкапсулирует бизнес-логику. В реальных проектах к этому могут добавляться роли, авторизация, очереди, события, API-методы и интеграции с внешними системами. Однако даже базовая структура уже показывает, как Laravel позволяет строить чистую и масштабируемую архитектуру.


Лучшие практики разработки на Laravel

При разработке на Laravel важно поддерживать чистую и масштабируемую архитектуру. Соблюдение базовых практик помогает избежать перегруженных контроллеров, упростить тестирование и обеспечить стабильную работу приложения в production. Ниже приведены основные рекомендации.


  • Используйте Service Layer для бизнес-логики. Контроллеры должны только принимать HTTP-запросы и передавать данные в сервисы. Основную бизнес-логику лучше размещать в отдельных сервисных классах. Это позволяет избежать так называемых “fat controllers”, упрощает повторное использование кода и делает систему более модульной.
  • Используйте Form Request для валидации. Laravel позволяет вынести правила проверки данных в отдельные классы запросов. Это делает контроллеры компактнее, снижает дублирование кода и позволяет централизованно управлять логикой валидации.
  • Пишите автоматизированные тесты. Laravel имеет встроенную поддержку тестирования через PHPUnit. Рекомендуемая структура тестов:

tests/

Feature/

Unit/


Feature-тесты проверяют работу HTTP-запросов, маршрутов и контроллеров, а Unit-тесты используются для проверки отдельных классов и бизнес-логики.


  • Используйте кэширование в production. Laravel предоставляет команды для кэширования конфигурации и маршрутов, что значительно повышает производительность приложения:

php artisan config:cache

php artisan route:cache

php artisan view:cache


Кэширование уменьшает количество операций чтения конфигурационных файлов и ускоряет обработку HTTP-запросов.


  • Избегайте прямого использования .env в коде. Переменные окружения должны использоваться только в конфигурационных файлах. В коде следует обращаться к ним через config(), чтобы избежать проблем с кэшированием.
  • Придерживайтесь стандартной структуры Laravel. Даже при росте проекта лучше расширять стандартную архитектуру с помощью сервисов, доменных модулей или пакетов, а не изменять базовую структуру директорий фреймворка.
  • Используйте очереди для ресурсоёмких задач. Такие операции, как отправка email, генерация отчетов или интеграции с API, лучше выполнять через систему очередей, чтобы не блокировать основной HTTP-запрос.

Развертывание Laravel-проекта

После завершения локальной разработки проект Laravel необходимо корректно подготовить к запуску на сервере. Деплой включает не только копирование файлов в production-среду, но и правильную настройку веб-сервера, прав доступа, конфигурации приложения и оптимизацию производительности. Если пропустить эти шаги, даже технически исправный проект может работать нестабильно, медленно или небезопасно. Поэтому важно понимать, как развернуть Laravel-проект правильно.


  1. Настройка веб-сервера

    Laravel устроен так, что единственной публичной точкой входа в приложение является директория public. В ней находится файл index.php, через который обрабатываются все HTTP-запросы.

    Веб-сервер должен быть настроен так, чтобы корневая директория сайта указывала на:

    /public/index.php


    Это важно по двум причинам. Во-первых, такой подход обеспечивает корректную маршрутизацию всех запросов через Laravel. Во-вторых, он повышает безопасность, так как внутренние файлы фреймворка, конфигурации и служебные директории не будут доступны напрямую через браузер. Для Nginx или Apache необходимо указывать public/ в качестве document root. Если сервер настроен на корень всего проекта, это может открыть доступ к служебным файлам и создать серьёзные риски безопасности.
  2. Права доступа

    Для корректной работы Laravel веб-сервер должен иметь права на запись в несколько служебных директорий, прежде всего:

    storage

    bootstrap/cache


    В директории storage Laravel хранит логи, кэш, сессии и пользовательские файлы, а bootstrap/cache используется для кэширования конфигураций и служебных данных. Если у сервера нет прав на запись в эти папки, приложение может выдавать ошибки, не записывать логи или некорректно работать с кэшем. Поэтому перед запуском проекта в production необходимо проверить владельца и права доступа к этим директориям. Конкретный способ зависит от операционной системы, конфигурации сервера и пользователя, от имени которого работает PHP-FPM или Apache.
  3. Оптимизация перед production

    Laravel предоставляет встроенные инструменты для оптимизации приложения перед запуском в production. Базовая команда:

    php artisan optimize


    Эта команда подготавливает приложение к production-среде, кэшируя часть служебных данных и уменьшая накладные расходы при обработке запросов. В результате приложение запускается быстрее и работает стабильнее под нагрузкой. В production также часто дополнительно используют кэширование конфигурации, маршрутов и представлений, особенно если деплой автоматизирован через CI/CD.
  4. Отключение debug

    Одно из обязательных требований перед развертыванием Laravel-проекта – отключить режим отладки. В файле .env необходимо указать:

    APP_DEBUG=false


    Если оставить APP_DEBUG=true, пользователи смогут видеть технические сообщения об ошибках, стек вызовов, пути к файлам и часть внутренней логики системы, что создает серьёзные риски безопасности. В production-режиме ошибки должны логироваться в файлы, а не отображаться на странице.
  5. Автоматизация деплоя

    Перенос проекта Laravel, при условии, что -приложение небольшое, иногда выполняется вручную, однако для командной разработки и регулярных релизов гораздо эффективнее использовать автоматизацию. В экосистеме Laravel популярны следующие подходы:
    • Laravel Forge – для быстрой настройки серверов и автоматизированного деплоя на VPS;
    • Laravel Vapor – для масштабируемой serverless-инфраструктуры на базе AWS;
    • CI/CD через GitHub Actions или GitLab CI.
    Автоматизированный деплой позволяет стандартизировать релизы, снизить количество ручных ошибок и быстрее выводить обновления в production. Для бизнес-проектов это особенно важно, так как стабильность среды и повторяемость процессов напрямую влияют на надежность системы.

Заключение

Laravel позволяет быстро создавать масштабируемые веб-приложения благодаря понятной структуре, CLI-инструментам и мощной экосистеме. В этой статье мы рассмотрели создание Laravel-проекта, структуру фреймворка, примеры кода, лучшие практики разработки и базовый процесс развертывания. Лучший способ понять Laravel – создать собственный проект и поработать с его архитектурой на практике.


Если вам нужна разработка сайта на Laravel, команда Asabix поможет реализовать проект полного цикла – от проектирования архитектуры до запуска в production. Мы создаём масштабируемые веб-системы, интегрируем сторонние сервисы и помогаем бизнесу строить надёжные цифровые платформы.


Обратитесь в Asabix, чтобы обсудить ваш Laravel-проект.

Следующая статья Стоит ли оставаться на 1C-Bitrix в 2026 году: что изменилось для бизнеса
Предыдущая статья Зробіть покупки простішими: як UX впливає на лояльність і продажі
Давайте обсудим ваш проект
Нажимая кнопку "Отправить", вы соглашаетесь с обработкой персональных данных.Подробнее
Блог
#0000

Читайте также другие статьи в нашем блоге

Что такое PWA: подробная инструкция с примерами кода
26 Фев, 2024
PWA, или Progressive Web Apps, — это веб-приложения, объединившие в себе все лучшее из веб-сайтов и мобильных приложений. Подобные нативным по своему функционалу, они работают на любом устройстве, где есть веб-браузеры.
ПРОСМОТРЕТЬ СТАТЬЮ
Как создать и развернуть проект на Laravel: структура, примеры и лучшие практики - Изображение №5
Аутсорс и аутстаф: разница и особенности
20 Июл, 2023
Современные компании сталкиваются с необходимостью быстрой и эффективной разработки программного обеспечения и других IT-проектов.
ПРОСМОТРЕТЬ СТАТЬЮ
Как создать и развернуть проект на Laravel: структура, примеры и лучшие практики - Изображение №6
Сколько стоит создать сайт?
08 Янв, 2025
Исследуем, сколько стоит создание разных типов сайтов от блога до интернет-магазина. Оцениваем влияние сложности дизайна и функционала на окончательную стоимость проекта.
ПРОСМОТРЕТЬ СТАТЬЮ
Кроссбраузерная верстка — что это значит?
25 Июл, 2023
Кроссбраузерная верстка — это методика создания веб-страниц, которая обеспечивает корректное и одинаковое отображение сайта на различных браузерах и их версиях.
ПРОСМОТРЕТЬ СТАТЬЮ
 
Свяжитесь с нами
#0000

Остались вопросы?

Пожалуйста, заполните форму ниже и наши специалисты свяжутся с вами как можно быстрее!
Нажимая кнопку "Отправить", вы соглашаетесь с обработкой персональных данных. Подробнее.
consultant
Тетяна
IT-консультант в Asabix