Laravel Octane
導入
Laravel Octane は、FrankenPHP、Open Swoole、Swoole、および RoadRunner を含む高性能なアプリケーションサーバーを使用してアプリケーションのパフォーマンスを向上させます。Octane はアプリケーションを一度起動し、メモリに保持した後、超音速の速度でリクエストを処理します。
インストール
Octane は Composer パッケージマネージャーを使用してインストールできます:
composer require laravel/octane
Octane をインストールした後、octane:install
Artisan コマンドを実行すると、Octane の設定ファイルがアプリケーションにインストールされます:
php artisan octane:install
サーバーの前提条件
Laravel Octane は PHP 8.1+ が必要です。
FrankenPHP
FrankenPHP は、Go で書かれた PHP アプリケーションサーバーで、early hints、Brotli、Zstandard 圧縮などのモダンな Web 機能をサポートしています。Octane をインストールし、サーバーとして FrankenPHP を選択すると、Octane は自動的に FrankenPHP バイナリをダウンロードしてインストールします。
Laravel Sail を介した FrankenPHP
Laravel Sail を使用してアプリケーションを開発する場合は、次のコマンドを実行して Octane と FrankenPHP をインストールする必要があります:
./vendor/bin/sail up
./vendor/bin/sail composer require laravel/octane
次に、octane:install
Artisan コマンドを使用して FrankenPHP バイナリをインストールする必要があります:
./vendor/bin/sail artisan octane:install --server=frankenphp
最後に、アプリケーションの docker-compose.yml
ファイル内の laravel.test
サービス定義に SUPERVISOR_PHP_COMMAND
環境変数を追加する必要があります。この環境変数には、Sail が PHP 開発サーバーの代わりに Octane を使用してアプリケーションを提供するために使用するコマンドが含まれます:
services:
laravel.test:
environment:
SUPERVISOR_PHP_COMMAND: "/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=frankenphp --host=0.0.0.0 --admin-port=2019 --port=80" # [tl! add]
XDG_CONFIG_HOME: /var/www/html/config # [tl! add]
XDG_DATA_HOME: /var/www/html/data # [tl! add]
HTTPS 、HTTP/2、および HTTP/3 を有効にするには、代わりにこれらの変更を適用してください:
services:
laravel.test:
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
- '443:443' # [tl! add]
- '443:443/udp' # [tl! add]
environment:
SUPERVISOR_PHP_COMMAND: "/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --host=localhost --port=443 --admin-port=2019 --https" # [tl! add]
XDG_CONFIG_HOME: /var/www/html/config # [tl! add]
XDG_DATA_HOME: /var/www/html/data # [tl! add]
通常、FrankenPHP Sail アプリケーションには https://localhost
を介してアクセスする必要があります。https://127.0.0.1
を使用する場合は追加の設定が必要であり、推奨されていません。
Docker を介した FrankenPHP
FrankenPHP の公式 Docker イメージを使用すると、静的なインストールに含まれていない追加の拡張機能を使用してパフォーマンスが向上し、FrankenPHP をネイティブでサポートしていないプラットフォームで実行するためのサポートが提供されます。公式 Docker イメージは、ローカル開発および本番環境 での FrankenPHP の実行に適しています。
FrankenPHP パワードの Laravel アプリケーションをコンテナ化するための出発点として、以下の Dockerfile を使用できます:
FROM dunglas/frankenphp
RUN install-php-extensions \
pcntl
# Add other PHP extensions here...
COPY . /app
ENTRYPOINT ["php", "artisan", "octane:frankenphp"]
開発中には、次のDocker Composeファイルを使用してアプリケーションを実行できます:
# compose.yaml
services:
frankenphp:
build:
context: .
entrypoint: php artisan octane:frankenphp --max-requests=1
ports:
- "8000:8000"
volumes:
- .:/app
詳細については、公式FrankenPHPドキュメントを参照してください。
RoadRunner
RoadRunnerは、Goを使用して構築されたRoadRunnerバイナリによって動作します。RoadRunnerベースのOctaneサーバを初めて起動すると、OctaneがRoadRunnerバイナリをダウンロードしてインストールするように求められます。
Laravel Sailを介したRoadRunner
Laravel Sailを使用してアプリケーションを開発する場合は、次のコマンドを実行してOctaneとRoadRunnerをインストールする必要があります:
./vendor/bin/sail up
./vendor/bin/sail composer require laravel/octane spiral/roadrunner-cli spiral/roadrunner-http
次に、Sailシェルを起動し、rr
実行可能ファイルを使用してRoadRunnerバイナリの最新のLinuxベースのビルドを取得する必要があります:
./vendor/bin/sail shell
# Within the Sail shell...
./vendor/bin/rr get-binary