Laravel uygulamasını hosting paketine yükleme: public klasörü ve belge kökü

Web Hosting Kullanımı 46 görüntülenme Markdown

Laravel gibi PHP çerçeveleri, doğrudan public_html içine konulacak basit bir site değildir. Uygulamanın kod dosyaları web'den erişilemeyecek yerde durmalı, yalnızca public adlı klasör dışarıya açılmalıdır. Aksi halde .env gibi gizli dosyalarınız indirilebilir olur. Hosting paketimizde bunu iki doğru yolla yapabilirsiniz. Ayrıca hosting hesabında terminal erişimi olmadığı için bazı hazırlıkları yerelde yapmanız gerekir.

Yerelde hazırlık

  1. Uygulamanızı bilgisayarınızda üretim için hazırlayın: composer install --no-dev --optimize-autoloader. Sunucuda Composer çalıştıramayacağınız için vendor klasörü hazır halde yüklenecek.
  2. .env dosyasını üretim değerleriyle hazırlayın: APP_ENV=production, APP_DEBUG=false, veritabanı bilgileri (hostingde oluşturduğunuz veritabanının tam adı, kullanıcısı ve parolası; sunucu localhost), APP_URL, APP_KEY. APP_DEBUG=true bırakmayın.
  3. Veritabanı şemasını hazırlayın: yerelde php artisan migrate çalıştırıp veritabanını dışa aktarın ve hostingdeki veritabanına phpMyAdmin ile içe aktarın: hosting veritabanı.

Yerleşim: belge kökünü public yapın (önerilen)

  1. Tüm uygulamayı (vendor, app, bootstrap, config, public, ... klasörleri) FTP ile alan adı klasörünüzün içine yükleyin, public_html'e değil, bir üst düzeye ya da kendi klasörüne (örneğin web/ornek.com/uygulama/). Yükleme: FTP ile yükleme.
  2. Panelde WEB bölümünden alan adını düzenleyin, Gelişmiş Seçenekler'i açın.
  3. Özel belge kökü seçeneğini işaretleyip dizin olarak uygulamanızın public klasörünü gösterin (örneğin /web/ornek.com/uygulama/public gibi panelin gösterdiği biçimde).
  4. Web Şablonu olarak laravel seçin ve kaydedin. Bu şablon tüm isteklerin public/index.php'ye yönlendirilmesini sağlayan Nginx kurallarını içerir.

Hosting sunucumuz Nginx kullandığı için Laravel'in public/.htaccess dosyası çalışmaz; yönlendirmeyi şablon halleder: .htaccess çalışmıyor.

Klasör izinleri

Laravel'in yazabilmesi gereken iki klasör vardır: storage ve bootstrap/cache. Dosya Yöneticisi ya da FTP istemcinizde bunların sahibi sizin hesabınız olmalı ve yazılabilir olmalıdır (klasörler 755, gerekirse 775). storage/logs içine hata günlükleri yazılır; sorun olursa ilk bakacağınız yerdir.

Alternatif: public içeriğini public_html'e koymak

Belge kökünü değiştirmek yerine public klasörünün içeriğini public_html'e, geri kalan uygulamayı private ya da bir üst klasöre koyabilirsiniz; ancak bu durumda public/index.php içindeki iki yolu (vendor/autoload.php ve bootstrap/app.php) yeni konuma göre düzeltmeniz gerekir. Hata yapma payı yüksektir; belge kökü yöntemi daha temiz ve güvenlidir.

Sık sorunlar

  • 500 hatası: Hata günlüğüne (storage/logs/laravel.log ve panelin hata günlüğü) bakın: hata günlüğü. En sık: APP_KEY eksik, vendor eksik ya da PHP sürümü uyumsuzluğu.
  • Ana sayfa açılıyor, diğer sayfalar 404: Web şablonu laravel seçilmemiştir.
  • Artisan komutları çalıştıramıyorum: Hosting'de terminal yok; migrate gibi işleri yerelde yapın, kuyruk ve zamanlanmış görevler için panelin cron'unu kullanın: cron görevi.
  • PHP sürümü: Hosting'de PHP sürümü sabittir (şu an 8.5). Eski bir Laravel sürümü yeni PHP'de çalışmayabilir; çerçeveyi güncelleyin. Tam kontrol için Linux VDS daha uygundur.

Sık sorulanlar

Composer'ı hosting'de çalıştırabilir miyim?

Hosting hesabında terminal erişimi olmadığı için hayır. Bağımlılıkları yerelde kurup vendor klasörünü yükleyin.

Laravel için hosting mi VDS mi?

Küçük ve basit uygulamalar hostingde çalışır. Kuyruk işçileri, zamanlayıcı, Redis, özel PHP sürümü gibi ihtiyaçlarınız varsa VDS çok daha rahattır.

Alt klasörde (ornek.com/uygulama) yayınlanır mı?

Mümkündür ama yönlendirme kuralları karmaşıktır. Alt alan adı (uygulama.ornek.com) kullanıp onu web alan adı olarak eklemek daha sağlıklıdır.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.