Laravel Octane ile RoadRunner Kullanımı: Yüksek Performanslı PHP Çalıştırma Rehberi

"Laravel Octane ile RoadRunner Kullanımı: Yüksek Performanslı PHP Çalıştırma Rehberi"

Geliştiriciler için performans, her zaman büyük bir öncelik olmuştur. Laravel gibi güçlü framework'ler, geleneksel PHP sunucularına kıyasla daha gelişmiş özellikler sunsa da, yoğun işlem gerektiren uygulamalarda daha fazla optimizasyon gerekebilir. İşte tam da bu noktada Laravel Octane ve RoadRunner devreye giriyor.

Octane ve RoadRunner Nedir?

Laravel Octane

Laravel Octane, Laravel uygulamalarını performans açısından optimize eden bir paket olup, uzun ömürlü worker tabanlı sistemler ile çalışır. Geleneksel PHP modelinde her istekte yeni bir süreç başlatılırken, Octane aynı çalışan süreçler üzerinden işlemleri yürütür, böylece performans ciddi şekilde artar.

RoadRunner

RoadRunner ise PHP için yüksek performanslı bir uygulama sunucusu olup, Swoole veya ReactPHP gibi çözümlerden farklı olarak Go tabanlı bir yapıya sahiptir. Yani, çok hızlı çalışır ve yüksek ölçeklenebilirlik sağlar.

Neden RoadRunner Kullanmalıyız?

RoadRunner şu avantajları sunar:
Performans: Geleneksel PHP sunucularına kıyasla çok daha hızlıdır.
Düşük Hafıza Kullanımı: Uzun süre çalışan iş parçacıkları kullanarak bellek yönetimini iyileştirir.
Kolay Entegrasyon: Laravel Octane ile birlikte sorunsuz çalışır.
İşlemci Verimliliği: Go dili ile çalıştığı için PHP’nin doğal sınırlarını aşar.


Kurulum ve Yapılandırma

Adım 1: Laravel Octane ve RoadRunner Yükleme

İlk olarak, Laravel Octane ve RoadRunner'ın komut satırı aracını yükleyelim:

composer require spiral/roadrunner-cli --dev

Adım 2: RoadRunner Binary İndirme

RoadRunner, sisteminize uygun olan rr.exe dosyasını otomatik olarak indirir:

./vendor/bin/rr get

Bu adım, RoadRunner'ın çalışması için gerekli olan binary dosyayı yükler.

Adım 3: Laravel Octane’yi RoadRunner ile Başlatma

Şimdi Octane’yi RoadRunner kullanarak çalıştırabiliriz:

php artisan octane:start --server=roadrunner

Bu komut, Laravel’i RoadRunner ile başlatır ve yüksek performanslı bir işlem sunucusu oluşturur.


RoadRunner ile Octane Konfigürasyonu

RoadRunner ve Octane’nin sorunsuz çalışması için bazı yapılandırmaları gözden geçirmek gerekebilir. config/octane.php dosyanızı açın ve server değerini şu şekilde RoadRunner olarak ayarlayın:

'server' => env('OCTANE_SERVER', 'roadrunner'),

Eğer cache kullanıyorsanız ancak geliştirme sürecinde bazı çakışmalar yaşanıyorsa, şu satırı düzenleyerek cache motorunu değiştirebilirsiniz:

'cache' => [
    'store' => env('OCTANE_CACHE_STORE', 'array'), // Geliştirme için 'array' önerilir.
],

Geliştirme Sürecinde Dikkat Edilmesi Gerekenler

1️⃣ Cache Çakışmalarını Önleme

Laravel Octane worker tabanlı çalıştığı için, her worker kendi belleğini yönetir. Bu yüzden, değişiklikler bazen anında yansımayabilir. Bunu önlemek için şu komutları çalıştırın:

php artisan octane:restart
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

2️⃣ Nginx ile Kullanma

Eğer Octane’yi Nginx ile çalıştırmak istiyorsanız, Nginx’i bir ters proxy olarak kullanabilirsiniz. Bunun için /etc/nginx/sites-available/default dosyanızı şu şekilde güncelleyin:

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    listen [::]:80;
    server_name domain.com;
    server_tokens off;
    root /home/forge/domain.com/public;

    index index.php;

    charset utf-8;

    location /index.php {
        try_files /not_exists @octane;
    }

    location / {
        try_files $uri $uri/ @octane;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/domain.com-error.log error;

    error_page 404 /index.php;

    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;
    }
}

Son olarak Nginx’i yeniden başlatın:

sudo systemctl restart nginx

Sonuç

Laravel Octane ve RoadRunner PHP uygulamalarını yüksek performanslı çalıştırmanın en etkili yollarından biridir. Eğer mikro servisler, yüksek ölçekli uygulamalar veya hızlı API’ler geliştiriyorsan, bu yapılandırma ile çok daha hızlı ve verimli bir sunucu ortamı kurabilirsin.

Daha fazla detay için şu kaynaklara göz atabilirsin:

 

Aykhan Gasimzade Aykhan Gasimzade verified icon
Full Stack Developer

Merhaba! Ben Aykhan, 1999 doğumlu bir Azerbaycanlıyım ve 2017 yılından bu yana programlamayla ilgileniyorum. Teknolojinin büyülü dünyası beni her zaman etkilemiştir ve bu merakımı kendi blogumda paylaşarak daha geniş bir kitleyle buluşturmayı amaçlıyorum.