LIONFIN

Laravel Hosting: Laravel Projesi İçin Sunucu Gereksinimleri

Laravel projenizi yayına alırken nelere ihtiyacınız var? PHP sürümü ve eklentilerden Composer’a, belge kökünün public klasörüne yönlendirilmesinden kuyruk ve zamanlayıcıya kadar Laravel hosting gereksinimlerini ve paylaşımlı hosting ile VPS farkını anlatıyoruz.

YYönetici 6 dk okuma 1 görüntülenme
Laravel Hosting: Laravel Projesi İçin Sunucu Gereksinimleri

Laravel hosting, PHP tabanlı Laravel çatısıyla yazılmış bir uygulamanın ihtiyaç duyduğu PHP sürümünü, eklentileri, komut satırı erişimini ve zamanlanmış görevleri sağlayan barındırma ortamıdır. Laravel’i yalnızca dosyaları yükleyip çalıştıramazsınız; bağımlılıkların kurulması, ortam dosyasının hazırlanması ve web sunucusunun doğru klasöre yönlendirilmesi gerekir.

LIONFIN Linux hosting paketlerindeki gibi SSH erişimi ve PHP sürüm seçimi sunan bir ortam küçük ve orta ölçekli Laravel projeleri için yeterlidir; sürekli çalışan kuyruk işçileri, WebSocket ya da Redis isteyen projelerde ise root yetkili bir VPS sunucu daha esnek bir zemin sunar.

Kısa cevap

Laravel hosting, bir Laravel uygulamasını yayında çalıştırabilen barındırma ortamıdır. Temel gereksinimler: güncel Laravel sürümünün istediği PHP sürümü ve eklentileri, Composer, SSH erişimi, MySQL ya da MariaDB, belge kökünün public klasörüne yönlendirilmesi, yazılabilir storage ve bootstrap/cache klasörleri ve her dakika çalışan php artisan schedule:run cron görevi. Kuyruk işçisi gereken projelerde VPS daha rahat bir seçimdir.

Laravel için hangi PHP sürümü ve eklentiler gerekir?

Laravel, kullandığınız ana sürümün resmî belgelerinde belirtilen en düşük PHP sürümünü ister ve yeni ana sürümler bu alt sınırı zaman zaman yükseltir. Bu yüzden sabit bir sayı ezberlemek yerine projenizin composer.json dosyasındaki "php" satırına ve güncel Laravel sürümünün kurulum belgesine bakın; sunucudaki PHP sürümü bu koşulu karşılamalıdır.

Laravel belgelerinde listelenen başlıca PHP eklentileri şunlardır: ctype, curl, dom, fileinfo, filter, hash, mbstring, openssl, pcre, pdo (ve kullandığınız veritabanı için pdo_mysql gibi sürücü), session, tokenizer ve xml. Görsel işleme, Redis ya da uluslararasılaştırma kullanıyorsanız gd veya imagick, redis, intl gibi ek eklentiler gerekir.

Sunucuda yüklü sürümü ve eklentileri SSH ile şöyle kontrol edebilirsiniz:

php -v
php -m

cPanel’de sürümü MultiPHP Manager, eklentileri ise Select PHP Version ya da benzeri ekrandan değiştirebilirsiniz; adımlar cPanel PHP sürümü değiştirme rehberinde anlatılır. CLI ile web tarafındaki PHP sürümlerinin farklı olabileceğini unutmayın.

Laravel hosting için paylaşımlı hosting mi, VPS mi?

Kuyruk işçisi gerektirmeyen, trafiği orta düzeyde olan projeler SSH’li paylaşımlı hostingde çalışır; sürekli arka plan süreçleri, özel servisler ve tam yapılandırma isteyen projeler için VPS daha uygundur.

ÖlçütSSH’li paylaşımlı hostingVPS
KurulumPanel ve SSH ile; sunucu yazılımı hazırNginx/Apache, PHP-FPM, veritabanı sizin kurulumunuz
Composer ve ArtisanSSH erişimi varsa kullanılabilirTam serbest
Zamanlayıcı (scheduler)Panelden cron ileSistem cron’u ile
Kuyruk işçisiSınırlı; cron ile kısa süreli çalıştırmaSupervisor ya da systemd ile sürekli çalışır
Redis, WebSocket, HorizonGenellikle yok ya da kısıtlıKurulabilir
Bakım sorumluluğuSunucu tarafı sağlayıcıdaGüncelleme ve güvenlik sizde

Paylaşımlı ortamdan VPS’e geçiş zamanını gösteren işaretleri paylaşımlı hosting vs VPS yazısında bulabilirsiniz.

Laravel projesi sunucuya nasıl yüklenir?

Laravel projesi, kaynak kodu sunucuya aktarılıp bağımlılıklar Composer ile kurulduktan ve ortam dosyası hazırlandıktan sonra yayına hazır hâle gelir. Git kullanıyorsanız depoyu sunucuya klonlamak, dosyaları elle yüklemekten daha temiz bir yoldur. Tipik sıra şöyledir:

  1. Projeyi belge kökünün dışındaki bir klasöre alın, örneğin /home/kullanici/laravel.
  2. Bağımlılıkları üretim modunda kurun.
  3. .env.example dosyasını .env olarak kopyalayıp düzenleyin ve uygulama anahtarını oluşturun.
  4. Veritabanı tablolarını oluşturun ve storage bağlantısını kurun.
cd /home/kullanici/laravel
composer install --no-dev --optimize-autoloader
cp .env.example .env
php artisan key:generate
php artisan migrate --force
php artisan storage:link

.env dosyasında yayın ortamı için şu değerler kritik önemdedir:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://alanadiniz.com
DB_DATABASE=veritabani_adi
DB_USERNAME=veritabani_kullanicisi

APP_DEBUG=true ile yayında kalmak, hata sayfalarında yapılandırma ayrıntılarının görünmesine yol açabilir. Veritabanını panelden oluşturmak için cPanel MySQL veritabanı oluşturma rehberine bakabilirsiniz.

Belge kökü neden public klasörü olmalı?

Laravel’de web sunucusunun belge kökü (document root) yalnızca public klasörünü göstermelidir; böylece .env, vendor ve uygulama kodu tarayıcıdan erişilemez kalır. Projeyi doğrudan public_html içine açıp kök klasörü yayınlamak, gizli dosyaların dışarıdan indirilebilmesi riskini doğurur.

Panele göre üç yaygın çözüm vardır:

  • Addon domain ya da alt alan adı: cPanel’de alan adını eklerken belge kökünü doğrudan laravel/public olarak belirleyin.
  • Ana alan adı: Belge kökü değiştirilemiyorsa public_html klasörünü yedekleyip yerine public klasörüne giden sembolik bağlantı oluşturun.
  • Plesk: Websites & Domains altındaki barındırma ayarlarında belge kökünü httpdocs/public gibi bir yola çevirin.
mv ~/public_html ~/public_html_yedek
ln -s ~/laravel/public ~/public_html

Sembolik bağlantı yöntemini kullanmadan önce sağlayıcınızın buna izin verdiğinden emin olun. public içindeki hazır .htaccess dosyası, istekleri index.php’ye yönlendirir; kuralların mantığı .htaccess kullanımı rehberinde anlatılır.

Storage izinleri nasıl ayarlanır?

Laravel’in günlük, önbellek, oturum ve derlenmiş görünüm dosyalarını yazabilmesi için storage ve bootstrap/cache klasörlerinin, PHP’yi çalıştıran kullanıcı tarafından yazılabilir olması gerekir. Paylaşımlı hostingde PHP genellikle hesap kullanıcınızla çalıştığı için dizinlerde 755, dosyalarda 644 izinleri çoğu zaman yeterlidir.

find storage bootstrap/cache -type d -exec chmod 755 {} \;
find storage bootstrap/cache -type f -exec chmod 644 {} \;

VPS’te PHP-FPM farklı bir kullanıcıyla (örneğin www-data) çalışıyorsa klasörlerin sahipliğini bu kullanıcıya ya da ortak bir gruba vermeniz gerekir. Sorunu çözmek için 777 izni vermeyin; bu, dosyaları sunucudaki her sürece açar. İzin hatalarında sayfa çoğunlukla 500 hatası verir ve ayrıntı storage/logs/laravel.log dosyasına yazılır; genel teşhis adımları 500 Internal Server Error çözümü rehberindedir.

Kuyruk işçisi ve zamanlayıcı nasıl çalıştırılır?

Laravel zamanlayıcısı, sistem cron’una eklenen ve her dakika çalışan tek bir satırla devreye girer; kuyruk işçisi ise kuyruğa atılan e-posta, bildirim ve rapor gibi işleri arka planda işleyen sürekli bir süreçtir. Zamanlayıcı için cron satırı şöyledir (PHP yolu sunucuya göre değişebilir):

* * * * * cd /home/kullanici/laravel && php artisan schedule:run >> /dev/null 2>&1

cPanel’de bu satırı Cron Jobs ekranından eklersiniz; ayrıntılar cPanel cron job oluşturma rehberinde. Paylaşımlı hostingde sürekli çalışan süreçlere genellikle izin verilmediği için kuyruk, zamanlayıcı içinden kısa süreli olarak işlenebilir:

Schedule::command('queue:work --stop-when-empty')->everyMinute()->withoutOverlapping();

Bu satır güncel sürümlerde routes/console.php içinde Schedule cephesiyle (facade) yazılır; app/Console/Kernel.php kullanan eski projelerde aynı tanım $schedule nesnesiyle yapılır. VPS’te ise php artisan queue:work komutunu Supervisor ya da systemd ile sürekli çalışan ve çökünce yeniden başlayan bir servis olarak kurmak gerekir. Her yeni sürüm yüklemesinden sonra php artisan queue:restart çalıştırarak işçilerin güncel kodu almasını sağlayın.

Yayında performans için hangi komutlar çalıştırılmalı?

Laravel, yapılandırma, rota ve görünüm dosyalarını önbelleğe alarak her istekte bu dosyaları yeniden okuma yükünden kurtulur; yayına almanın son adımı bu önbellekleri oluşturmaktır:

php artisan config:cache
php artisan route:cache
php artisan view:cache

Güncel sürümlerde bu adımları ve olay önbelleğini tek seferde yapan php artisan optimize komutu da kullanılabilir. Dikkat edilmesi gereken nokta şudur: config:cache çalıştırıldıktan sonra .env dosyası artık okunmaz; bu yüzden kodda env() çağrısını yalnızca yapılandırma dosyalarında kullanın. .env değiştirdiğinizde komutu yeniden çalıştırın; sorun yaşarsanız php artisan optimize:clear tüm önbellekleri temizler.

Bunlara ek olarak PHP’de OPcache’in açık olması ve oturum ile önbellek sürücüsü olarak uygun bir seçenek kullanılması yanıt sürelerini iyileştirir.

Sık Sorulan Sorular

Laravel paylaşımlı hostingde çalışır mı?

Evet, SSH erişimi, uygun PHP sürümü ve gerekli eklentiler sunan bir paylaşımlı hostingde çalışır. Belge kökünü public klasörüne yönlendirebilmeniz ve cron ekleyebilmeniz yeterlidir. Ancak sürekli çalışan kuyruk işçileri, Redis ya da WebSocket gerektiren projelerde paylaşımlı ortamın sınırlarına takılabilirsiniz; bu durumda VPS daha uygundur.

SSH olmadan Laravel kurulabilir mi?

Teknik olarak vendor klasörünü yerelde Composer ile oluşturup dosyaları FTP ile yüklemek mümkündür. Ancak migration, önbellek ve key:generate gibi Artisan komutlarını çalıştıramamak her güncellemeyi zahmetli ve hataya açık hâle getirir. Laravel projeleri için SSH erişimi sunan bir paket seçmeniz önerilir.

Laravel sitesi 500 hatası veriyor, ilk neye bakmalıyım?

Önce storage/logs/laravel.log dosyasındaki son kayda bakın; hatanın nedeni çoğunlukla burada yazar. Sık görülen nedenler eksik .env dosyası ya da boş APP_KEY, storage klasörünün yazılabilir olmaması, eksik PHP eklentisi ve vendor klasörünün kurulmamış olmasıdır. Yapılandırma önbelleği eskimişse php artisan optimize:clear komutu da sorunu giderebilir.

Laravel zamanlayıcısı neden çalışmıyor?

En sık neden cron satırının hiç eklenmemesi ya da yanlış PHP yolu veya proje klasörüyle eklenmesidir. Cron’daki php komutunun web tarafıyla aynı sürümü çalıştırdığını php -v ile doğrulayın. Ardından php artisan schedule:list ile tanımlı görevleri listeleyin ve schedule:run komutunu elle çalıştırıp çıktıyı kontrol edin.

Laravel projesini güncellerken site kapanır mı?

Doğru yapılırsa kesinti çok kısa olur. Güncelleme öncesi php artisan down ile bakım moduna alın, kodu çekin, composer install ve migrate komutlarını çalıştırın, önbellekleri yenileyin, kuyruk işçilerini yeniden başlatın ve php artisan up ile siteyi açın. Tamamen kesintisiz yayın için sürüm klasörleri ve sembolik bağlantı kullanan dağıtım yöntemleri tercih edilir.

  • #laravel sunucu gereksinimleri
  • #laravel deploy
  • #laravel cpanel kurulumu
  • #laravel paylaşımlı hosting
  • #laravel vps
  • #php artisan
  • #composer hosting
  • #laravel queue worker
X LinkedIn WhatsApp