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’ı Paylaşımlı Barındırmada Dağıtma (SSH Gerektirmeden)
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’ı Paylaşımlı Barındırmada Dağıtma (SSH Gerektirmeden)

Yazılım

Laravel’ı Paylaşımlı Barındırmada Dağıtma (SSH Gerektirmeden)

teknomers
Son güncelleme: 7 Şubat 2026 23:52
teknomers
Paylaş
Paylaş

Paylaşımlı hosting üzerinde SSH olmadan bir Laravel uygulamasını dağıtmanın mümkün olup olmadığını hiç merak ettiniz mi?

Cevap EVET. İlk freelance deneyimlerim sırasında, sıkı bir bütçeye sahip bir müşterinin Laravel web sitesinin ilk versiyonunu çevrimiçi görmesi gerektiği bir durumla karşılaştım. Hosting ortamında SSH, Composer, Artisan veya NPM yoktu.

Bu nedenle güvenli ve güvenilir bir alternatif bulmam gerekti.

Bu yazıda, Laravel uygulamalarını SSH erişimi olmadan paylaşımlı hosting üzerinde dağıtmak için kullandığım işlemleri paylaşacağım.



Paylaşımlı Hosting Üzerinde Laravel Dağıtımının Farklı Olmasının Nedenleri



1. Proje Dosya Yapısı

Tipik bir Laravel proje dosya yapısı şu şekildedir:

project/  
 ├── app/  
 ├── bootstrap/  
 ├── config/  
 ├── public/  
 ├── storage/  
 ├── vendor/  
 └── artisan

Ancak, paylaşımlı hosting genellikle sadece bir genel dizini açar:

├── public_html/



2. SSH Yok, Komut Yok

Eğer SSH erişimi olsaydı, açıkça şunlar yapılabilirdi:

  1. Composer bağımlılıkları yüklenemez
  2. Asset oluşturulamaz çünkü “npm run” çalışmaz
  3. Migration’lar çalıştırılamaz
  4. Önbellek temizleme veya optimizasyon yapılamaz



Durumu Adım Adım Nasıl Çözebiliriz



Adım 1: Uygulamanızı Yerel Olarak Hazırlayın

Öncelikle, geliştirme ortamımı etkilememek için Laravel projemin bir kopyasını üretim için hazır bir kopya olarak klonluyorum:

├── laravel_app/  
├── laravel_app_prod/

laravel_app_prod klasörünün içine uygulamayı üretim için hazırlıyorum.

// önbellek temizleme  
php artisan config:clear  
php artisan cache:clear  
php artisan route:clear  
php artisan view:clear  

// üretim bağımlılıklarını yükleme ve optimize etme  
composer install --no-dev --optimize-autoloader  

// ön uç varlıkları oluşturma  
npm run build



Adım 2 — Proje Dosya Yapısını Yeniden Düzenleme

Paylaşımlı hosting dosya yapısına uyacak şekilde, yalnızca public/ klasörünün içeriğini yeni public_html/ klasörüne taşıyorum:

public_html/  



Adım 3 — index.php’de Laravel Yollarını Düzeltme

Şimdi, uygulamanın doğru bir şekilde çalışabilmesi için önemli bir adım atmalıyız; public/index.php dosyasındaki yolları güncelleyelim:

if (file_exists(  
    $maintenance = __DIR__ . '/../laravel_app_prod/storage/framework/maintenance.php'
)) {  
    require $maintenance;  
}  

require __DIR__ . '/../laravel_app_prod/vendor/autoload.php';  

(require_once __DIR__ . '/../laravel_app_prod/bootstrap/app.php')  
    ->handleRequest(Request::capture());

Bu kritik bir adım; hatalı yollar 500 hatasına neden olur.



Adım 4 — cPanel Üzerinden Veritabanını Ayarlama

cPanel’den:

  1. MySQL Database Wizard açın
  2. Bir veritabanı oluşturun
  3. Bir veritabanı kullanıcısı oluşturun
  4. Kullanıcıya TÜM AYRICALIKLARI atayın

Sonra, laravel_app_prod içindeki .env dosyasını güncelleyin:

APP_NAME=MyApp  
APP_ENV=production  
APP_DEBUG=false          // çok önemli (güvenlik)  
APP_URL=https://your-app-domain  

DB_DATABASE=database_name  
DB_USERNAME=database_user  
DB_PASSWORD=database_password  // (zaten kaydettiniz)

⚠️ Asla üretimde APP_DEBUG=true olarak ayarlamayın.



Adım 5 — Geçici Dağıtım Yolu (Token ile Korunaklı)

Önemli bir kısma geliyoruz, SSH yok, sorun değil. Artisan komutlarını geçici olarak korunaklı bir web yolu aracılığıyla çalıştırabiliriz.

⚠️ Bu yol dağıtımdan hemen sonra kaldırılmalıdır.

Dosyanıza bir gizli token ekleyin:

DEPLOY_TOKEN=verySecretRandomToken123

Yolu routes/web.php dosyasına ekleyin:

use Illuminate\Support\Facades\Artisan;  
use Illuminate\Support\Facades\Route;  

Route::get('/deploy/{token}', function ($token) {  
  abort_unless($token === env('DEPLOY_TOKEN'), 403);  

  // 1. Migration'ları çalıştır ve önbelleği temizle  
  Artisan::call('migrate', ['--force' => true]);  
  Artisan::call('optimize:clear');  

  // 2. Depolama Bağlantısını Düzelt (Özelleştirilmiş Düzeltme)  
  // 'public_html' klasörüne $_SERVER['DOCUMENT_ROOT'] ile işaret ediyoruz  
  $targetFolder = storage_path('app/public');  
  $linkFolder = $_SERVER['DOCUMENT_ROOT'] . '/storage';  

  if (!file_exists($linkFolder)) {  
    symlink($targetFolder, $linkFolder);  
    $storageStatus = 'Storage link created successfully.';  
  } else {  
    $storageStatus = 'Storage link already exists.';  
  }  

  return "Deployment completed.
" . "Migrations run.
" . "Cache cleared.
" . $storageStatus; });

Bu, yalnızca doğru token’e sahip olan birinin dağıtımı tetiklemesini sağlar.



Adım 6 — Dosyaları Sunucuya Yükleyin

cPanel Dosya Yöneticisi kullanarak:

  1. laravel_app_prod/ dosyasını zipleyin
  2. public/ klasörünün içeriğini zipleyin
  3. Yükleyin:
    • laravel_app_prod‘ı public_html dışına yerleştirin
    • Halka açık dosyaları public_html‘ın içine koyun

Sonra her iki dosyayı da çıkarın.

Neden laravel_app_prod‘ı public_html‘ın dışına koyduk?

Bu kritik bir güvenlik uygulamasıdır. Uygulama mantığınızı ve en önemlisi .env dosyanızı boş dizinin bir seviyesinin üstünde tutarak, tarayıcı aracılığıyla bunlara fiziksel olarak erişim sağlanamaz.

Sunucunuz yanlış yapılandırılır ve PHP dosyalarını metin olarak sunmaya başlarsa (bu sık olur!), kimlik bilgilerinizi gizli tutarak, bunlar herkesin erişimine kapalıdır.



Adım 7 — Kritik İzinleri Ayarlama

Laravel, belirli klasörlere yazma erişimi gerektirir. Bu izinler ayarlanmazsa, günlükler yazılmaz ve oturumlar kaydedilmez.

  1. cPanel Dosya Yöneticisinde laravel_app_prod/storage klasörüne gidin.
  2. Sağ tıklayın → İzinleri Değiştir.
  3. 775 olarak ayarlayın (Kullanıcı: Oku/Yaz/Çalıştır, Grup: Oku/Yaz/Çalıştır, Dünya: Oku/Çalıştır).
  4. Aynı şeyi laravel_app_prod/bootstrap/cache için de yapın.

🛑 Not: Asla klasörleri 777 olarak ayarlamayın. Bu, paylaşımlı hosting üzerinde büyük bir güvenlik riski taşır.



Adım 8 — Migration’ları Çalıştır ve Dağıtım Yolunu Kaldır

Tarayıcıda açın:

https://your-domain.com/deploy/verySecretRandomToken123

Her şey doğruysa, şu mesajı görmelisiniz:

Deployment completed successfully

Hemen ardından:

❗ Dağıtım yolunu silin

❗ DEPLOY_TOKEN‘ı .env‘dan kaldırın

Bu güvenlik açısından kritiktir.



Karşılaşılan Yaygın Sorunlar



500 Dahili Sunucu Hatası

  • index.php’deki yanlış dosya yolları
  • Yanlış PHP sürümü (cPanel’deki MultiPHP Manager kullanın)
  • Yanlış klasör izinleri (storage 775, bootstrap/cache 775)



403 Yetkisiz

  • Yol tokeni ile DEPLOY_TOKEN uyuşmuyor



Son Düşünceler

Paylaşımlı hosting, Laravel için ideal değildir, ancak şunlar için hala oldukça yaygındır:

  • Müşteri projeleri
  • MVP’ler
  • Bütçe kısıtlamalı dağıtımlar

Doğru hazırlık ve güvenli bir işlemle, Laravel uygulamaları SSH erişimi olmadan bile güvenilir bir şekilde çalışabilir.

💡 İpucu: Daha Güvenli Veritabanı Alternatifi

Web yolunda migration çalıştırmakta rahatsızsanız (bu güvenlik riskleri taşır), Export/Import yöntemini kullanabilirsiniz:

  1. Migration’ları lokal makinenizde çalıştırın.
  2. Yerel aracınızı kullanarak veritabanınızı .sql dosyası olarak dışarı aktarın.
  3. Sunucuda cPanel > phpMyAdmin gidin.
  4. .sql dosyasını doğrudan içe aktarın.

Bu, üretim yollarında yürütülebilir mantık gerektirmediği için daha güvenlidir.



🔗 Bağlantıda Kalın

Laravel eğitimleri, geliştirme ipuçları, dağıtım işlemleri ve gerçek dünya üretim sorunlarının çözümü için beni takip edin.

Bu yazıyı faydalı buldunuz mu?

🙏 Destek vermek için alkışlayın 👏, abone olun 🔔, sosyal ağlarda paylaşın

Kaynak: Orijinal Makale

Contents
  • Paylaşımlı Hosting Üzerinde Laravel Dağıtımının Farklı Olmasının Nedenleri
    • 1. Proje Dosya Yapısı
    • 2. SSH Yok, Komut Yok
  • Durumu Adım Adım Nasıl Çözebiliriz
    • Adım 1: Uygulamanızı Yerel Olarak Hazırlayın
    • Adım 2 — Proje Dosya Yapısını Yeniden Düzenleme
    • Adım 3 — index.php’de Laravel Yollarını Düzeltme
    • Adım 4 — cPanel Üzerinden Veritabanını Ayarlama
    • Adım 5 — Geçici Dağıtım Yolu (Token ile Korunaklı)
    • Adım 6 — Dosyaları Sunucuya Yükleyin
    • Adım 7 — Kritik İzinleri Ayarlama
    • Adım 8 — Migration’ları Çalıştır ve Dağıtım Yolunu Kaldır
  • Karşılaşılan Yaygın Sorunlar
    • 500 Dahili Sunucu Hatası
    • 403 Yetkisiz
  • Son Düşünceler
  • 🔗 Bağlantıda Kalın
Hızla Yayınla veya Unutul: AI ve Hazır Şablonlarla SaaS’ı Daha Hızlı Nasıl Lansman Yapıyorum
Laravel ve SEFAZ ile Çoklu Kiracı NF-e API’si Oluşturma: 6 Zor Düşünüm
Mühendislik Pratikliği: Modern Muhasebe SaaS’ının Bir Araç Gibi Hissettirmesi Gereken Nedenler
Laravel ve yt-dlp Kullanarak TikTok Video İndirici Nasıl Oluşturulur
Kodlama Asistanlarının Evrimi: Otomatik Tamamlamadan Laravel Geliştiricileri için Akıllı Yapay Zeka’ya
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale WD Black SN850 2TB SSD’yi sadece 199$’a kapın—son fiyat!
Sonraki Makale GOG, Yerel Linux Desteği Üzerinde Çalışmalara Başladı

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Satoshi’nin BTC’si Bitcoin’in kuantum sorunu çözüldüğünde ne olacak?
Finans
Yapay Zeka Ajanları ile Elektrikli Araç Şarj İstasyonları Nasıl Korunur?
Genel
Acil: Yabancıların Fable 5 ve Mythos 5 Erişimi Askıya Alındı
Siber Güvenlik
Laravel yapılandırma yedeklerini APP_KEY’ler arasında taşınabilir hale getirmek için şifreleme yapma
Yazılım
Andrew Yang’a Göre Yaşam Maliyetlerini Düşürmek Büyük Fırsat
Genel
ABD’nin Talimatıyla Claude Fable 5 Offline, Anthropic Ne Açıklıyor?
Genel
//

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?