affordablemobiles/g-serverless-support-laravel

为 Laravel 应用提供 Google 无服务器运行时支持

v11.0.15 2024-09-25 13:32 UTC

This package is auto-updated.

Last update: 2024-09-26 14:19:46 UTC


README

最新稳定版本   PHP 版本要求   月下载量   总下载量   许可协议

Google App Engine    Google Cloud Run    Google Operations Suite

Laravel 11.x 提供的 Google 无服务器运行时支持包。

支持 Cloud Run & App Engine (标准环境) 并使用 php83 运行时。

基于由 @shpasser 创建的 App Engine 原始工作(使用 php55 运行时)。

功能

安装

1. 通过 Composer 拉取包

    "require": {
        "affordablemobiles/g-serverless-support-laravel": "~11"
    }

2. 将以下内容添加到 composer.json

    "scripts": {
        "post-autoload-dump": [
            "php artisan g-serverless:prepare"
        ]
    },

这是在Composer运行完成后自动运行Artisan命令,为部署准备我们的应用:这将创建任何必要的缓存文件,如果启用,则预编译所有blade视图。

如果您使用云构建进行部署,那么composer install很可能在打包/部署到所选无服务器产品之前运行,因此这将确保所有其他必要步骤作为该步骤的一部分运行。

3.bootstrap/app.php顶部的use语句从

use Illuminate\Foundation\Application;

更改为

use AffordableMobiles\GServerlessSupportLaravel\Foundation\Application;

这将启用自动异常报告到云日志和错误报告,并调整紧急日志记录器,以便在容器化环境中通过写入stderr来正确工作。

重要:需要在您的项目中启用日志API和跟踪API,并且您的无服务器应用使用的服务帐户需要具有使用它们的IAM权限

  • 启用日志API - 如果需要,请将?project=<project-name>附加到URL。
  • 将IAM权限“日志编写者”分配给您的服务帐户。
  • 启用跟踪API - 如果需要,请将?project=<project-name>附加到URL。
  • 将IAM权限“云跟踪代理”分配给您的服务帐户。

4. 通过添加以下内容配置config/app.php中的服务提供者

    /*
    |--------------------------------------------------------------------------
    | Autoloaded Service Providers
    |--------------------------------------------------------------------------
    |
    | The service providers listed here will be automatically loaded on any
    | requests to your application. You may add your own services to the
    | arrays below to provide additional features to this application.
    |
    */

    'providers' => \Illuminate\Support\ServiceProvider::defaultProviders()->merge([
        // Package Service Providers...
        \AffordableMobiles\GServerlessSupportLaravel\GServerlessSupportServiceProvider::class,
        \AffordableMobiles\GServerlessSupportLaravel\Auth\AuthServiceProvider::class,
        \AffordableMobiles\GServerlessSupportLaravel\Database\DatabaseServiceProvider::class,
    ])->replace([
        \Illuminate\View\ViewServiceProvider::class => \AffordableMobiles\GServerlessSupportLaravel\View\ViewServiceProvider::class,
    ])->toArray(),

5. 添加以下环境变量

这可以在.env中完成,在app.yaml内部,或者作为Cloud Run服务配置的一部分 - 我们建议尽可能使用后两个选项。

LOG_CHANNEL=stderr
LOG_STDERR_FORMATTER=AffordableMobiles\GServerlessSupportLaravel\Log\Formatter\JsonFormatter

CACHE_STORE=array

SESSION_DRIVER=datastore

当使用Cloud Tasks时,您还需要配置

CLOUD_TASKS_REGION=europe-west1 (or similar, required)
TASK_QUEUE_SERVICE_ACCOUNT=<project-name>@appspot.gserviceaccount.com (default, required for Cloud Run)
OIDC_AUDIENCE=<OAuth2 Client ID used by IAP, if enabled for inbound calls to your app> (required for Cloud Run)

如果您使用外部CDN(如Cloudflare),还需要配置以下环境变量,其名称用于传递客户端IP地址的HTTP头

SOURCE_IP_HEADER=CF-Connecting-IP

如果您需要禁用OpenTelemetry跟踪(我们强烈建议您启用它),请定义以下环境变量

G_SERVERLESS_TRACE_STOP=true

此外,如果在开发环境中运行,请设置以下

G_SERVERLESS_DEVELOPMENT=true

这会执行多项操作,例如

  • 将本地存储位置更改为包含HTTP_HOST
  • 为每个请求开启OpenTelemetry跟踪。
  • 关闭实例的粘性数据库连接。

升级(从Laravel 9.x LTS)

1. 更新composer.json中的包版本

    "require": {
        "affordablemobiles/g-serverless-support-laravel": "~11"
    }

2. 遵循Laravel升级步骤的所有9.x ... 11.x版本

3. 更新代码中对我们的命名空间的所有引用

A1comms\GaeSupportLaravel

已更改为

AffordableMobiles\GServerlessSupportLaravel

4. 确保bootstrap/app.php扩展我们的Application

请参阅主安装指南中的步骤3作为示例。

5.config/app.php中更改到新的提供者配置格式

请参阅主安装指南中的步骤4作为示例。

6. 更新显式/静默异常报告

任何直接引用错误报告集成类的地方

AffordableMobiles\GServerlessSupportLaravel\Integration\ErrorReporting::exceptionHandler($e);

应更新为使用Laravel的新方法报告

report($e);

7.config/logging.php还原为Laravel默认设置。

8. 更新环境变量

请参阅主安装指南中的步骤5并相应地更新您的环境变量。

9. 如果您使用php-gds进行Datastore,考虑切换到eloquent-datastore

否则,您需要自己通过composer安装它,因为它不再由此存储库需要。

10. 如果使用与lcobucci/jwt兼容的DWDTokenSource,它现在已被移除。

迁移到兼容 google/authGCEDWDCredentials

11. 更新您的 app.yaml 文件,指定 runtime: php83