Skip to content

🤯 高性能 PHP 应用服务器、用 Go 编写并配有插件的流程管理器

License

Notifications You must be signed in to change notification settings

yuanxiaoming8899/roadrunner-cn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

所有版本

RoadRunner 是一个开源(MIT 许可)高性能 PHP 应用服务器、用 Go 编写的进程管理器,并由插件提供动力❤️。它支持作为服务运行,并且能够使用插件在每个项目的基础上扩展其功能。

特征

RoadRunner具有一系列插件,包括HTTP(S)/2/3fCGIPSR-7/PSR-17 标准兼容的服务器。这只是其众多功能之一。它是传统 Nginx+FPM 设置的有效替代方案,提供改进的性能和更大的灵活性。其广泛的插件选项远远超出了HTTP(S)/2/3服务器的范围fCGI,提供了广泛的功能:

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

加入我们的不和谐服务器:链接

官方网站| 文档| 论坛| 发布时间表

安装

获取最新 RoadRunner 版本的最简单方法是使用预构建的发行二进制文件之一,该二进制文件适用于 OSX、Linux、FreeBSD 和 Windows。使用这些二进制文件的说明位于 GitHub发布页面

码头工人:

要获取 Roadrunner 二进制文件,您可以使用我们的 docker 映像:(有关映像和标签的更多信息可以在此处ghcr.io/roadrunner-server/roadrunner:2023.X.X找到)。

FROM ghcr.io/roadrunner-server/roadrunner:2023.X.X AS roadrunner
FROM php:8.2-cli

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

# USE THE RR

USE THE RR" tabindex="0" role="button">

  <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>

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

通过 Composer 安装

您还可以使用 Composer 包附带的命令自动安装 RoadRunner,运行:

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

服务器二进制文件将在项目的根目录中提供。

笔记

自动下载 RoadRunner 需要php-curlPHP扩展。需要安装php-zipPHP 扩展才能运行 Roadrunner。php-sockets检查php --modules您安装的扩展。

Debian 衍生品(Ubuntu、Mint、MX 等)的安装选项

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

通过curl下载最新版本:

curl --proto '=https' --tlsv1.2 -sSf  https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh
brew 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

<clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 tooltipped-no-delay d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w" value="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" tabindex="0" role="button">

请阅读文档了解更多内容。

工人示例:

<?php

use Spiral<span class="pl-v">RoadRunner; use Nyholm<span class="pl-v">Psr7;

include "vendor/autoload.php";

$worker = RoadRunner<span class="pl-v">Worker::create(); $psrFactory = new Psr7<span class="pl-v">Factory<span class="pl-v">Psr17Factory();

$worker = new RoadRunner<span class="pl-v">Http<span class="pl-v">PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);

while ($req = $worker->waitRequest()) { try { $rsp = new Psr7<span class="pl-v">Response(); $rsp->getBody()->write('Hello world!');

    <span class="pl-s1"><span class="pl-c1">$</span>worker</span>-&gt;<span class="pl-en">respond</span>(<span class="pl-s1"><span class="pl-c1">$</span>rsp</span>);
} <span class="pl-k">catch</span> (<span class="pl-smi"><span class="pl-smi">\<span class="pl-v">Throwable</span></span></span> <span class="pl-s1"><span class="pl-c1">$</span>e</span>) {
    <span class="pl-s1"><span class="pl-c1">$</span>worker</span>-&gt;<span class="pl-en">getWorker</span>()-&gt;<span class="pl-en">error</span>((<span class="pl-smi">string</span>)<span class="pl-s1"><span class="pl-c1">$</span>e</span>);
}

}

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

}" tabindex="0" role="button">

重要的

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


可用插件:链接

跑步:

运行应用程序服务器:

$ ./rr serve -c .rr.yaml

执照:

麻省理工学院许可证 (MIT)。请参阅LICENSE了解更多信息。由螺旋侦察兵维护。

贡献者

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

About

🤯 高性能 PHP 应用服务器、用 Go 编写并配有插件的流程管理器

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 86.1%
  • Shell 7.2%
  • JavaScript 3.5%
  • Dockerfile 3.0%
  • Makefile 0.2%