Belajar RoadRunner - Instalasi & Konfigurasi .rr.yaml
Episode 3 of 26

Belajar RoadRunner - Instalasi & Konfigurasi .rr.yaml

Memandu instalasi RoadRunner secara lengkap lewat rr get, Docker, dan GitHub binary, lalu membedah struktur .rr.yaml mulai dari blok server, http, rpc, hingga pola enable dan disable plugin, ditutup dengan verifikasi config sebelum menjalankan rr serve.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 2 kita memahami arsitektur — server Go mengelola worker pool PHP via Goridge — pada episode kali ini kita masuk ke tangan: instalasi lengkap dan penulisan .rr.yaml pertama yang benar. Ini adalah gerbang menuju semua episode praktik berikutnya; config yang salah sejak awal akan membuat episode 4-25 tersendat.

Mengapa episode ini penting? Karena RoadRunner adalah binary yang diatur hampir seluruhnya oleh file config YAML. Tidak seperti Nginx atau PHP-FPM dengan banyak file, RoadRunner memusatkan semuanya di .rr.yaml — memahami struktur, urutan, dan cara verifikasinya adalah skill yang akan kalian pakai setiap hari.

Metode Instalasi

Via rr get (Direkomendasikan untuk Development)

Metode ini memakai package Composer spiral/roadrunner-cli yang mengunduh binary sesuai platform:

Install via composer + rr get
composer require spiral/roadrunner-cli --dev
./vendor/bin/rr get

Untuk memilih versi spesifik, lewatkan versi sebagai argumen:

Pin versi tertentu
./vendor/bin/rr get -l v2025.1.15

rr get mengunduh binary ke direktori proyek (bukan global), jadi setiap proyek punya versi binary-nya sendiri — cocok untuk reproducibility.

Via Docker (Direkomendasikan untuk Production)

Image resmi disediakan di GitHub Container Registry:

Pull image resmi RoadRunner
docker pull ghcr.io/roadrunner-server/roadrunner:2025.1.15
docker run --rm ghcr.io/roadrunner-server/roadrunner:2025.1.15 --version

Image ini cocok sebagai basis image multi-stage — kita bahas tuntas di episode 21.

Via Binary GitHub Releases

Untuk instalasi sistem-global atau CI, unduh archive langsung dari halaman releases repository roadrunner-server/roadrunner:

Unduh binary langsung
curl -L -o rr.tar.gz \
  https://github.com/roadrunner-server/roadrunner/releases/download/v2025.1.15/roadrunner-2025.1.15-linux-amd64.tar.gz
tar xzf rr.tar.gz
sudo mv roadrunner-2025.1.15-linux-amd64/rr /usr/local/bin/rr

Warning

Jangan pernah mengunduh binary RoadRunner dari sumber tidak resmi, dan selalu verifikasi versi lewat ./rr --version. Karena RoadRunner mengeksekusi PHP dan membuka port jaringan, binary yang dicuri/ter-modifikasi adalah risiko keamanan serius — tema yang kita dalami di episode 18.

Struktur .rr.yaml

File config RoadRunner adalah YAML dengan blok-blok plugin. Urutan blok tidak penting, tetapi konsistensi dan indentasi YAML sangat penting. Template minimal yang siap dipakai:

.rr.yaml - template dasar
version: "3"
 
server:
  command: "php app.php"
  relay: pipes
  env:
    - APP_ENV: local
    - APP_DEBUG: "false"
 
http:
  address: 0.0.0.0:8080
  middleware: ["gzip"]
  pool:
    num_workers: 4
    max_jobs: 500
    max_worker_memory: 128
 
rpc:
  listen: tcp://127.0.0.1:6001
 
logs:
  mode: production
  level: info

Mari bedah setiap blok:

BlokFungsi
versionVersi format config (saat ini "3") — penting untuk kompatibilitas
serverPerintah spawn worker, jalur relay, dan environment variable worker
httpPlugin HTTP: alamat listen, middleware, dan konfigurasi pool
rpcPort RPC untuk komunikasi aplikasi PHP ke plugin
logsKonfigurasi logging RoadRunner (kita bahas di episode 9)

Environment Variable Worker

Perhatikan blok env di server — ini cara melewatkan environment ke worker PHP. Karena worker adalah proses terpisah, env dari shell tidak otomatis ikut. Nilai boolean dan numerik sebaiknya ditulis sebagai string di YAML agar tidak berubah tipe saat dibaca PHP.

Enable dan Disable Plugin

RoadRunner hanya memuat plugin yang blok config-nya ada di .rr.yaml. Ini adalah mekanisme enable/disable utama:

  • Plugin aktif bila bloknya hadir (misal http:, grpc:, kv:).
  • Plugin tidak dimuat bila bloknya tidak ada — save resource.

Kecuali plugin HTTP, RPC, dan server yang selalu dimuat binary. Contoh: untuk mematikan plugin HTTP, hapus blok http. Untuk menambah gRPC nanti, cukup tambahkan blok grpc (episode 16). Tidak ada daftar "load" terpisah — config YAML adalah sumber kebenaran.

Tip

Jalankan ./rr list untuk melihat plugin yang aktif pada binary kalian. Perhatikan bahwa binary resmi sudah berisi semua plugin umum; kalian hanya perlu "menghidupkannya" lewat blok config. Binary custom dengan plugin tambahan dibahas di episode 23 (Velox).

Verifikasi Config Sebelum Menjalankan

Sebelum rr serve, biasakan memvalidasi config dan mengecek versi plugin:

Validasi config RoadRunner
./rr config:verify -c .rr.yaml
./rr list
./rr serve -c .rr.yaml

./rr config:verify mem-parsing config dan melaporkan error struktur/tipe sebelum server benar-benar jalan. ./rr serve -c .rr.yaml menjalankan server; karena blok http ada, RoadRunner mulai mendengarkan di 0.0.0.0:8080 dan spawn worker php app.php — yang belum kita buat (itu tugas episode 4). Server akan menampilkan error bila file app.php tidak ada; itu normal pada tahap ini.

Untuk menghentikan server dengan bersih, tekan Ctrl+C (SIGINT). Untuk graceful restart worker tanpa downtime, kirim SIGUSR2 — fitur yang tersedia sejak v2025.1.8:

Graceful restart worker via SIGUSR2
kill -USR2 $(pgrep -f "rr serve")

Error Config Umum

Beberapa kesalahan yang sering terjadi dan cara membacanya:

GejalaPenyebabSolusi
config: invalid ...Indentasi YAML salah atau key salah namaJalankan rr config:verify, cek spasi vs tab
Plugin tidak aktif padahal dikonfigurasiSalah blok parent / salah eja keyBandingkan dengan dokumentasi plugin resmi
Worker error unable to find ... app.phpserver.command menunjuk file yang tidak adaBuat file worker atau perbaiki path
Port sudah terpakaihttp.address bentrokGanti port atau hentikan proses lain

Penutup

Pada episode 3 ini, kalian telah menguasai instalasi dan fondasi config.

Inti yang harus dibawa pulang:

  • Instalasi: rr get untuk dev, image Docker untuk production, archive GitHub untuk global.
  • .rr.yaml berisi blok server, http, rpc, logs, dan blok plugin lainnya.
  • Plugin aktif hanya jika bloknya ada di config — itulah mekanisme enable/disable.
  • Verifikasi selalu dengan ./rr config:verify sebelum rr serve.
  • Graceful restart worker memakai SIGUSR2 (sejak v2025.1.8).

Di episode 4 selanjutnya, kita membuat worker dan PSR-7 handling — menulis app.php dengan spiral/roadrunner-worker, memahami kelas Worker dan PSR7Worker, serta membangun aplikasi HTTP sederhana yang benar-benar merespons request. Sampai jumpa di episode 4!

Belajar RoadRunner - Instalasi & Konfigurasi .rr.yaml | Belajar RoadRunner