将 Frankenphp 与 Laravel Octane 结合使用

在你现有的 laravel 应用中,使用此命令安装 laravel octane

composer require laravel/octane
php artisan octane:install --server=frankenphp

调整环境变量`OCTANE_SERVER=frankenphp`

使用以下命令运行 frankenphp:

php artisan octane:frankenphp

octane:frankenphp 命令可以采用以下选项:

  • --host:服务器应绑定到的 IP 地址(默认值:127.0.0.1)
  • --port:服务器应可用的端口(默认值:8000)
  • --admin-port:管理服务器应可用的端口(默认值:2019)
  • --workers:可用于处理请求的工作人员数量(默认值:自动)
  • --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 记录器记录指定日志级别或以上的消息
  • 为了部署,我们创建一个`Dockerfile`

    我使用 `php 8.2` 和 `postgres` 数据库,所以我需要安装 `pgsql` php

    扩大

    FROM dunglas/frankenphp:latest-php8.2
    
    # Install dependencies untuk Composer dan ekstensi PHP
    RUN apt-get update && apt-get install -y \
        curl \
        unzip \
        libpq-dev \
        libexif-dev \
        libsodium-dev
    
    # Install Composer
    RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    
    RUN install-php-extensions \
        pgsql \
        pdo_pgsql \
        gd \
        intl \
        zip \
        exif \
        sodium \
        pcntl
    
    WORKDIR /app
    
    COPY . ./
    
    # Install dependencies using Composer
    RUN composer install --no-dev --optimize-autoloader
    
    RUN rm -rf ./git
    
    # Run FrankenPHP
    CMD ["php", "artisan", "octane:frankenphp", "--host=0.0.0.0", "--port=80", "--admin-port=2019"]

    让我们使用

    docker build -t app:latest .

    让我们创建一个`docker-compose.yml`文件

    services:
        app:
            image: "app:latest"
            restart: unless-stopped
            volumes:
              - ./.env:/app/.env

    使用运行

    docker compose up -d

    我的用例

    我在我的个人网站上使用 frankenphp,使用 laravel 和 fibrephp 作为前端,

    管理面板位于 https://fajar.labkita.my.id,

    速度真惊人:)

    pagespeed1pagespeed2

    参考

  • https://frankenphp.dev/docs/laravel/
  • https://laravel.com/docs/11.x/octane#frankenphp
  • https://hub.docker.com/r/dunglas/frankenphp
  • https://github.com/laravel/octane/blob/2.x/src/Commands/stubs/Caddyfile
  • 规范网址