https://github.com/spiral/roadrunner
🤯 High-performance PHP application server, process manager written in Go and powered with plugins
https://github.com/spiral/roadrunner
application-server golang hacktoberfest http php psr-7 roadrunner rpc supervisor workers
Last synced: 8 days ago
JSON representation
🤯 High-performance PHP application server, process manager written in Go and powered with plugins
- Host: GitHub
- URL: https://github.com/spiral/roadrunner
- Owner: roadrunner-server
- License: mit
- Created: 2017-12-26T16:13:10.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2025-03-26T19:59:27.000Z (17 days ago)
- Last Synced: 2025-04-01T04:22:37.071Z (12 days ago)
- Topics: application-server, golang, hacktoberfest, http, php, psr-7, roadrunner, rpc, supervisor, workers
- Language: Go
- Homepage: https://docs.roadrunner.dev
- Size: 70.9 MB
- Stars: 8,076
- Watchers: 142
- Forks: 414
- Open Issues: 72
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-go - roadrunner - High-performance PHP application server, load-balancer and process manager written in Golang - ★ 1761 (Server Applications)
- zero-alloc-awesome-go - RoadRunner - High-performance PHP application server, load-balancer and process manager. (Server Applications / HTTP Clients)
- favorite-link - 用 Golang 编写的高性能 PHP 应用程序服务器,负载均衡器和进程管理器。
- awesome-go - RoadRunner - High-performance PHP application server, load-balancer and process manager. Stars:`8.1K`. (Server Applications / HTTP Clients)
README
RoadRunner is an open-source (MIT licensed) high-performance PHP application server, process manager written in Go and powered with plugins ❤️.
It supports running as a service with the ability to extend its functionality on a per-project basis with plugins.# Features
**RoadRunner** features a range of plugins, including `HTTP(S)/2/3` and `fCGI` servers that are compatible with PSR-7/PSR-17 standards. This is just one of its many capabilities. It serves as an effective alternative to the traditional Nginx+FPM setup, providing improved performance and more flexibility. Its extensive plugin options go far beyond just `HTTP(S)/2/3` and `fCGI` servers, offering a broad range of functionalities:
- Queue drivers: RabbitMQ, Kafka, SQS, Beanstalk, NATS, In-Memory.
- KV drivers: Redis, Memcached, BoltDB, In-Memory.
- OpenTelemetry protocol support (`gRPC`, `http`, `jaeger`).
- [Workflow engine](https://github.com/temporalio/sdk-php) via [Temporal](https://temporal.io).
- `gRPC` server. For increased speed, the `protobuf` extension can be used.
- `HTTP(S)/2/3` and `fCGI` servers features **automatic TLS management**, **103 Early Hints** support and middleware like: Static, Headers, gzip, prometheus (metrics), send (x-sendfile), OTEL, proxy_ip_parser, etc.
- Embedded distribute lock plugin which manages access to shared resources.
- Metrics server (you might easily expose your own).
- WebSockets and Broadcast via [Centrifugo](https://centrifugal.dev) server.
- Systemd-like services manager with auto-restarts, execution time limiter, etc.
- Production-ready.
- And more 😉# Join our discord server: [Link](https://discord.gg/TFeEmCs)
Official Website |
Documentation |
Forum |
Release schedule |
Ask RoadRunner Guru# Installation
The easiest way to get the latest RoadRunner version is to use one of the pre-built release binaries, which are available for
OSX, Linux, FreeBSD, and Windows. Instructions for using these binaries are on the GitHub [releases page](https://github.com/roadrunner-server/roadrunner/releases).## Docker:
To get the roadrunner binary file you can use our docker image: `ghcr.io/roadrunner-server/roadrunner:2024.X.X` (more information about
image and tags can be found [here](https://github.com/roadrunner-server/roadrunner/pkgs/container/roadrunner)).```dockerfile
FROM ghcr.io/roadrunner-server/roadrunner:2024.X.X AS roadrunner
FROM php:8.3-cliCOPY --from=roadrunner /usr/bin/rr /usr/local/bin/rr
# USE THE RR
```Configuration located in the `.rr.yaml` file ([full sample](https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml)):
## Installation via Composer
You can also install RoadRunner automatically using the command shipped with the composer package, run:```bash
composer require spiral/roadrunner-cli
./vendor/bin/rr get-binary
```Server binary will be available at the root of your project.
> **Note**
>
> PHP's extensions `php-curl` and `php-zip` are required to download RoadRunner automatically.
> PHP's extensions `php-sockets` need to be installed to run roadrunner.
> Check with `php --modules` your installed extensions.## Installation option for the Debian-derivatives (Ubuntu, Mint, MX, etc)
```bash
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
```## Download the latest release via curl:
```bash
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh
```## MacOS using [Homebrew](https://brew.sh/):
```bash
brew install roadrunner
```## Windows using [Chocolatey](https://community.chocolatey.org/):
```bash
choco install roadrunner
```---
Configuration can be located in `.rr.yaml` file ([full sample](https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml)):
```yaml
version: '3'rpc:
listen: tcp://127.0.0.1:6001server:
command: "php worker.php"http:
address: "0.0.0.0:8080"logs:
level: error
```> Read more in [Documentation](https://docs.roadrunner.dev).
Example Worker:
--------```php
waitRequest()) {
try {
$rsp = new Psr7\Response();
$rsp->getBody()->write('Hello world!');$worker->respond($rsp);
} catch (\Throwable $e) {
$worker->getWorker()->error((string)$e);
}
}
```> [!IMPORTANT]
> If you see the `EOF` error, check that you have installed the PHP packages from [this step](https://github.com/roadrunner-server/roadrunner#installation-via-composer).
> If this does not help, try to execute the command `php worker.php` directly and check the output.---
### Available Plugins: [link](https://docs.roadrunner.dev)
Run:
----
To run application server:```
$ ./rr serve -c .rr.yaml
```License:
--------
The MIT License (MIT). Please see [`LICENSE`](./LICENSE) for more information. Maintained
by [Spiral Scout](https://spiralscout.com).## Contributors
Thanks to all the people who already contributed!