Ubuntu Üzerinde Django Kurulumu: Nginx, Gunicorn ve PostgreSQL
Ubuntu Üzerinde Django (PostgreSQL + Gunicorn + Nginx) Kurulumu
Bu rehberde, Django uygulamasını production ortamına hazır hale getirmek için gerekli temel bileşenleri kuracaksınız.
Amaç; güvenli, performanslı ve ölçeklenebilir bir Django altyapısı oluşturmaktır.
Bu Rehberde Ne Öğreneceksiniz?
- Django için PostgreSQL veritabanı kurmayı
- Python sanal ortam (virtualenv) oluşturmayı
- Gunicorn ile uygulamayı servis etmeyi
- Nginx’i ters vekil (reverse proxy) olarak yapılandırmayı
- Production ortamda sık yaşanan hataları çözmeyi
1. Gerekli Paketlerin Kurulması
Bu adımda Django için gerekli sistem paketleri yüklenir.
sudo apt update
sudo apt install python3-venv python3-dev libpq-dev postgresql postgresql-contrib nginx
- Bu komut; PostgreSQL, Nginx ve Python geliştirme araçlarını kurar.
2. PostgreSQL Veritabanı ve Kullanıcı Oluşturma
- Önce PostgreSQL yönetici hesabına geçin.
sudo -u postgres psql
- Veritabanı ve kullanıcı oluşturun.
CREATE DATABASE myproject;
CREATE USER myprojectuser WITH PASSWORD 'guclu_sifre';
GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
- Bu yapı Django’nun güvenli şekilde veritabanına bağlanmasını sağlar.
3. Python Sanal Ortam Oluşturma
- Proje dosyaları için bir dizin hazırlayın.
mkdir ~/myprojectdir
cd ~/myprojectdir
- Sanal ortamı oluşturup aktif edin.
python3 -m venv myprojectenv
source myprojectenv/bin/activate
- Bu işlem bağımlılıkların projeye özel kalmasını sağlar.
4. Django ve Gunicorn Kurulumu
- Sanal ortam aktifken gerekli Python paketlerini yükleyin.
pip install django gunicorn psycopg2-binary
- Bu paketler Django uygulamasını çalıştırmak için yeterlidir.
5. Django Projesini Oluşturma ve Yapılandırma
- Django proje dosyalarını oluşturun.
django-admin startproject myproject ~/myprojectdir
settings.py dosyasında aşağıdaki ayarları güncelleyin:
-
ALLOWED_HOSTS: Alan adı, IP ve localhost
-
DATABASES: PostgreSQL bağlantı bilgileri
-
STATIC_ROOT: Statik dosya dizini
Bu ayarlar production ortam için zorunludur.
6. Veritabanı ve Statik Dosyaların Hazırlanması
- Veritabanı tablolarını oluşturun.
python manage.py migrate
- Yönetici kullanıcı ekleyin.
python manage.py createsuperuser
- Statik dosyaları toplayın.
python manage.py collectstatic
- Bu işlem Nginx’in statik dosyaları servis edebilmesini sağlar.
7. Gunicorn ile Uygulamayı Test Etme
- Gunicorn’u manuel olarak çalıştırın.
gunicorn --bind 0.0.0.0:8000 myproject.wsgi
- Bu adım, uygulamanın WSGI üzerinden düzgün çalıştığını doğrular.
8. Gunicorn için systemd Servisi Oluşturma
Gunicorn’un arka planda stabil çalışması için servis tanımlanır.
sudo nano /etc/systemd/system/gunicorn.service
- Bu servis, Gunicorn’u Unix socket üzerinden başlatır.
Servisi aktif edin:
sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
9. Nginx Reverse Proxy Yapılandırması
- Nginx sunucu bloğunu oluşturun.
sudo nano /etc/nginx/sites-available/myproject
Temel yapı:
server {
listen 80;
server_name rabisu.cloud;
location /static/ {
root /home/user/myprojectdir;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
- Bu yapı Nginx’i Gunicorn’a yönlendirir.
Aktif edin:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
10. Güvenlik ve HTTPS (Önerilir)
- SSL için Let’s Encrypt kullanın.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d rabisu.cloud
- Bu işlem HTTPS yönlendirmesini otomatik yapar.
Sıkça Sorulan Sorular (SSS)
-
Gunicorn neden Django’nun kendi sunucusu yerine kullanılır? Django’nun geliştirme sunucusu production için uygun değildir.
-
502 Bad Gateway hatası alıyorum, sebebi nedir? Gunicorn çalışmıyor veya socket yolu yanlış olabilir.
-
PostgreSQL neden SQLite yerine önerilir? PostgreSQL eşzamanlı bağlantılarda daha güvenlidir.
-
Statik dosyalar neden Nginx üzerinden servis edilir? Nginx, statik dosyaları Django’dan çok daha hızlı sunar.
Sonuç
Bu rehberle birlikte Django uygulamanız:
Production’a hazır
Güvenli
Performanslı
Ölçeklenebilir
hale gelir.
Profesyonel Django projelerinizi bu mimariyle Rabisu Bulut altyapısında hemen yayına alabilirsiniz.