
Laravel, Symfony veya benzeri bir framework ile yazılmış bir uygulamayı paylaşımlı barındırmaya kurmak, klasik bir PHP sitesi kurmaktan farklıdır. Bu framework'ler belirli bir dizin yapısı, komut satırı erişimi ve bağımlılık yönetimi bekler — paylaşımlı ortam bunların bazılarını kısıtlar.
Bu rehber, Linux barındırma hesabında modern bir PHP uygulamasını çalıştırmanın yollarını ve sınırlarını anlatıyor.
Birinci Engel: Dizin Yapısı
Modern framework'ler bir güvenlik ilkesiyle tasarlanmıştır: yalnızca giriş dosyası web'den erişilebilir olmalı, uygulama kodu ve yapılandırma dosyaları web kökünün dışında durmalıdır.
Bu yüzden proje yapısında ayrı bir genel dizin bulunur ve web sunucusunun kök dizini oraya işaret etmelidir. Paylaşımlı barındırmada ise hesabınızın web kökü sabittir.
Üç Çözüm
- Web kökünü değiştirmek. Paneliniz alan adının kök dizinini değiştirmenize izin veriyorsa en temiz çözüm budur. Projeyi hesabınıza yükleyip kök dizini projenin genel klasörüne yönlendirin.
- Genel dizin içeriğini köke taşımak. Giriş dosyasını ve varlıkları web köküne, geri kalan her şeyi bir üst dizine koyup giriş dosyasındaki yolları güncellemek. Çalışır ama güncellemelerde dikkat gerektirir.
- Yönlendirme kuralıyla çözmek. Kök dizine, tüm istekleri genel klasöre yönlendiren bir kural koymak. En az tercih edilmesi gereken yöntemdir — uygulama dosyaları teknik olarak web kökü altında kalır ve yanlış bir kural onları erişilebilir kılabilir.
Üçüncü yöntemi kullanmak zorundaysanız, uygulama dizinlerine web erişimini ayrıca engelleyen kurallar ekleyin ve bunu test edin — tarayıcıdan yapılandırma dosyanızın adresini açmayı deneyin.
İkinci Engel: Bağımlılık Yönetimi
Modern PHP projeleri bağımlılıklarını bir paket yöneticisiyle yönetir. Paylaşımlı barındırmada komut satırı erişimi kısıtlı veya hiç olmayabilir.
Çözüm basittir: bağımlılıkları yerel makinenizde kurun ve üretim için hazırlanmış hâliyle yükleyin. Sunucuda paket yöneticisi çalıştırmanıza gerek kalmaz.
Bu yaklaşımın ek bir avantajı vardır: üretim kurulumunda geliştirme bağımlılıkları dışarıda bırakılır ve otomatik yükleyici optimize edilir — sunucuda kurulum yapmaya göre hem daha küçük hem daha hızlı bir sonuç elde edersiniz.
Üçüncü Engel: Komut Satırı Görevleri
Framework'ler bakım ve kurulum işlerini komut satırı araçlarıyla yapar: veritabanı şema güncellemeleri, önbellek temizliği, kuyruk işleme.
| İhtiyaç | Paylaşımlı hostingde çözüm |
|---|---|
| Şema güncellemesi | SSH varsa komutla; yoksa dökümü elle aktar |
| Önbellek temizliği | Önbellek dizinini elle boşalt |
| Zamanlanmış görevler | Panelden cron tanımla, tam yol kullan |
| Kuyruk işleme | Sürekli çalışan işçi yerine periyodik görev |
| Varlık derleme | Yerelde derle, derlenmiş hâlini yükle |
Dördüncü satır önemli bir kısıttır: paylaşımlı barındırmada sürekli çalışan arka plan işçisi tutamazsınız. Kuyruk kullanan bir uygulamayı periyodik görevlerle çalıştırmak mümkündür ama gerçek zamanlı işleme gerektiren senaryolarda yetersiz kalır.
Dördüncü Engel: Ortam Değişkenleri
Modern framework'ler yapılandırmayı ortam değişkenlerinden veya özel bir dosyadan okur. Bu dosya veritabanı parolası ve uygulama anahtarı içerir.
İki kritik nokta:
- Bu dosya web'den erişilebilir olmamalıdır. Web kökünde duruyorsa ve sunucu onu metin olarak sunuyorsa, tüm kimlik bilgileriniz internete açıktır. Dizin yapısı doğru kurulduysa zaten kök dışında kalır; kuramadıysanız erişimini yönlendirme kuralıyla engelleyin ve tarayıcıdan test edin.
- Sürüm kontrolüne girmemelidir. Depoya bir kez giren parola geçmişte kalır; silmek yetmez, değiştirmek gerekir.
Performans Notları
Modern framework'ler klasik PHP betiklerine göre her istekte daha fazla dosya yükler. Paylaşımlı barındırmada bu, hissedilir bir yavaşlık üretebilir. Üç önlem:
- Üretim modunda çalıştırın. Hata ayıklama modu açık bırakılmış bir framework belirgin biçimde yavaştır ve hata mesajlarıyla bilgi sızdırır. Bu, en sık yapılan hatadır.
- Framework önbelleklerini üretin. Yapılandırma, rota ve görünüm önbellekleri, her istekte yapılan işi ortadan kaldırır. Dağıtım sürecinizin parçası olmalıdır.
- Bayt kodu önbelleğini doğrulayın. Çok sayıda dosya yükleyen uygulamalarda etkisi en yüksek olan ayardır. Panelinizde etkin olduğundan emin olun.
Ne Zaman Paylaşımlı Yetmez?
Şu ihtiyaçlar varsa kendi sunucunuza geçmeniz gerekir:
- Sürekli çalışan kuyruk işçileri veya arka plan servisleri
- Bellek tabanlı önbellek deposu (paylaşımlı ortamda genellikle sunulmaz)
- Gerçek zamanlı bağlantı gerektiren özellikler
- Sunucu düzeyinde yapılandırma gerektiren bileşenler
- Otomatik dağıtım hattı kurma ihtiyacı
Bunlar yoksa modern bir PHP uygulaması paylaşımlı barındırmada gayet iyi çalışır — özellikle içerik ağırlıklı ve orta trafikli projelerde.
Sonuç
Modern PHP framework'leri paylaşımlı barındırmada çalışır, ancak dört noktada dikkat gerektirir: dizin yapısını doğru kurmak, bağımlılıkları yerelde hazırlayıp yüklemek, komut satırı işlerine alternatif bulmak ve yapılandırma dosyasını web erişiminden korumak. Bunlardan en kritiği sonuncusudur — web'den okunabilen bir yapılandırma dosyası, veritabanı parolanızı internete açar. Kurulumdan sonra tarayıcıdan o dosyanın adresini açmayı deneyin; boş bir sayfa yerine içerik görüyorsanız acil müdahale gerekir.
Sıkça Sorulan Sorular (SSS)
Laravel paylaşımlı hostingde çalışır mı?
Evet, dizin yapısı doğru kurulduğunda çalışır. Sınırlar, sürekli çalışan kuyruk işçisi ve bellek tabanlı önbellek gibi sunucu düzeyinde bileşenler gerektiğinde ortaya çıkar. İçerik ağırlıklı orta trafikli projeler için paylaşımlı barındırma yeterlidir.
Sunucuda paket yöneticisi çalıştıramıyorum
Gerekmez. Bağımlılıkları yerel makinenizde üretim ayarlarıyla kurup hazır hâliyle yükleyin. Bu yöntem hem daha küçük bir kurulum üretir hem sunucuda komut satırı ihtiyacını ortadan kaldırır.
Uygulamam paylaşımlı hostingde yavaş çalışıyor
Önce üretim modunda olduğunu doğrulayın — hata ayıklama modu açık bırakılmış bir framework belirgin biçimde yavaştır. Ardından framework önbelleklerini üretin ve bayt kodu önbelleğinin etkin olduğunu kontrol edin.
Yapılandırma dosyam güvende mi?
Test edin: tarayıcıdan o dosyanın adresini açmayı deneyin. İçerik görüyorsanız veritabanı parolanız internete açık demektir ve acil müdahale gerekir. Dizin yapısını düzeltin veya erişimi yönlendirme kuralıyla engelleyin.