Django Projelerini Deploy Etme

Skyversal üzerinde Django uygulamalarınızı Gunicorn ile saniyeler içinde deploy edin. Collectstatic, veritabanı migration'ları ve ortam değişkenleri rehberi.

Django Projelerini Deploy Etme

Admin paneli, ORM'i ve güçlü ekosistemiyle Django, web'in "pilleri dahil" (batteries-included) framework'üdür. Skyversal, Django projelerinizi standartlara uygun olarak Gunicorn ile otomatik ayağa kaldırır.

Okuma Süresi: 6 Dakika
Sunucu: Gunicorn
Tavsiye Edilen DB: PostgreSQL

Bu rehberde neler öğreneceksiniz?

  • Gerekli gereksinimler ve dosya yapısı
  • WhiteNoise ile Statik Dosya (collectstatic) yönetimi
  • Veritabanı Migration komutları (migrate)
  • Gunicorn ve production ayarları (ALLOWED_HOSTS)

1. Gerekli Bağımlılıklar (requirements.txt)

Uygulamanızın üretim ortamında (production) sorunsuz çalışması için requirements.txt dosyanızda şu temel bağımlılıkların olduğundan emin olun:

requirements.txt
Django==4.2.0
gunicorn==21.2.0 # WSGI sunucusu olarak şarttır
psycopg2-binary==2.9.9 # PostgreSQL kullanıyorsanız
whitenoise==6.6.0 # Statik dosyaları sunmak için
💡
Gunicorn Kurulumu Neden Şart?

Django'nun içindeki python manage.py runserver komutu sadece yerel geliştirme içindir, asla gerçek sunucuda (production) kullanılmaz. Skyversal gunicorn paketini gördüğünde projenizi çok thread'li (multi-thread) güçlü bir yapıda başlatır.

2. Güvenlik ve Ortam Değişkenleri (settings.py)

Kodunuzu GitHub'a göndermeden önce settings.py dosyanızda güvenlik ayarlarını dinamik hale getirmelisiniz. Şifreleri koda gömmeyin; Skyversal panelinden (Settings > Environment Variables) değişken olarak ekleyin.

import
os

# SECRET_KEY asla kod içinde açıkça durmamalıdır
SECRET_KEY = os.getenv('SECRET_KEY', 'fallback-secret-key')

# Production ortamında her zaman False olmalıdır!
DEBUG = os.getenv('DEBUG', 'False') == 'True'

# Skyversal önünde Nginx reverse proxy olduğu için trafiği kabul ederiz
ALLOWED_HOSTS = ['*']

3. Statik Dosyalar ve WhiteNoise (Çok Önemli)

DEBUG = False yapıldığında Django artık CSS, JS ve görselleri sunmayı bırakır. Statik dosyalarınızın 404 Not Found hatası vermemesi için WhiteNoise kullanmanız gerekir.

1
Middleware'i Ekleyin

settings.py içinde MIDDLEWARE listesine WhiteNoise ekleyin. Mutlaka SecurityMiddleware'den hemen sonra gelmelidir!

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    ...
]
2
Static Root Tanımlayın

Skyversal, projenizi derlerken otomatik olarak collectstatic komutunu çalıştırır. Dosyaların toplanacağı hedef klasörü belirtmelisiniz.

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

4. Veritabanı ve Migration (Migrate)

Skyversal üzerinden projenizi yayınladıktan sonra veritabanı tablolarınızı oluşturmanız gerekecektir.

  1. Skyversal paneline gidin ve projenizin Deploy Logs / Run Commands sekmesini açın.
  2. İlgili form alanına python manage.py migrate yazın ve çalıştırın.
  3. Yönetici hesabı oluşturmak için python manage.py createsuperuser komutu etkileşimli bir komuttur. Bunun yerine ortam değişkenlerini okuyan özel bir (custom) komut kullanabilir veya bir veritabanı istemcisi ile (DBeaver vb.) doğrudan Managed Database'inize bağlanabilirsiniz.

Sık Karşılaşılan Hatalar (Troubleshooting)

ModuleNotFoundError: No module named 'django'

Çözüm: Projenizin kök dizininde requirements.txt dosyası yok veya içinde Django kelimesi geçmiyor. Dosyayı GitHub'a pushladığınıza emin olun.

Static files (CSS/JS) 404 Not Found

Çözüm: DEBUG=False modundasınız ve WhiteNoise kurulmamış. 3. Adımdaki WhiteNoise ayarlarını settings.py dosyanıza ekleyin.

OperationalError: no such table

Çözüm: Veritabanı tablolarınız yok. Panelden python manage.py migrate komutunu çalıştırarak veritabanınızı oluşturun.

Application failed health check

Çözüm: Gunicorn başlatılamadı. Kodunuzda syntax (sözdizimi) hatası olabilir veya ALLOWED_HOSTS ayarı eksiktir. Deploy loglarınızı kontrol edin.

Hazırsınız! 🚀

Tüm bu ayarlardan sonra projenizi pushlamanız yeterli. Skyversal, Gunicorn üzerinden sitenizi saniyeler içinde SSL ile yayına alacaktır.

Son güncelleme: 27 Temmuz 2026
Bu sayfayı GitHub'da düzenle