Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel’i Vercel Üzerinde Ücretsiz Olarak Dağıtma — Ağır Filament Uygulamaları İçin Bile
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel’i Vercel Üzerinde Ücretsiz Olarak Dağıtma — Ağır Filament Uygulamaları İçin Bile

Yazılım

Laravel’i Vercel Üzerinde Ücretsiz Olarak Dağıtma — Ağır Filament Uygulamaları İçin Bile

teknomers
Son güncelleme: 5 Mart 2026 17:01
teknomers
Paylaş
Paylaş

Vercel’ın 250MB sınırını nasıl aştım: Go serverless proxy, sıkıştırılmış vendor ve birleştirilmiş PHP-FPM ikili dosyası kullanarak.


Problemin Tanımı

Bir Laravel + Filament uygulamasını Vercel’ın ücretsiz Hobby planında dağıtmak istedim. Hızla iki kısıtlamayla karşılaştım:

  1. 250MB boyut limiti — Vercel sunucusuz işlevlerinin sıkıştırılmamış bir şekilde 250MB’lık kesin bir sınırı var. vendor/ dizinim yalnızca Filament, Dompdf ve diğer paketlerle birlikte 200MB’ın üzerindeydi.
  2. HTTP 494 hataları — SESSION_DRIVER=cookie (stateless tek seçenek) kullanmak “Request Header Too Large” hatasına sebep oldu çünkü Filament, oturum çerezine aşırı veri yüklüyor ve Vercel’ın ~8KB başlık limitini aşıyor.

vercel-php harika bir proje, ama büyük uygulamalar için boyut problemini çözemedi.


Çözüm: Bir Go Proxy + Sıkıştırılmış Vendor

vercel-laravel-go adında bir Go serverless işlevi geliştirdim; bu, PHP-FPM’i sarar ve vendor’ı ~200MB’dan ~30MB’a sıkıştırır.

Yüksek seviyede olanlar şöyle işler:

HTTP Request → Vercel → Go Handler → FastCGI → PHP-FPM → Laravel

Go işlevi, PHP yaşam döngüsünü tamamen yönetir:

  1. Statik bir PHP-FPM ikili dosyasını derleme sırasında (çalışma zamanında indirme gerektirmeden) paketler.
  2. vendor.tar.gz‘yı soğuk başlangıçta /tmp/vendor dizinine çıkarır (~30MB sıkıştırılmış, hamdan fazla 200MB).
  3. Sembolik bağlantılar oluşturur böylece Composer’ın otomatik yükleyicisi sınıfları doğru bir şekilde çözer.
  4. Depolama alanını yazılabilir /tmp/storage‘ya yönlendirir (çünkü /var/task Vercel’de salt okunur).
  5. PHP-FPM’i bir Unix soketi üzerinde başlatır ve her isteği FastCGI üzerinden yönlendirir.


Neden Go?

Vercel’ın @vercel/go çalışma zamanı, her şeyi tek bir ikili dosyaya derler. Bu bana:

  • PHP-FPM ve vendor.tar.gz’yi işlev paketi içine yerleştirme fırsatı verir.
  • sync.Once kullanarak bir kez soğuk başlangıç başlatması yapabilme şansı tanır.
  • PHP-FPM’in sıcak çağrılar arasında canlı kalmasını sağlar (konteyner tekrar kullanımı).
  • FastCGI protokolünü ekstra bağımlılıklar olmadan doğrudan yönetebilme imkanı sunar.


Teknik Derinlemesine İnceleme


Vendor Sıkıştırması

pack.sh betiği, composer install --no-dev --optimize-autoloader komutunu çalıştırır, ardından vendor/‘ı testler ve belgeler hariç tutarak bir tar arşivine sıkıştırır:

# Dağıtmadan önce yerel olarak çalıştırın
bash scripts/pack.sh

Bu genelde 200MB+ vendor dizinini ~30MB’a düşürür.


Derleme Zamanı Hazırlığı

Vercel’ın derleme aşamasında, vercel-prepare.sh otomatik olarak çalışır:

  • Laravel kaynak dosyalarını (app/, config/, routes/, vb.) api/laravel/ dizinine kopyalar.
  • Statik PHP-FPM 8.4 ikilisini static-php-cli‘dan indirir.

Bunlar Go işlevi ile paketlenir — çalışma zamanında herhangi bir ağ çağrısı yapılmaz.


Soğuk Başlatma Başlatımı

İlk istek geldiğinde, Go işleyicisi:

  1. PHP-FPM ikilisini /tmp/php-fpm-bin dizinine çıkarır.
  2. vendor.tar.gz‘yı /tmp/vendor dizinine çıkarır.
  3. /tmp/storage/ altında yazılabilir dizinler oluşturur.
  4. Sembolik bağlantılar oluşturur: /tmp/app → /var/task/laravel/app, /tmp/config → /var/task/laravel/config, vb.
  5. PHP giriş noktasını üretir ve PackageManifest::$vendorPath ile storagePath‘ı geçersiz kılar.
  6. PHP-FPM’i başlatır ve soketi bekler.

Aynı konteynırdaki sonrasındaki talepler tüm bunları atlar — PHP-FPM çalışmaya devam eder.


Neden Sembolik Bağlantılar?

Bu en karmaşık kısımdır. Composer’ın otomatik yükleyicisi $baseDir‘yi vendor/composer/ dizininden iki üst dizin olarak hesaplar. Vendor /tmp/vendor/‘da olduğunda, uygulama sınıflarını /tmp/app/, /tmp/config/, vb. dizinlerinde arar. Ancak kaynak dosyalarımız /var/task/laravel/‘dadır. Sembolik bağlantılar bu boşluğu kapatır.


Redis ile Oturumlar

Çerez tabanlı oturumlar uygun değil (HTTP 494). Dosya oturumları da uygunsuz (her çağrıda taze bir /tmp ile karşılaşıyoruz). Çözüm: Upstash Redis (ücretsiz katman).

SESSION_DRIVER=redis
REDIS_CLIENT=predis
REDIS_URL=rediss://default:password@host:port


Başlarken

Bir komutla kurulum yapılır. Bunu Laravel projenizin kök dizininde çalıştırın:

curl -fsSL https://raw.githubusercontent.com/kristiansntsdev/vercel-laravel-go/main/install.sh | bash

Sonrasında:

# 1. Vendor'ı sıkıştırın
bash scripts/pack.sh

# 2. Dağıtım yapın
vercel deploy --prod


Ortam Değişkenleri

Bunları Vercel dan oluşumunda ayarlayın:

DeğişkenDeğer
APP_KEYphp artisan key:generate --show
DB_*Veritabanı kimlik bilgilerinizi girin.
REDIS_URLUpstash Redis URL’si.

Diğer her şey (önbellek yolları, oturum yapılandırması, günlük kanalı) vercel.json‘da önceden yapılandırılmıştır.


GitHub Actions ile CI/CD

Yükleyici ayrıca .github/workflows/deploy.yml‘yi kurar. Repo’nuzda üç gizli anahtar ekleyin:

  • VERCEL_TOKEN — vercel.com’da → Ayarlar → Tokenler
  • VERCEL_ORG_ID — Vercel kullanıcı/team ID’niz
  • VERCEL_PROJECT_ID — proje ayarlarınızdan alınır.

main dalına ittiğinizde otomatik olarak dağıtım yapılır.


Performans

MetrikDeğer
Soğuk başlangıç~2–3 saniye
Sıcak istekHızlı (PHP-FPM canlı kalır)
Paket boyutu~50–80MB sıkıştırılmış
PHP versiyonu8.4 (statik ikili)


Soğuk Başlangıçları Azaltma

Konteynerinizi sıcak tutmak için bir dış pingleyici kullanın:


Limitasyonlar

Ticaret noktalarını göz önünde bulundurun:

  • Persistan dosya sistemi yok — yönetilen bir veritabanı kullanın.
  • Kuyruk işçileri yok — Railway, Fly.io veya benzerlerinde çalıştırın.
  • CRON yok — bir dış planlayıcı veya Vercel Pro cron kullanın.
  • 60s maksimum istekte süre Hobby planında.
  • Statik IP yok — sunucusuz dostu bir veritabanı kullanın (Neon, Supabase, PlanetScale).


Sonuç

Ağır bir Laravel uygulamasını Vercel’a dağıtmakta zorlanıyorsanız, vercel-laravel-go‘yu denemeniz faydalı olabilir. Laravel 11 ve 12 ile uyumlu çalışır, Filament uygulamalarını zahmetsizce yönetir ve Vercel’ın ücretsiz katmanında dağıtılır.

Ana fikir: vendor’ı sıkıştırın, PHP-FPM’i birleştirin ve Go’nun altyapıyı yönetmesini sağlayın.


Yardımcı olursa repoyu yıldızlayın: github.com/kristiansntsdev/vercel-laravel-go

Kaynak: Orijinal Makale

Contents
  • Problemin Tanımı
  • Çözüm: Bir Go Proxy + Sıkıştırılmış Vendor
  • Neden Go?
  • Teknik Derinlemesine İnceleme
    • Vendor Sıkıştırması
    • Derleme Zamanı Hazırlığı
    • Soğuk Başlatma Başlatımı
    • Neden Sembolik Bağlantılar?
    • Redis ile Oturumlar
  • Başlarken
    • Ortam Değişkenleri
    • GitHub Actions ile CI/CD
  • Performans
    • Soğuk Başlangıçları Azaltma
  • Limitasyonlar
  • Sonuç
Laravel kuyruğu “Açık dosya sayısı sınırını aştı” hatasıyla karşılaşıyor
Laravel için Doğrulanabilir Bir Denetim Kaydı Oluşturdum
PF ve İkramiye: Maaş Bordrosundaki Karışıklık
Docker’da Laravel Log’larının Gösterilmemesi Sorununun Çözümü (PHP-FPM + Nginx + Supervisor)
Laravel’de Geçici E-posta Adreslerini Nasıl Engelleyebilirsiniz (Sahte Kayıtları Önleme)
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale AI Araçları Anonim Hesapları Açığa Çıkarıyor
Sonraki Makale Meta Avrupa’da WhatsApp’ta Rakip AI Chatbotlarına İzin Veriyor

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Yenilenen Korku Hikayesi: Michael Myers Maskesi ve Bıçağını Buldu
Oyun
Kripto Para Piyasasında Sert Düşüş: Bitcoin ve Ether FTX Krizinden Beri En Kötü Haftayı Geçirdi
Finans
Laravel ile Çok Kiracılı Bir Bordro Motoru Geliştirirken Öğrendiklerimiz
Yazılım
Final Fantasy 7 Dünyasında Keşfedilecek 22 Yeni Ekran Görüntüsü
Oyun
RTX 3050 Ti mühendislik örneği fotoğraflarda ve testlerde göründü
Donanım
Huawei-led ekip, 1.6 trilyon parametreli DeepSeek modelini tanıttı
Donanım
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?