spiral/roadrunner

RoadRunner:使用Go编写的性能卓越的PHP应用程序服务器和进程管理器,并支持插件

赞助包维护!
roadrunner-server

安装次数: 5,605,109

依赖项: 84

建议者: 1

安全性: 0

星星: 7,836

关注者: 145

分支: 407

开放问题: 55

语言:Go

类型:metapackage

v2024.2.1 2024-09-12 16:07 UTC

This package is auto-updated.

Last update: 2024-09-12 16:24:35 UTC


README

All releases

RoadRunner 是一个开源的(MIT许可)高性能PHP应用程序服务器和进程管理器,用Go编写并支持插件 ❤️。它支持作为服务运行,并可以通过插件根据项目需求扩展其功能。

特性

RoadRunner 提供了一系列插件,包括兼容PSR-7/PSR-17标准的 HTTP(S)/2/3fCGI 服务器。这只是它众多功能之一。它作为传统Nginx+FPM设置的替代品非常有效,提供更好的性能和更高的灵活性。其广泛的插件选项远远超出了 HTTP(S)/2/3fCGI 服务器,提供了广泛的函数功能。

  • 队列驱动器:RabbitMQ、Kafka、SQS、Beanstalk、NATS、内存。
  • KV驱动器:Redis、Memcached、BoltDB、内存。
  • 支持OpenTelemetry协议(gRPChttpjaeger)。
  • 通过 Temporal工作流引擎
  • gRPC 服务器。为了提高速度,可以使用 protobuf 扩展。
  • HTTP(S)/2/3fCGI 服务器具有 自动TLS管理103 Early Hints 支持和中间件,如:静态、头部、gzip、prometheus(指标)、send(x-sendfile)、OTEL、proxy_ip_parser 等。
  • 嵌入式的分布式锁插件,用于管理对共享资源的访问。
  • 度量服务器(您可以轻松暴露自己的)。
  • 通过 Centrifugo 服务器提供的 WebSocket 和广播。
  • 类似于Systemd的服务管理器,具有自动重启、执行时间限制等功能。
  • 生产就绪。
  • 还有更多 😉

加入我们的Discord服务器: 链接

官方网站 | 文档 | 论坛 | 发布计划

安装

获取最新RoadRunner版本的最容易方法是使用预构建的发布二进制文件之一,这些二进制文件适用于OSX、Linux、FreeBSD和Windows。有关使用这些二进制文件的说明可在GitHub 发布页面 上找到。

Docker

要获取roadrunner二进制文件,可以使用我们的Docker镜像: ghcr.io/roadrunner-server/roadrunner:2024.X.X(有关镜像和标签的更多信息,请参阅此处)。

FROM ghcr.io/roadrunner-server/roadrunner:2024.X.X AS roadrunner
FROM php:8.3-cli

COPY --from=roadrunner /usr/bin/rr /usr/local/bin/rr

# USE THE RR

配置位于 .rr.yaml 文件中(完整示例

通过Composer安装

您也可以使用随composer包提供的命令自动安装RoadRunner,运行

composer require spiral/roadrunner-cli
./vendor/bin/rr get-binary

服务器二进制文件将位于您项目的根目录。

注意

要自动下载RoadRunner,需要PHP扩展php-curlphp-zip。运行roadrunner需要安装PHP扩展php-sockets。使用php --modules检查已安装的扩展。

适用于Debian衍生版(Ubuntu、Mint、MX等)的安装选项

wget https://github.com/roadrunner-server/roadrunner/releases/download/v2024.X.X/roadrunner-2024.X.X-linux-amd64.deb
sudo dpkg -i roadrunner-2024.X.X-linux-amd64.deb

通过curl下载最新版本

curl --proto '=https' --tlsv1.2 -sSf  https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh

在MacOS上使用Homebrew

brew install roadrunner

在Windows上使用Chocolatey

choco install roadrunner

配置位于.rr.yaml文件中(完整示例

version: '3'

rpc:
  listen: tcp://127.0.0.1:6001

server:
  command: "php worker.php"

http:
  address: "0.0.0.0:8080"

logs:
  level: error

更多内容请参阅文档

示例Worker

<?php

use Spiral\RoadRunner;
use Nyholm\Psr7;

include "vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$psrFactory = new Psr7\Factory\Psr17Factory();

$worker = new RoadRunner\Http\PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);

while ($req = $worker->waitRequest()) {
    try {
        $rsp = new Psr7\Response();
        $rsp->getBody()->write('Hello world!');

        $worker->respond($rsp);
    } catch (\Throwable $e) {
        $worker->getWorker()->error((string)$e);
    }
}

重要

如果您看到EOF错误,请检查您是否已从此步骤安装了PHP包。如果这没有帮助,请尝试直接执行命令php worker.php并检查输出。

可用的插件:链接

运行

运行应用程序服务器

$ ./rr serve -c .rr.yaml

许可证

MIT许可证(MIT)。有关更多信息,请参阅LICENSE。由Spiral Scout维护。

贡献者

感谢所有已经做出贡献的人!