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

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

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

Спонсор
Laravel

Laravel

# Docker

Запустить Laravel веб-приложение с FrankenPHP очень просто: достаточно смонтировать проект в директорию /app официального Docker-образа.

Выполните эту команду из корневой директории вашего Laravel-приложения:

docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp

И наслаждайтесь!

# Локальная установка

Вы также можете запустить ваши Laravel-проекты с FrankenPHP на локальной машине:

  1. Скачайте бинарный файл для вашей системы

  2. Добавьте следующую конфигурацию в файл с именем Caddyfile в корневой директории вашего Laravel-проекта:

    {
    	frankenphp
    }
    
    # Доменное имя вашего сервера
    localhost {
    	# Укажите веб-корень как директорию public/
    	root * public/
    	# Включите сжатие (опционально)
    	encode zstd br gzip
    	# Выполняйте PHP-файлы из директории public/ и обслуживайте статические файлы
    	php_server
    }
    
  3. Запустите FrankenPHP из корневой директории вашего Laravel-проекта: frankenphp run

# Laravel Octane

Octane можно установить с помощью менеджера пакетов Composer:

composer require laravel/octane

После установки Octane выполните Artisan-команду octane:install, которая создаст конфигурационный файл Octane в вашем приложении:

php artisan octane:install --server=frankenphp

Сервер Octane можно запустить с помощью Artisan-команды octane:frankenphp:

php artisan octane:frankenphp

Команда octane:frankenphp поддерживает следующие опции:

  • --host: IP-адрес, к которому должен привязаться сервер (по умолчанию: 127.0.0.1)
  • --port: Порт, на котором сервер будет доступен (по умолчанию: 8000)
  • --admin-port: Порт, на котором будет доступен административный сервер (по умолчанию: 2019)
  • --workers: Количество worker-скриптов для обработки запросов (по умолчанию: auto)
  • --max-requests: Количество запросов, обрабатываемых перед перезагрузкой сервера (по умолчанию: 500)
  • --caddyfile: Путь к файлу Caddyfile FrankenPHP (по умолчанию: stubbed Caddyfile в Laravel Octane)
  • --https: Включить HTTPS, HTTP/2 и HTTP/3, а также автоматически генерировать и обновлять сертификаты
  • --http-redirect: Включить редирект с HTTP на HTTPS (включается только при передаче –https)
  • --watch: Автоматически перезагружать сервер при изменении приложения
  • --poll: Использовать опрос файловой системы для отслеживания изменений в файлах через сеть
  • --log-level: Установить уровень логирования, используя встроенный логгер Caddy

Tip

Чтобы получить структурированные JSON-логи (полезно при использовании решений для анализа логов), явно укажите опцию –log-level.

Подробнее о Laravel Octane читайте в официальной документации.

# Laravel-приложения как автономные бинарные файлы

Используя возможность встраивания приложений в FrankenPHP, можно распространять Laravel-приложения как автономные бинарные файлы.

Следуйте этим шагам, чтобы упаковать ваше Laravel-приложение в автономный бинарный файл для Linux:

  1. Создайте файл с именем static-build.Dockerfile в репозитории вашего приложения:

    FROM --platform=linux/amd64 dunglas/frankenphp:static-builder
    
    # Скопируйте ваше приложение
    WORKDIR /go/src/app/dist/app
    COPY . .
    
    # Удалите тесты и другие ненужные файлы, чтобы сэкономить место
    # В качестве альтернативы добавьте эти файлы в .dockerignore
    RUN rm -Rf tests/
    
    # Скопируйте файл .env
    RUN cp .env.example .env
    # Измените APP_ENV и APP_DEBUG для продакшна
    RUN sed -i'' -e 's/^APP_ENV=.*/APP_ENV=production/' -e 's/^APP_DEBUG=.*/APP_DEBUG=false/' .env
    
    # Внесите другие изменения в файл .env, если необходимо
    
    # Установите зависимости
    RUN composer install --ignore-platform-reqs --no-dev -a
    
    # Соберите статический бинарный файл
    WORKDIR /go/src/app/
    RUN EMBED=dist/app/ ./build-static.sh
    

    Caution

    Некоторые .dockerignore файлы могут игнорировать директорию vendor/ и файлы .env. Убедитесь, что вы скорректировали или удалили .dockerignore перед сборкой.

  2. Соберите:

    docker build -t static-laravel-app -f static-build.Dockerfile .
    
  3. Извлеките бинарный файл:

    docker cp $(docker create --name static-laravel-app-tmp static-laravel-app):/go/src/app/dist/frankenphp-linux-x86_64 frankenphp ; docker rm static-laravel-app-tmp
    
  4. Заполните кеши:

    frankenphp php-cli artisan optimize
    
  5. Запустите миграции базы данных (если есть):

    frankenphp php-cli artisan migrate
    
  6. Сгенерируйте секретный ключ приложения:

    frankenphp php-cli artisan key:generate
    
  7. Запустите сервер:

    frankenphp php-server
    

Ваше приложение готово!

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

# Изменение пути хранения

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

Установите переменную окружения LARAVEL_STORAGE_PATH (например, в вашем .env файле) или вызовите метод Illuminate\Foundation\Application::useStoragePath(), чтобы использовать директорию за пределами временной директории.

# Запуск Octane как автономный бинарный файл

Можно даже упаковать приложения Laravel Octane как автономный бинарный файл!

Для этого установите Octane правильно и следуйте шагам, описанным в предыдущем разделе.

Затем, чтобы запустить FrankenPHP в worker-режиме через Octane, выполните:

PATH="$PWD:$PATH" frankenphp php-cli artisan octane:frankenphp

Caution

Для работы команды автономный бинарник обязательно должен быть назван frankenphp, так как Octane требует наличия программы с именем frankenphp в PATH.

Редактировать эту страницу