Django’yu Bir Hosting Sunucusuna Nasıl Yükleyebilirsiniz: Tam Adım Adım Rehber
Django, hızlı geliştirmeyi ve temiz, pragmatik tasarımı teşvik etmek için tasarlanmış yüksek seviyeli bir Python web çerçevesidir. Basit bloglardan karmaşık kurumsal platformlara kadar ölçeklenebilir, güvenli ve bakımı kolay web uygulamaları oluşturmak için en popüler seçeneklerden biri olmaya devam etmektedir. Bu kapsamlı kılavuzda, Linux ortamınızı hazırlamaktan ilk projenizi çalıştırmaya ve onu üretime hazırlamaya kadar Django’yu bir hosting sunucusuna yüklemek için gereken her adımda size rehberlik edeceğiz.
Django’yu Web Uygulamanız İçin Neden Seçmelisiniz?
Kurulum sürecine dalmadan önce, Django’nun neden Python web geliştirme alanında hakim olmaya devam ettiğini anlamak değerlidir:
- Hazır özellikler: Django, yerleşik kimlik doğrulama, yönetici paneli, ORM, form işleme ve güvenlik özellikleriyle birlikte gelir.
- Ölçeklenebilirlik: Django, Instagram ve Pinterest gibi yüksek trafikli platformları destekler.
- Güvenlik odaklı tasarım: Django, SQL enjeksiyonu, XSS, CSRF ve clickjacking dahil olmak üzere yaygın güvenlik açıklarına karşı varsayılan olarak koruma sağlar.
- Hızlı geliştirme: Kural-yapılandırma üzerinde konvansiyonu felsefesi, geliştiricilerin özellikleri daha hızlı sunmasını sağlar.
- Büyük ekosistem: Binlerce yeniden kullanılabilir paket ve geniş bir topluluk, neredeyse her sorunun çözümünün zaten var olduğu anlamına gelir.
Django’dan en iyi şekilde yararlanmak için güvenilir bir sunucu ortamı isteyeceksiniz. Bir VPS Hosting planı, Django uygulamalarının talep ettiği root erişimi, özel kaynakları ve esnekliği sağlar.
Ön Koşullar
Kurulum işlemine başlamadan önce aşağıdakilerin mevcut olduğundan emin olun:
- Linux dağıtımı çalıştıran bir hosting sunucusu (Ubuntu 20.04/22.04 veya Debian önerilir)
- Sudo ayrıcalıklarına sahip sunucuya SSH erişimi
- Python 3.8 veya daha yüksek (Python 3.10+ önerilir)
pip(Python’ın paket yöneticisi) yüklü- Linux komut satırı hakkında temel bilgi
> Pro İpucu: Üretim Django uygulaması çalıştırıyorsanız, paylaşılan hosting ortamlarından kaçının. Bir VPS Hosting planı veya bir Dedicated Server uygulamanızın ihtiyaç duyduğu kontrol ve performansı sağlayacaktır.
Adım 1: SSH Aracılığıyla Sunucunuza Bağlanın
Terminal’inizi açın ve hosting sunucunuza bir SSH bağlantısı kurun:
ssh username@server_ipusername yerine gerçek sistem kullanıcı adınızı ve server_ip yerine sunucunuzun genel IP adresini yazın. Özel bir SSH portu veya anahtar tabanlı kimlik doğrulama dosyası kullanıyorsanız, komutu buna göre ayarlayın:
ssh -i /path/to/your/key.pem username@server_ip
Bağlandıktan sonra, sunucunuza komut satırı arayüzü üzerinden erişebilecek ve kurulum işlemine başlayabileceksiniz.
Adım 2: Sisteminizi Güncelleyin ve Python & pip Yükleyin
Sistem paketlerinizi güncel tutmak, hem güvenlik hem de uyumluluk açısından kritik bir ilk adımdır.
Paket İndeksini Güncelleyin
sudo apt update && sudo apt upgrade -y
Python 3 ve pip Yükleyin
Çoğu modern Ubuntu ve Debian dağıtımı Python 3 önceden yüklü olarak gelir. Önce Python sürümünüzü doğrulayın:
python3 --version
Python 3 yüklü değilse veya pip’e ihtiyacınız varsa, bunları şu şekilde yükleyin:
sudo apt install python3 python3-pip -y
Yüklemeleri doğrulayın:
python3 --version
pip3 --version
Her iki aracın da kullanılabilir olduğunu doğrulayan sürüm numaralarını görmelisiniz.
Adım 3: Python Sanal Ortamı Kurma
Sanal ortam kullanmak sadece önerilmez — her Python projesi için en iyi uygulama olarak kabul edilir. Sanal ortamlar, projenizin bağımlılıklarını sistem genelindeki Python kurulumundan ve aynı sunucudaki diğer projelerden izole eder, sürüm çakışmalarını önler ve ortamınızı temiz tutar.
virtualenv Kurma
sudo pip3 install virtualenv
Alternatif olarak, Python’un yerleşik venv modülünü (Python 3.3+ sürümlerinde mevcuttur) kullanabilirsiniz:
sudo apt install python3-venv -y
Proje Dizininizi ve Sanal Ortamınızı Oluşturma
Projenizi barındırmak istediğiniz dizine gidin veya yeni bir tane oluşturun:
mkdir myproject
cd myproject
Şimdi proje dizininizin içinde sanal ortamı oluşturun:
virtualenv venv
Veya yerleşik venv modülünü kullanarak:
python3 -m venv venv
Sanal Ortamı Etkinleştirme
source venv/bin/activate
Etkinleştirildikten sonra, komut istemleriniz sanal ortam adını gösterecek şekilde değişecektir, örneğin:
(venv) username@server:~/myproject$
Sanal ortam etkinken yürütülen tüm pip install komutları paketleri yalnızca bu izole ortam içine kuracaktır. Bunu istediğiniz zaman devre dışı bırakmak için şu komutu çalıştırmanız yeterlidir:
deactivate
Adım 4: Django’yu Yükleyin
Sanal ortamınız aktif durumdayken, pip kullanarak Django’yu yükleyin:
pip install django
Django’nun belirli bir sürümünü yüklemek için (uyumluluğu sağlamak amacıyla üretim ortamında önerilir):
pip install django==4.2
Yüklemeyi doğrulayın:
django-admin --version
Yüklü Django sürüm numarasının terminale yazdırıldığını görmelisiniz.
Adım 5: Yeni bir Django Projesi Oluşturun
Django'un yerleşik django-admin komut satırı aracını kullanarak yeni bir proje oluşturun:
django-admin startproject myproject .
> Not: Sondaki nokta (.), Django'ye proje dosyalarını geçerli dizinde oluşturmasını söyler; iç içe bir alt dizin oluşturmak yerine. Bu, çoğu dağıtım için daha temiz bir yapıdır.
Proje dizininiz artık aşağıdaki yapıyı içerecektir:
myproject/
├── manage.py
└── myproject/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
manage.py — Django projenizle etkileşim kurmak için bir komut satırı yardımcı programı.
settings.py — Projenizin merkezi yapılandırma dosyası.
urls.py — URL yönlendirme yapılandırması.
wsgi.py / asgi.py — WSGI ve ASGI uyumlu web sunucuları için giriş noktaları.
Adım 6: Veritabanı Ayarlarını Yapılandırın
Veritabanı bağlantınızı yapılandırmak için settings.py dosyasını açın:
nano myproject/settings.py
Varsayılan: SQLite (Yalnızca Geliştirme)
Varsayılan olarak, Django geliştirme ve test için uygun olan SQLite kullanacak şekilde yapılandırılmıştır, ancak üretim için önerilmez:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Üretim Seçeneği: PostgreSQL
PostgreSQL, üretimde Django için en yaygın olarak önerilen veritabanıdır. Önce gerekli paketleri yükleyin:
sudo apt install postgresql postgresql-contrib libpq-dev -y
pip install psycopg2-binary
Ardından DATABASES ayarını settings.py içinde güncelleyin:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
Üretim Seçeneği: MySQL / MariaDB
MySQL veya MariaDB tercih ederseniz, gerekli adaptörü yükleyin:
sudo apt install default-libmysqlclient-dev -y
pip install mysqlclient
Ardından DATABASES ayarını yapılandırın:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}
ALLOWED_HOSTS Yapılandırması
settings.py içindeyken, ayrıca ALLOWED_HOSTS ayarını sunucunuzun IP adresi veya alan adını içerecek şekilde güncelleyin. Bu, Django’nun hata ayıklama olmayan modda istekleri sunması için gereklidir:
ALLOWED_HOSTS = ['your_server_ip', 'yourdomain.com', 'www.yourdomain.com']
Adım 7: Veritabanı Migrasyonlarını Uygula
Django, veritabanı şeması değişikliklerini yönetmek için bir migrasyon sistemi kullanır. Tüm gerekli veritabanı tablolarını oluşturmak için ilk migrasyonları çalıştırın:
python manage.py migrate
Uygulanan her migrasyonu listeleyen bir çıktı göreceksiniz. Başarılı bir migrasyon şöyle görünür:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
...
Bir Süper Kullanıcı Oluştur (İsteğe Bağlı ancak Önerilir)
Django’nun yerleşik yönetici arayüzüne erişmek için bir yönetici hesabı oluşturun:
python manage.py createsuperuser
Bir kullanıcı adı, e-posta adresi ve şifre girmeniz istenecektir.
Adım 8: Django Geliştirme Sunucusunu Çalıştırın
Django'nin yerleşik geliştirme sunucusunu başlatarak kurulumunuzu doğrulayabilirsiniz:
python manage.py runserver 0.0.0.0:8000
Bu komut, geliştirme sunucusunu port 8000'deki tüm kullanılabilir ağ arayüzlerine bağlar. Web tarayıcınızı açın ve şu adrese gidin:
http://your_server_ip:8000
Django hoş geldiniz sayfasını görmelisiniz — bir roket gemisi ve "Kurulum başarıyla tamamlandı! Tebrikler!" mesajı.
Yönetici paneline erişmek için şu adrese gidin:
http://your_server_ip:8000/admin
> Önemli: Django'nin yerleşik geliştirme sunucusu üretim ortamı için uygun değildir. Tek iş parçacıklı, performans için optimize edilmemiş ve güvenlik sertleştirmesi eksiktir. Canlı dağıtımlar için her zaman üretim sınıfı bir web sunucusu kullanın.
Adım 9: Django’yu Üretim için Hazırlayın (Önerilir)
Üretim dağıtımları için uygun bir web sunucusu yığınını yapılandırmanız gerekir. En yaygın ve önerilen kurulum Nginx + Gunicorn‘dur.
Gunicorn’u Yükleyin
Sanal ortamınız etkin durumdayken:
pip install gunicorn
Gunicorn’un uygulamanıza hizmet verebileceğini test edin:
gunicorn --bind 0.0.0.0:8000 myproject.wsgi
Nginx’i Yükleyin ve Yapılandırın
sudo apt install nginx -y
Bir Nginx sunucu bloğu yapılandırma dosyası oluşturun:
sudo nano /etc/nginx/sites-available/myproject
Aşağıdaki yapılandırmayı ekleyin:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/username/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Yapılandırmayı etkinleştirin ve Nginx’i yeniden başlatın:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Statik Dosyaları Toplayın
settings.py dosyasını statik dosyalar dizini ile güncelleyin:
STATIC_ROOT = BASE_DIR / 'staticfiles'
Ardından tüm statik dosyaları toplayın:
python manage.py collectstatic
Uygulamanızı SSL ile Güvenli Hale Getirin
Herhangi bir üretim Django uygulaması için HTTPS vazgeçilmezdir. Bir SSL Sertifikası sunucunuz ile kullanıcılarınız arasında aktarılan verileri şifreler, hassas bilgileri korur ve modern tarayıcı güven göstergeleri için gereklidir. AlexHost, barındırma ortamınızla sorunsuz bir şekilde entegre olan SSL sertifikaları sunar.
Ek Üretim Hususları
Hassas Ayarlar için Ortam Değişkenleri
SECRET_KEY, veritabanı parolaları veya API anahtarları gibi hassas değerleri settings.py içinde asla sabit kodlamayın. Bunun yerine ortam değişkenlerini kullanın:
pip install python-decouple
settings.py içinde:
from decouple import config
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)
Üretimde DEBUG’ı False Olarak Ayarlayın
DEBUG = False
DEBUG = True ile üretimde çalıştırmak, ayrıntılı hata sayfalarını ve hassas yapılandırma bilgilerini potansiyel saldırganlar için açığa çıkarır.
Bir Alan Adı Yapılandırın
Django projeniz için henüz bir alan adı kaydetmediyseniz, AlexHost aracılığıyla Alan Adı Kaydı alan adınızı sunucunuza hızlı bir şekilde yönlendirmeyi kolaylaştırır ve tam DNS yönetimi dahildir.
Django Uygulamanız için Doğru Hosting Seçimi
Seçtiğiniz hosting ortamı, Django uygulamanızın performansı, güvenilirliği ve ölçeklenebilirliği üzerinde önemli bir etkiye sahiptir. İşte hızlı bir rehber:
Kullanım Durumu
Önerilen Hosting
Geliştirme & test
Paylaşımlı Web Hosting
Küçük ve orta ölçekli üretim uygulamaları
VPS Hosting
Yüksek trafikli veya kaynak yoğun uygulamalar
Dedicated Servers
Makine öğrenmesi / AI entegreli Django uygulamaları
GPU Hosting
Çoğu Django projesi üretim ortamına geçerken, bir VPS Hosting planı performans, kontrol ve maliyet etkinliği açısından ideal bir denge sunar. Root erişimi, herhangi bir yazılım yığınını kurma yeteneği ve paylaşımlı hosting’in sağlayamadığı adanmış kaynaklar elde edersiniz.
Django Kurulum Sorunlarının Giderilmesi
pip: command not found
pip’i manuel olarak yükleyin: sudo apt install python3-pip -ydjango-admin: command not found
Sanal ortamınız etkinleştirilmemiş olabilir. source venv/bin/activate komutunu çalıştırın ve tekrar deneyin.
Port 8000 Erişilebilir Değil
Sunucunuzun güvenlik duvarı kurallarını kontrol edin. UFW’li Ubuntu’da:
sudo ufw allow 8000
sudo ufw reloadVeritabanı Bağlantısı Reddedildi
Veritabanı hizmetinizin çalıştığını doğrulayın:
sudo systemctl status postgresql
# or
sudo systemctl status mysqlALLOWED_HOSTS Hatası
Sunucunuzun IP adresi veya alan adının settings.py dosyasındaki ALLOWED_HOSTS ayarında listelendiğinden emin olun.
Sonuç
Django’yu barındırma sunucunuza başarıyla yüklediniz, sanal bir ortam yapılandırdınız, veritabanınızı ayarladınız ve uygulamanızı üretim için hazırlamayı öğrendiniz. Django’nun zengin özellik seti, güçlü güvenlik varsayılanları ve muazzam ekosistemi, her ölçekteki web geliştirme projeleri için mükemmel bir seçimdir.
Üretim dağıtımları için her zaman uygun bir web sunucu yığını (Nginx + Gunicorn veya Apache + uWSGI) kullanın, DEBUG = False ayarlayın, uygulamanızı bir SSL Certificate ile güvenli hale getirin ve uygulamanızın kaynak gereksinimlerine uygun bir barındırma ortamı seçin. Yeni bir proje başlatıyor veya mevcut bir projeyi ölçeklendiriyor olsanız da, AlexHost’un VPS Hosting ve Dedicated Server planları, Django uygulamanızın hak ettiği performans, güvenilirlik ve esnekliği sağlar.
tasarruf edin