RoadRunner 是 Octane 支持的三个服务器之一,它的定位是“最稳定、进程隔离最好”的选择
参考资料
RoadRunner 是 Octane 支持的三个服务器之一,它的定位是“最稳定、进程隔离最好”的选择
RoadRunner 是 Octane 支持的三个服务器之一,它的定位是“最稳定、进程隔离最好”的选择。它用 Go 编写,以二进制形式运行,不需要安装任何 PHP 扩展,天然适合容器化部署。
📦 安装与激活
在 Fresns 根目录的终端中执行:
1. 安装 Octane 包
composer require laravel/octane
2. 安装 RoadRunner 服务
php artisan octane:install --server=roadrunner
首次启动时,Octane 会自动下载对应平台的 RoadRunner 二进制文件。如果下载失败,也可以手动安装:
composer require spiral/roadrunner-cli spiral/roadrunner-http ./vendor/bin/rr get-binary
3. 启动服务
php artisan octane:start --server=roadrunner
默认监听 127.0.0.1:8000。
⚙️ 启动参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--host | 绑定的 IP 地址 | 127.0.0.1 |
--port | 服务端口 | 8000 |
--rpc-port | RoadRunner 的 RPC 通信端口 | 6001 |
--workers | Worker 进程数量 | auto |
--max-requests | 重启前处理的最大请求数 | 500 |
🔗 Nginx 反向代理配置
RoadRunner 同样需要 Nginx 作为前置代理,配置与 Swoole 场景一致:
location /index.php {
try_files /not_exists @octane;
}
location / {
try_files $uri $uri/ @octane;
}
location @octane {
set $suffix "";
if ($uri = /index.php) {
set $suffix ?$query_string;
}
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://127.0.0.1:8000$suffix;
}🔄 进程守护(必须)
与 Swoole 一样,RoadRunner 必须加入进程守护。宝塔面板中可参考:
启动用户:
www运行目录:Fresns 主程序根目录
启动命令:
php artisan octane:start --server=roadrunner --host=127.0.0.1 --port=8000
💡 RoadRunner 与 Swoole 的核心差异
| 对比项 | RoadRunner | Swoole |
|---|---|---|
| 依赖 | Go 二进制,无需 PHP 扩展 | 需安装 PECL swoole 扩展 |
| 进程隔离 | 强隔离,一个 worker 崩溃不影响其他 | 进程间共享内存,隔离性较弱 |
| 并发任务 | 不支持 Octane::concurrently() | 支持协程并发和 Task Worker |
| 日志输出 | 默认输出到 stderr,需在 .rr.yaml 配置落盘 | 按 PHP 标准输出处理 |
| 适用场景 | 容器化、混跑 HTTP + Queue、追求稳定 | 需要并发 I/O、深度调优 |
简单选择建议:如果你不想折腾 PHP 扩展、希望部署简单且进程隔离好,选 RoadRunner;如果你需要协程并发或 Swoole 生态的额外能力,选 Swoole。
⚠️ 注意事项
二进制文件位置:RoadRunner 的 rr 二进制文件需要可执行权限,如果提示“binary not found”,检查是否在项目根目录且已执行 chmod +x rr。
日志配置:RoadRunner 默认将日志输出到 stderr,如果希望日志落盘,需要在项目根目录创建 .rr.yaml 文件,配置 logs.output 指向日志文件。
文件上传限制:如果遇到大文件上传失败,检查 RoadRunner 的默认请求体大小限制,必要时在 .rr.yaml 中调整 http.max_request_size。
HTTPS 链接修正:如果站点启用了 HTTPS,在 .env 中添加 OCTANE_HTTPS=true,否则 Octane 生成的链接会以 http:// 开头。
时间:2026-10-01 16:51:23
来源:https://fresns.ciilii.com/
