Laravel Octane:直接使用 .rr.yaml 运行 RoadRunner

您可能已经尝试过 Laravel Octane 和 RoadRunner,这是一款用 Go 编写的简洁的小型 PHP 服务器。在 Octane 和 RoadRunner 的基本安装中,您会注意到一个 .rr.yaml 文件被写入项目文件夹,但实际上是空的。同样,如果您尝试使用 ./rr 运行 RoadRunner 二进制文件,那么它将因缺少配置值而失败,相反,您应该通过 php artisan octane:start 命令运行 Octane。

这是有效的,因为 octane:start 命令在托管进程中运行 RoadRunner 二进制文件本身,同时通过带有一些环境变量的命令行参数配置服务器。

如果我们想在没有 start 命令的情况下运行 RoadRunner 二进制文件,我们必须使用相同的命令参数运行它,或者自己填写 .rr.yaml 配置。这些值需要如下:

http:
  address: 127.0.0.1:8000
  pool:
    num_workers: 0
    max_jobs: 500
    supervisor:
      exec_ttl: 30s
  static:
    dir: public
  middleware: ["static"]

server:
  command: "php ./vendor/bin/roadrunner-worker"

  env:
    - APP_ENV: production
    - APP_BASE_PATH: "/path/to/your/laravel/protect"
    - LARAVEL_OCTANE: "1"

rpc:
  listen: tcp://127.0.0.1:6001

logs:
  mode: production
  level: debug
  output: stdout
  encoding: json

虽然配置中有两个部分您可能希望更改。即服务器命令的 envs。要运行该过程,您必须通过此文件对APP_BASE_PATH和APP_ENV进行硬编码,这可能会很痛苦。

另一件需要注意的事情是,默认情况下,Laravel Octane 在项目的 .gitignore 文件中安装了带有 .rr.yaml 配置文件的 RoadRunner,因此您必须在每台机器上进行设置,除非您决定更改它,尽管目前我认为最好添加您使用的每台设备的配置,因为基本路径可能会在每台机器上更改。

修改后的 .rr.yaml 文件到位后,您现在可以运行 ./rr serve 命令并运行服务器,而无需使用 artisan。

为什么要直接运行 RoadRunner?

这可能会成为一个问题,为什么直接使用 road runner 二进制文件可能更好,答案是,对于大多数人来说,事实并非如此。就我自己而言,我打算在未来构建更多的 roadrunner,包括在 docker 容器中运行服务器。因此,我实际上需要 RoadRunner 将其日志记录信息直接输出到 stdout 中,而不是使用 octane:start 命令将此日志记录信息混淆为自己的格式,从而使查看请求状态变得非常简单。

希望这对一些希望更深入地了解 RoadRunner 以及如何在基本设置之外对其进行自定义的人有用。如果您想了解有关 RoadRunner 配置中可用选项的更多信息,可以在文档中阅读相关内容。


laravel: roadrunner: Undefined constant "Laravel\Octane\Commands\Concerns\SIGINT"

在安装laravel octane扩展后,运行roadrunner时,出现Undefined constant "Laravel\Octane\Commands\Concerns\SIGINT"错误。

这是因为代码中没有检查是否安装了pcntl扩展导致的,也就是说roadrunner需要pcntl库。

因此,安装ext-pcntl扩展后运行即可。

  • 当前日期:
  • 北京时间:
  • 时间戳:
  • 今年的第:17周
  • 我的 IP:3.133.144.147
农历
五行
冲煞
彭祖
方位
吉神
凶神
极简任务管理 help
+ 0 0 0
Task Idea Collect