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
以了解更多資訊。由螺旋偵察兵維護。
感謝所有已經做出貢獻的人!