* update docs to remove old references to frankenphp:static-builder (we have -musl and -gnu) * remove --platform and make gnu default * add --platform back in (let dunglas decide) * fix missed translations
7.8 KiB
Laravel
Docker
FrankenPHPを使用してLaravelのWebアプリケーションを配信するのは簡単で、公式Dockerイメージの/appディレクトリにプロジェクトをマウントするだけです。
Laravelアプリのメインディレクトリからこのコマンドを実行してください:
docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp
お楽しみください!
ローカルインストール
または、ローカルマシンでFrankenPHPを使用してLaravelプロジェクトを実行することもできます:
-
Laravelプロジェクトのルートディレクトリに
Caddyfileという名前のファイルを作成し、以下の設定を追加します:{ frankenphp } # サーバーのドメイン名 localhost { # webroot を public/ ディレクトリに設定 root public/ # 圧縮を有効にする(任意) encode zstd br gzip # public/ ディレクトリ内の PHP ファイルを実行し、アセットを提供 php_server { try_files {path} index.php } } -
LaravelプロジェクトのルートディレクトリからFrankenPHPを起動します:
frankenphp run
Laravel Octane
OctaneはComposerパッケージマネージャーを使用してインストールできます:
composer require laravel/octane
Octaneをインストールした後、octane:install Artisanコマンドを実行すると、Octaneの設定ファイルがアプリケーションにインストールされます:
php artisan octane:install --server=frankenphp
Octaneサーバーはoctane:frankenphp Artisanコマンドで開始できます。
php artisan octane:frankenphp
octane:frankenphpコマンドは以下のオプションが利用可能です:
--host: サーバーがバインドするIPアドレス(デフォルト:127.0.0.1)--port: サーバーが使用するポート(デフォルト:8000)--admin-port: 管理サーバーが使用するポート(デフォルト:2019)--workers: リクエスト処理に使うワーカー数(デフォルト:auto)--max-requests: サーバーを再起動するまでに処理するリクエスト数(デフォルト:500)--caddyfile: FrankenPHPのCaddyfileファイルのパス(デフォルト: Laravel OctaneのスタブCaddyfile)--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用のスタンドアロンバイナリとしてパッケージ化するには、以下の手順に従ってください:
-
アプリのリポジトリに
static-build.Dockerfileという名前のファイルを作成します:FROM --platform=linux/amd64 dunglas/frankenphp:static-builder-gnu # バイナリをmusl-libcシステムで実行する場合は、static-builder-musl を使用してください # アプリをコピー 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.shCaution
一部の
.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
これで、アプリの準備は完了です!
利用可能なオプションや他のOSでバイナリをビルドする方法については、アプリケーション埋め込みドキュメントをご覧ください。
ストレージパスの変更
Laravelはアップロードされたファイルやキャッシュ、ログなどをデフォルトでアプリケーションのstorage/ディレクトリに保存します。
しかし、これは埋め込みアプリケーションには適していません。なぜなら、アプリの新しいバージョンごとに異なる一時ディレクトリに展開されるためです。
この問題を回避するには、LARAVEL_STORAGE_PATH環境変数を設定(例:.envファイル内)するか、 Illuminate\Foundation\Application::useStoragePath()メソッドを呼び出して、一時ディレクトリの外にある任意のディレクトリを使用してください。
スタンドアロンバイナリでOctaneを実行する
Laravel Octaneアプリもスタンドアロンバイナリとしてパッケージ化することが可能です!
そのためには、Octaneを正しくインストールし、前のセクションで説明した手順に従ってください。
次に、Octaneを通じてワーカーモードでFrankenPHPを起動するには、以下を実行してください:
PATH="$PWD:$PATH" frankenphp php-cli artisan octane:frankenphp
Caution
コマンドを動作させるためには、スタンドアロンバイナリのファイル名が必ず
frankenphpでなければなりません。 Octaneはfrankenphpという名前の実行ファイルがパス上に存在することを前提としています。