Эта страница была переведена сообществом и не обязательно является актуальной. Обратитесь к справочной версии.
Эта страница была переведена сообществом и не обязательно является актуальной. Обратитесь к справочной версии.
Эта страница была переведена сообществом и не обязательно является актуальной. Обратитесь к справочной версии.
Запустить Laravel веб-приложение с FrankenPHP очень просто: достаточно смонтировать проект в директорию /app
официального Docker-образа.
Выполните эту команду из корневой директории вашего Laravel-приложения:
docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp
И наслаждайтесь!
Вы также можете запустить ваши Laravel-проекты с FrankenPHP на локальной машине:
Добавьте следующую конфигурацию в файл с именем Caddyfile
в корневой директории вашего Laravel-проекта:
{
frankenphp
}
# Доменное имя вашего сервера
localhost {
# Укажите веб-корень как директорию public/
root * public/
# Включите сжатие (опционально)
encode zstd br gzip
# Выполняйте PHP-файлы из директории public/ и обслуживайте статические файлы
php_server
}
Запустите FrankenPHP из корневой директории вашего Laravel-проекта: frankenphp run
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
: Установить уровень логирования, используя встроенный логгер CaddyTip
Чтобы получить структурированные JSON-логи (полезно при использовании решений для анализа логов), явно укажите опцию
–log-level
.
Подробнее о Laravel Octane читайте в официальной документации.
Используя возможность встраивания приложений в FrankenPHP, можно распространять Laravel-приложения как автономные бинарные файлы.
Следуйте этим шагам, чтобы упаковать ваше Laravel-приложение в автономный бинарный файл для Linux:
Создайте файл с именем 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
перед сборкой.
Соберите:
docker build -t static-laravel-app -f static-build.Dockerfile .
Извлеките бинарный файл:
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
Заполните кеши:
frankenphp php-cli artisan optimize
Запустите миграции базы данных (если есть):
frankenphp php-cli artisan migrate
Сгенерируйте секретный ключ приложения:
frankenphp php-cli artisan key:generate
Запустите сервер:
frankenphp php-server
Ваше приложение готово!
Узнайте больше о доступных опциях и о том, как собирать бинарные файлы для других ОС в документации по встраиванию приложений.
По умолчанию Laravel сохраняет загруженные файлы, кеши, логи и другие данные в директории storage/
приложения. Это неудобно для встроенных приложений, так как каждая новая версия будет извлекаться в другую временную директорию.
Установите переменную окружения LARAVEL_STORAGE_PATH
(например, в вашем .env
файле) или вызовите метод Illuminate\Foundation\Application::useStoragePath()
, чтобы использовать директорию за пределами временной директории.
Можно даже упаковать приложения Laravel Octane как автономный бинарный файл!
Для этого установите Octane правильно и следуйте шагам, описанным в предыдущем разделе.
Затем, чтобы запустить FrankenPHP в worker-режиме через Octane, выполните:
PATH="$PWD:$PATH" frankenphp php-cli artisan octane:frankenphp
Редактировать эту страницуCaution
Для работы команды автономный бинарник обязательно должен быть назван
frankenphp
, так как Octane требует наличия программы с именемfrankenphp
в PATH.