Rehberler Uzun Okuma Deploy

Django'yu uretime nasil cikarisiniz?

Settings ayirimi, guvenlik basliklari ve ortam degiskenleri.

10 Şubat 2026 22 dk okuma
Paylaş
X in

Giris

Gelistirme ayarlari ile uretim ayarlari ayni dosyada tutulmamali. DEBUG=True, gevsek ALLOWED_HOSTS ve sabit SECRET_KEY gelistirmede kolaylik saglar ancak internete acik bir sunucuda ciddi guvenlik aciklari olusturur. Bu yazida Django'yu uretime tasirken zorunlu guvenlik yapilandirmalarini adim adim gozden geciriyoruz.

Hedef: cevre degiskenleri ile yonetilen, denetlenebilir ve OWASP Django cheat sheet ile uyumlu bir settings yapisi kurmak.

Settings Dosyasi Ayirimi

base.py ortak ayarlari, development.py ve production.py ortama ozel override'lari icerir. DJANGO_SETTINGS_MODULE=proj.settings.production ile baslatilir.

  • django-environ veya python-decouple kullanin
  • .env dosyasini git'e eklemeyin
  • Her ortam icin ayri SECRET_KEY
# settings/production.py
from .base import *

DEBUG = False
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')
SECRET_KEY = env('SECRET_KEY')

SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

DEBUG ve SECRET_KEY

DEBUG=False iken ALLOWED_HOSTS zorunludur; aksi halde SuspiciousOperation hatasi alinir. SECRET_KEY imzalama, session ve CSRF icin kritiktir; asla repoya commit etmeyin. Rotation plani olusturun.

# Kotu - asla boyle yapmayin
SECRET_KEY = 'django-insecure-hardcoded-key'
DEBUG = True  # production'da

# Iyi
import os
SECRET_KEY = os.environ['DJANGO_SECRET_KEY']
DEBUG = os.environ.get('DJANGO_DEBUG', 'false').lower() == 'true'
SECRET_KEY sizintisi tum session ve imzali token'lari tehlikeye atar; hemen rotate edin.

HTTPS, HSTS ve Guvenlik Basliklari

SecurityMiddleware ile SECURE_SSL_REDIRECT, HSTS ve XSS korumalari etkinlestirilir. Reverse proxy (nginx) arkasinda SECURE_PROXY_SSL_HEADER ayarlanmalidir.

SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = 'DENY'
SECURE_REFERRER_POLICY = 'strict-origin-when-cross-origin'
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

CSRF, Session ve Cookie Guvenligi

CSRF_COOKIE_SECURE ve SESSION_COOKIE_SECURE yalnizca HTTPS uzerinden cookie gonderir. CSRF_TRUSTED_ORIGINS, farkli subdomain'den POST yapan frontend icin gereklidir. SESSION_COOKIE_HTTPONLY ve CSRF_COOKIE_HTTPONLY JavaScript erisimini engeller.

  • CSRF_TRUSTED_ORIGINS: ['https://app.example.com']
  • SESSION_COOKIE_AGE ile oturum suresi
  • SameSite=Lax veya Strict politikasi
CSRF_TRUSTED_ORIGINS = ['https://blog.example.com']
SESSION_COOKIE_HTTPONLY = True
CSRF_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'

Veritabani ve Statik Dosyalar

Veritabani sifreleri ortam degiskeninden gelir; SSL baglantisi zorunlu tutulabilir. Statik dosyalar whitenoise veya CDN uzerinden servis edilir; MEDIA_ROOT dogrudan internete acilmamalidir.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': env('DB_NAME'),
        'USER': env('DB_USER'),
        'PASSWORD': env('DB_PASSWORD'),
        'HOST': env('DB_HOST'),
        'OPTIONS': {'sslmode': 'require'},
    }
}

Logging, Izleme ve Hata Bildirimi

LOGGING yapilandirmasi ile uretimde dosya veya merkezi log toplayiciya (ELK, CloudWatch) akis saglanir. ADMINS ve django.utils.log.AdminEmailHandler kritik hatalarda e-posta gonderebilir; Sentry entegrasyonu tercih edilir.

  1. DEBUG=False iken console handler yerine file/remote
  2. Sentry SDK ile exception tracking
  3. Gizli veriyi loglama (SQL, token, sifre)
  4. Health check endpoint'i load balancer icin
LOGGING = {
    'version': 1,
    'handlers': {
        'console': {'class': 'logging.StreamHandler'},
    },
    'root': {'handlers': ['console'], 'level': 'WARNING'},
}

Sonuc ve Kontrol Listesi

Uretim guvenligi tek seferlik bir is degil; her deploy oncesi kontrol listesi uygulanmali. django-deploy checklist ve mozilla django-guideline dokumanlari duzenli gozden gecirilmelidir.

  • DEBUG=False, guclu SECRET_KEY, ALLOWED_HOSTS tanimli
  • HTTPS zorunlu, HSTS aktif
  • Guvenlik guncellemeleri: pip-audit / dependabot
  • Yedekleme ve felaket kurtarma plani