RoadRunner — это высокопроизводительный сервер приложений PHP с открытым исходным кодом (лицензия MIT), менеджер процессов, написанный на Go и оснащенный плагинами. Он поддерживает работу как сервис с возможностью расширения его функциональности для каждого проекта с помощью плагинов.
RoadRunner включает ряд плагинов, включая серверы HTTP(S)/2/3
и fCGI
совместимые со стандартами PSR-7/PSR-17. Это лишь одна из многих его возможностей. Он служит эффективной альтернативой традиционной настройке Nginx+FPM, обеспечивая улучшенную производительность и большую гибкость. Его обширные возможности плагинов выходят далеко за рамки просто серверов HTTP(S)/2/3
и fCGI
, предлагая широкий спектр функций:
gRPC
, http
, jaeger
).gRPC
сервер. Для увеличения скорости можно использовать расширение protobuf
.HTTP(S)/2/3
и fCGI
поддерживают автоматическое управление TLS , поддержку 103 Early Hints и промежуточное программное обеспечение, такое как: Static, Headers, gzip, prometheus (метрики), send (x-sendfile), OTEL, proxy_ip_parser и т. д.Официальный сайт | Документация | Форум | График релизов | Спросите гуру RoadRunner
Самый простой способ получить последнюю версию RoadRunner — использовать один из готовых двоичных файлов, доступных для OSX, Linux, FreeBSD и Windows. Инструкции по использованию этих двоичных файлов находятся на странице выпусков GitHub.
Чтобы получить двоичный файл Roadrunner, вы можете использовать наш образ докера: 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
(полный образец):
Вы также можете установить RoadRunner автоматически, используя команду, поставляемую с пакетом композитора, запустив:
composer require spiral/roadrunner-cli
./vendor/bin/rr get-binary
Бинарный файл сервера будет доступен в корне вашего проекта.
Примечание
Расширения PHP
php-curl
иphp-zip
необходимы для автоматической загрузки RoadRunner. Для запуска Roadrunner необходимо установить расширения PHPphp-sockets
. Проверьте с помощью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 (MIT). Пожалуйста, смотрите LICENSE
для получения дополнительной информации. Поддерживается Spiral Scout.
Спасибо всем людям, которые уже внесли свой вклад!