PaaS

Laravel Hosting: Uygulamanı Dakikalar İçinde Deploy Et

Laravel'de ilk "Hello World" ekranını görmek kolaydır; ilk production deploy'u yapmak değildir. Composer, artisan, queue, scheduler ve doğru runtime — Laravel gerçekte neye ihtiyaç duyar?

Yazar: Skyversal Ekibi

Laravel Shared Hosting'de Çalışır mı? Production Deploy Rehberi (Laravel 12+)

Laravel hosting, modern PHP uygulamalarını yalnızca dosya barındırmanın ötesinde çalıştırabilecek bir altyapı gerektirir. Composer bağımlılıkları, Artisan komutları, queue worker, scheduler ve doğru PHP runtime yapılandırması bu ekosistemin temel yapı taşlarıdır. Laravel'de ilk "Hello World" ekranını almak saniyeler sürer; ancak projeyi canlı ortama taşırken geleneksel paylaşımlı barındırma çözümleri çoğu zaman beklenmedik kısıtlamalar sunabilir.

Laravel Shared Hosting Üzerinde Çalışır mı?

Birçok geliştirici ilk Laravel projesini bitirdikten sonra "şimdi bunu nereye koyacağım?" sorusuyla karşılaşır ve çözüm olarak aylık ucuz bir shared hosting paketi satın alır. Sonuç genellikle beyaz ekran, HTTP 500 hataları, "artisan command not found" veya bir türlü çalışmayan cron görevleridir.

Laravel'in shared hosting üzerinde çalışması teknik olarak mümkündür. Asıl mesele; kullanılan hosting paketinin Composer, SSH, cron, queue worker, doğru document root (/public) ve PHP sürümü gibi ihtiyaçları ne ölçüde desteklediğidir. Laravel'in temel web uygulaması PHP-FPM gibi klasik bir runtime üzerinde gayet normal çalışabilir. Ancak queue worker, Horizon ve bazı zamanlanmış görevler gibi production bileşenleri sürekli çalışan process'lere (daemon) veya güvenilir zamanlayıcılara ihtiyaç duyar.

Laravel'in Çalışması İçin Gerçekten Ne Gerekir? (Sürüm Uyumluluğu)

Güncel Laravel 12 ve önceki sürümlerin sorunsuz çalışması için ortam gereksinimleri ve altyapı karşılaştırması:

Gereksinim Neden Gerekli? Paylaşımlı Hosting Skyversal PaaS
PHP 8.2+ Laravel 12 ve Laravel 11 minimum PHP 8.2+ ister Sürüm desteği sağlayıcıya göre değişir Platform tarafından seçilebilir ve yönetilir
Composer 2.x Paket bağımlılık yönetimi (vendor/) SSH yetkisi yoksa çalıştırmak zordur Build aşamasında otomatik çalışır
Artisan CLI Migration, cache clear, config üretimi Kısıtlı veya SSH erişimi kapalı olabilir Deployment adımında yerleşik aktif
Queue Worker queue:work arka plan işlerinin otomatik izlenmesi Kalıcı background process sunulmayabilir Kalıcı process (Daemon) olarak tanımlanır
Task Scheduler schedule:run her dakika düzenli çalıştırılması cPanel cron — zamanlama limitleri olabilir Zamanlanmış process desteği
Writable Storage Log, session ve uygulama önbellekleri Klasör izin (CHMOD) ayarları gerekebilir İzinler otomatik yapılandırılır
SSL / HTTPS Güvenli HTTP, cookie güvenliği ve SEO Manuel veya sağlayıcıya bağımlı Otomatik Let's Encrypt SSL
Environment Vars .env şifrelerinin güvenli tutulması FTP dizin erişimine bağlıdır Git deposundan ayrı, panelden yönetilir
💡 Laravel Sürüm & PHP Uyumluluk Özeti:
  • Laravel 12 (Güncel): PHP 8.2+
  • Laravel 11: PHP 8.2+
  • Laravel 10: PHP 8.1+

Geleneksel Paylaşımlı Hostinglerde Karşılaşılan Temel Kısıtlamalar

Birçok geleneksel paylaşımlı hosting paketinde Laravel projeleri çalıştırılırken şu durumlarla karşılaşılabilir:

  • "Class not found" hataları: SSH erişimi olmaması nedeniyle composer install çalıştırılamaması.
  • 500 Internal Server Error: .env dosyasının doğru yerde olmaması veya APP_KEY değerinin tanımlanmaması.
  • Public klasör yönlendirme sorunu: Document root /public olarak ayarlanamadığı için karmaşık .htaccess yönlendirmelerine ihtiyaç duyulması.
  • Permission denied: storage/ ve bootstrap/cache/ klasörlerinde yazma izinlerinin olmaması.
  • Queue kısıtları: php artisan queue:work komutunun sürekli çalışan bir daemon process gerektirmesi — birçok paylaşımlı ortam buna izin vermez.
  • Scheduler hassasiyeti: cPanel cron ile schedule:run çalıştırılabilir; ancak hosting sağlayıcısının cron sıklığı, process süreleri ve kaynak limitleri kullanılan uygulamanın ihtiyaçlarıyla uyumlu olmayabilir.

Altyapı Karşılaştırması: Shared Hosting vs VPS/VDS vs PaaS

Laravel projelerinizi canlı ortama taşırken tercih edebileceğiniz 3 farklı mimarinin kapsamlı teknik karşılaştırması:

Özellik / Mimari Shared Hosting VPS / VDS Sunucu Skyversal PaaS
PHP Sürümü Sağlayıcıya bağımlı Sizin kontrolünüzde (Manuel) Platform tarafından yönetilir & seçilir
SSH Erişimi Pakete bağlı / Genelde kısıtlı ✅ Tam Root Erişimi CLI & Process desteğine bağlı yerleşik
Composer Derlemesi Değişken / SSH gerekebilir ✅ Manuel kurulur Build aşamasında otomatik
Queue Worker Genellikle kısıtlı / Desteklenmez ✅ Manuel Supervisor ile Process olarak tanımlanır ve izlenir
Supervisor Kurulumu ❌ Yok Manuel kurulum & konfigürasyon Platform tarafından otomatik yönetilir
SSL Sertifikası Manuel / Sağlayıcıya bağlı Manuel kurulum (Certbot) Otomatik Let's Encrypt SSL
Sunucu Bakım & Güncelleme Sağlayıcı tarafından Tamamen sizin sorumluluğunuzda Sıfır sunucu sorumluluğu, platform yönetir
Deployment Akışı Manuel FTP / cPanel File Manager CI/CD veya custom script kurulumu Git push ile %100 otomatik
Kaynak Ölçekleme Sınırlı Manuel (Re-provisioning) Tek tıkla esnek kaynak artırımı
Kontrol vs Sorumluluk Düşük kontrol Yüksek kontrol, Yüksek sorumluluk Yüksek uygulama kontrolü, Sıfır sunucu yükü

PaaS Yolu: Kod Yaz, Push Et, Otomatik Çalışsın

Platform as a Service (PaaS) altyapımız, Laravel'in gereksinim duyduğu PHP runtime, Composer derlemesi, asset build ve SSL süreçlerini otomatik yönetir.

git push origin main
   │
   ▼
Otomatik Framework Tespiti (composer.json + artisan)
   │
   ▼
composer install --no-dev --optimize-autoloader
   │
   ▼
npm install & npm run build (Asset derlemesi)
   │
   ▼
İzole Konteyner İmajı Oluşturma
   │
   ▼
Panel Çevre Değişkenleri enjekte edilir (.env)
   │
   ▼
php artisan migrate --force (Opsiyonel / UI Toggle: Açık / Kapalı)
   │
   ▼
Health Check & Canlıya Alma 🚀
🔑 APP_KEY Kalıcılığı ve Güvenliği:

Platform üzerinde APP_KEY tanımlı değilse ilk kurulumda güvenli rastgele bir anahtar üretilir. Böylece sonraki deployment'larda APP_KEY değişmediği için mevcut session ve şifrelenmiş verileriniz tam olarak korunur.

⚙️ Otomatik Migration & UI Toggle Yönetimi:

Skyversal panelinizde Otomatik Migration (Açık / Kapalı) ayarı bulunur. Seçenek aktifken deploy anında php artisan migrate --force çalıştırılır. Production ortamlarında migration'larınızın additive (expand-safe) yazılması önerilir. Dilerseniz bu seçeneği tek tıkla kapatabilir ve migration'ları manuel tetikleyebilirsiniz.

Sıkça Sorulan Sorular (VDS & PaaS Laravel Rehberi)

Laravel Forge veya Vapor kullanmak yerine neden PaaS?

Forge bir sunucu yapılandırma (provisioning) aracıdır ve arka planda kendi VPS sunucunuzu yönetmenizi gerektirir. Vapor ise AWS Lambda üzerinde serverless çalışır ve cold-start davranışı getirebilir. Skyversal PaaS ise sunucu bakımı gerektirmeyen izole konteyner mimarisiyle sürekli çalışan bir process ortamı sunar.

Queue Worker (Kuyruk Yöneticisi) nasıl çalışır?

Kuyruk yöneticinizi panel üzerinden kalıcı bir process olarak (php artisan queue:work --tries=3 --timeout=90) tanımlarsınız. Herhangi bir nedenden dolayı process kapandığında platform otomasyonu bunu otomatik olarak tekrar başlatır.

Laravel Horizon destekleniyor mu?

Evet, projenizde Horizon kuruluysa php artisan horizon komutunu process olarak tanımlayıp kendi Redis bağlantınızı sağlayarak sorunsuz çalıştırabilirsiniz.

Laravel Octane destekleniyor mu?

Şu anda platformumuz yüksek kararlılığa sahip standart PHP-FPM + Nginx mimarisi üzerine kuruludur. Swoole veya RoadRunner tabanlı Octane şu an desteklenmemektedir.

Rollback yapıldığında veritabanı migration'ları geri alınır mı?

Hayır. Rollback işlemi yalnızca uygulama kodunu önceki sürüme döndürür. Veri kaybını önlemek adına veritabanı şemaları otomatik olarak geri alınmaz.

Türkiye lokasyonu sunucu Laravel performansını nasıl etkiler?

Uygulama ve veritabanının aynı bölgeye yakın konumlandırılması, özellikle veritabanı sorgularının yoğun olduğu uygulamalarda ağ gecikmesini ciddi şekilde azaltır. Türkiye'deki kullanıcıları hedefleyen projelerde Türkiye lokasyonlu altyapı bu nedenle avantaj sağlar.

Son güncelleme: 13 Ağustos 2026