RoadRunner 是一个开源(MIT 许可)的高性能 PHP 应用服务器、用 Go 编写的进程管理器,并配有插件。它支持作为服务运行,并且能够使用插件在每个项目的基础上扩展其功能。
RoadRunner具有一系列插件,包括与 PSR-7/PSR-17 标准兼容的HTTP(S)/2/3
和fCGI
服务器。这只是其众多功能之一。它是传统 Nginx+FPM 设置的有效替代方案,提供改进的性能和更大的灵活性。其广泛的插件选项远远超出了HTTP(S)/2/3
和fCGI
服务器,提供了广泛的功能:
gRPC
、 http
、 jaeger
)。gRPC
服务器。为了提高速度,可以使用protobuf
扩展。HTTP(S)/2/3
和fCGI
服务器具有自动 TLS 管理、 103 Early Hints支持和中间件,例如:静态、标头、gzip、prometheus(指标)、发送(x-sendfile)、OTEL、proxy_ip_parser 等。官方网站|文档|论坛|发布时间表|询问 RoadRunner 大师
获取最新 RoadRunner 版本的最简单方法是使用预构建的发行二进制文件之一,该二进制文件适用于 OSX、Linux、FreeBSD 和 Windows。使用这些二进制文件的说明位于 GitHub 发布页面。
要获取 Roadrunner 二进制文件,您可以使用我们的 docker 映像: ghcr.io/roadrunner-server/roadrunner:2024.XX
(有关映像和标签的更多信息可以在此处找到)。
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 包附带的命令自动安装 RoadRunner,运行:
composer require spiral/roadrunner-cli
./vendor/bin/rr get-binary
服务器二进制文件将在项目的根目录中提供。
笔记
自动下载 RoadRunner 需要 PHP 扩展
php-curl
和php-zip
。需要安装 PHP 扩展php-sockets
才能运行 Roadrunner。使用php --modules
检查您安装的扩展。
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 --proto ' =https ' --tlsv1.2 -sSf https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh
brew install roadrunner
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
请阅读文档了解更多内容。
<?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)。请参阅LICENSE
了解更多信息。由螺旋侦察兵维护。
感谢所有已经做出贡献的人!