Установка и структура проекта
Что понадобится
- PHP 8.3+
- Composer
- Node.js 20+ (для фронтенда)
- PostgreSQL / MySQL / SQLite
- Git
Установка PHP
Ubuntu / Debian:
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-mbstring \
php8.3-xml php8.3-curl php8.3-zip php8.3-pgsql php8.3-mysql
Проверка:
php -v
Установка Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Проверка:
composer --version
Создание проекта
Через Composer:
composer create-project laravel/laravel my-app
Или через Laravel Installer:
composer global require laravel/installer
laravel new my-app
Что произойдёт:
- Скачается скелет Laravel.
- Установятся зависимости.
- Сгенерируется
.env. - Сгенерируется
APP_KEY.
Запуск
cd my-app
php artisan serve
Открыть http://localhost:8000.
⚠️ artisan serve — только для разработки. Не для прода.
Artisan
Artisan — командная строка Laravel.
Основные команды:
php artisan list # все команды
php artisan --version # версия
php artisan about # инфо о проекте
php artisan serve # dev-сервер
php artisan make:model Post # создать модель
php artisan make:controller X # контроллер
php artisan make:migration create_x_table
php artisan migrate # применить миграции
php artisan db:seed # сиды
php artisan route:list # список роутов
php artisan tinker # REPL
php artisan optimize:clear # очистить кеш
php artisan config:cache # кеш конфига
Сокращения: make:model → make:m, и т.д.
Структура проекта
my-app/
├── app/ # код приложения
│ ├── Console/ # команды CLI
│ ├── Exceptions/ # исключения
│ ├── Http/
│ │ ├── Controllers/ # контроллеры
│ │ ├── Middleware/ # middleware
│ │ └── Requests/ # Form Requests
│ ├── Models/ # модели Eloquent
│ └── Providers/ # сервис-провайдеры
├── bootstrap/ # инициализация
│ ├── app.php # ← главный файл конфигурации
│ ├── cache/ # кеш фреймворка
│ └── providers.php # список провайдеров
├── config/ # конфиги
├── database/
│ ├── factories/ # фабрики моделей
│ ├── migrations/ # миграции
│ └── seeders/ # сиды
├── public/ # ← единственная публичная папка
│ ├── index.php # точка входа
│ └── storage/ # симлинк на storage/app/public
├── resources/
│ ├── css/
│ ├── js/
│ └── views/ # Blade-шаблоны
├── routes/
│ ├── web.php # роуты браузера
│ ├── api.php # роуты API
│ └── console.php # CLI-команды
├── storage/ # логи, кеш, файлы
├── tests/ # тесты
├── vendor/ # зависимости
├── .env # переменные окружения
├── .env.example # шаблон
├── artisan # CLI
├── composer.json # зависимости
├── package.json # npm-зависимости
└── vite.config.js # конфиг Vite
Ключевые файлы
.env
Переменные окружения:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:...
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=my_app
DB_USERNAME=postgres
DB_PASSWORD=secret
CACHE_STORE=database
QUEUE_CONNECTION=database
SESSION_DRIVER=database
⚠️ .env — не в git. В репозиторий — только .env.example.
bootstrap/app.php
Главный файл конфигурации (Laravel 11+):
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
// настройка middleware
})
->withExceptions(function (Exceptions $exceptions) {
// обработка исключений
})
->create();
Раньше (Laravel 10 и ниже) — app/Http/Kernel.php и app/Console/Kernel.php. Сейчас — bootstrap/app.php.
routes/web.php
Роуты браузера:
Route::get('/', function () {
return view('welcome');
});
Middleware web применяется автоматически — сессии, CSRF, cookie.
routes/api.php
Роуты API:
Route::get('/users', [UserController::class, 'index']);
Префикс /api добавляется автоматически. Middleware api — throttle, без сессий.
config/
Конфиги:
app.php— приложение.database.php— БД.cache.php— кеш.queue.php— очереди.session.php— сессии.auth.php— аутентификация.filesystems.php— файлы.logging.php— логи.mail.php— почта.services.php— сторонние сервисы.
Что в .env — попадает в конфиг. В .env меняешь — в конфиге видно.
public/index.php
Единственная точка входа.
<?php
define('LARAVEL_START', microtime(true));
require __DIR__.'/../vendor/autoload.php';
(require_once __DIR__.'/../bootstrap/app.php')
->handleRequest(Request::capture());
Все запросы (и API, и web) — сюда.
Установка фронтенда
npm install
npm run dev
Vite запускает dev-сервер на :5173.
Для прода:
npm run build
Соберёт в public/build/.
Проверка установки
php artisan about
Покажет: версию PHP, Laravel, драйвер БД, кеш, очередь, почту.
Проверка БД:
php artisan db:show
Покажет: таблицы, размер, подключение.
Частые команды
php artisan serve # dev-сервер
php artisan tinker # REPL
php artisan migrate # миграции
php artisan db:seed # сиды
php artisan route:list # роуты
php artisan make:model Post -m # модель + миграция
php artisan optimize:clear # очистить кеш
composer install # зависимости
npm install && npm run dev # фронтенд
Практика
1. Установи проект:
composer create-project laravel/laravel my-app
cd my-app
php artisan serve
2. Открой http://localhost:8000 — увидишь приветствие.
3. Выполни:
php artisan about
php artisan route:list
php artisan tinker
4. В tinker попробуй:
config('app.name');
database_path();
app()->version();
Частые ошибки
1. Не сгенерирован APP_KEY:
php artisan key:generate
2. Нет подключения к БД: проверь .env.
3. php artisan serve на порту 8000 занят:
php artisan serve --port=8001
4. Права на storage/ и bootstrap/cache/:
chmod -R 775 storage bootstrap/cache
chown -R $USER:www-data storage bootstrap/cache
5. Composer падает по памяти:
COMPOSER_MEMORY_LIMIT=-1 composer install
Итог
- Установка:
composer create-project laravel/laravel. - Запуск:
php artisan serve. - Artisan — CLI для всех задач.
- Структура:
app/,config/,database/,public/,routes/. public/index.php— единственная точка входа..env— переменные окружения, не в git.bootstrap/app.php— главный конфиг (Laravel 11+).
Дальше — роуты.