Rehber

Laravel Projesini Sunucuya Yükleme: 3 Yol, Gerçek Komutlar, Dürüst Sonuç

Laravel'i production'a taşımanın üç yolu: cPanel/FTP (acı dolu), VPS + manuel kurulum (çalışır ama sysadmin ister) ve PaaS (git push). Supervisor, queue worker, cron, Nginx — hepsinin gerçek komutu burada. Hangi yol size göre, adım adım.

Yazar: Skyversal Ekibi

"Laravel projesini sunucuya nasıl yüklerim" sorusunun üç gerçek cevabı var — ve üçünü de yapmış insanlar olarak aralarındaki farkı marketing diliyle değil, komutlarıyla göstereceğiz. Seçiminiz iki şeye bağlı: ne kadar kontrol istediğinize ve geceleri telefonun kimin çalmasını istediğinize.

Yol 1: cPanel / Shared Hosting — "Dosyaları Attım, Site Açıldı" Yalanı

Klasik yol: php artisan serve'de çalışan projeyi FTP ile public_html'ye atmak. Site teknik olarak açılır — ama sonra gerçekler başlar:

  • composer install koşamazsınız (SSH yok) → vendor'ı elle atarsınız, ilk paket güncellemesinde patlar
  • php artisan migrate → SSH'sız panelde yok; phpMyAdmin'den SQL import çile işi
  • queue:work → kalıcı süreç yok; kuyruk hiç çalışmaz
  • schedule:run → tek "cron" olarak dakikada bir URL çağrısı — fragil
  • APP_ENV=production → .htaccess'te saklanır, yanlışlıkla commit'lenir

Sonuç: görünürde "çalışan" ama gerçekte queue'suz, cron'suz, yarım bir Laravel. Laravel shared hosting rehberimizde bu duvarın tam haritası var — hâlâ bu yolda kalmak zorundaysanız oradan başlayın, ama bu yazıdaki diğer iki yol daha doğru.

Yol 2: VPS + Manuel Kurulum — Gerçek Komutlar

Temiz bir Ubuntu VPS'te Laravel production kurulumu şu parçaları ister — hepsi doğru yapılmalı:

1) Stack kurulumu

apt update && apt install -y nginx php8.3-fpm php8.3-cli php8.3-mysql \\
  php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip composer nodejs npm

2) Kod ve bağımlılıklar

cd /var/www/uygulama && git pull origin main
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php artisan migrate --force
php artisan config:cache && php artisan route:cache && php artisan view:cache

3) Nginx vhost (kritik satır: public/ kökü)

server {
    listen 80;
    server_name site.com;
    root /var/www/uygulama/public;   # KOK public/, proje koku degil!
    index index.php;
    location / { try_files $uri $uri/ /index.php?$query_string; }
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

4) Queue worker — Supervisor ile kalıcı

# /etc/supervisor/conf.d/uygulama-worker.conf
[program:uygulama-worker]
command=php /var/www/uygulama/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=2
user=www-data

5) Scheduler — tek cron satırı

* * * * * cd /var/www/uygulama && php artisan schedule:run >> /dev/null 2>&1

6) SSL + izleme + yedek

Certbot ile SSL; log rotate; uptime monitörü; pg_dump cron'u; bunların hepsi ayrı ayrı sizin sorumluluğunuz. Toplam ilk kurulum: yarım gün. Aylık bakım: birkaç saat. Gece 3'te supervisor düşerse: siz.

Yol 3: PaaS — Git Push, Gerisi Platformda

git push origin main

Bu kadar. Platform repo'dan framework'ü tanır, build alır, composer install --optimize'ı koşturur, migrate eder, konteyneri başlatır, SSL'i takar. Queue worker ve scheduler aynı projenin süreçleri olarak panelde tanımlanır — supervisor conf yazmazsınız. Zero-downtime deploy: eski süreç yenisine sağlıklı geçene kadar ayakta kalır.

Üç Yolun Dürüst Tablosu

cPanel/FTPVPS + ManuelPaaS
Kurulum süresi1 saat (+yıllarca hack)Yarım-1 gün10 dakika
Queue/cronYokSupervisor + cron — siz kurarsınızDahili
Deploy hızıFTP ile dakikalar, yarım dosya riskiSSH script — yazdıysanızgit push → 2 dk
RollbackEski dosyaları geri atgit revert + elleTek tık
SSLPanelde tıkCertbot — sizOtomatik
Ops yüküDüşük ama tavanlıYüksek — tam sysadminSıfır
KontrolDüşükTam (root)Platform sınırında

VPS'in kazandığı tek yer kontrol — kernel, özel servis, özel network. Her şeyi kendiniz kurabilirsiniz; soru şu: istemiyor musunuz? VPS vs PaaS analizimiz bu kararın maliyet tarafını açar.

Karar Formülü

  1. WordPress/statik değil, gerçek Laravel uygulaması → cPanel'i eleyin.
  2. Linux opsiyonu işiniz/sevdanız mı? Evet → VPS. Hayır → PaaS.
  3. Gece 3'te supervisor düşünce kimin uyanmasını istersiniz? Cevap yol gösterir.

Skyversal'da aynı proje içinde web + worker + cron + DB birlikte yürür — üç ayrı fatura/dyno modeli yok. Ortam değişkenleri rehberi ve hosting rehberi geçişin detaylarını verir; fiyatlar TL'dir.

Sık Sorulanlar

cPanel'de Laravel "çalışır" — neden taşınayım?

Açılan site ≠ çalışan uygulama. Queue, scheduler ve composer olmadan Laravel'in yarısı devre dışı; her deploy'da yarım dosya riski taşırsınız.

VPS'te en çok ne unutulur?

Nginx root'unun public/ olması (proje kökü değil!), storage/ ve bootstrap/cache izinleri, supervisor'un www-data kullanıcısı ve schedule:run cron satırı — dördü de "site açıldı ama X çalışmıyor" şikâyetlerinin klasik kaynağı.

PaaS'ta kuyruk ve cron nasıl tanımlanır?

Proje içinde süreç olarak: queue:work bir worker süreci, schedule:run zamanlanmış görev olarak panelde. Supervisor conf, crontab düzenleme yok.

Laravel 12 için fark var mı?

Kurulum akışı aynı; sadece PHP 8.2+ ve güncel composer şart. Laravel 12 upgrade rehberimizde sürüm notları var.

Son güncelleme: 5 Kasım 2026