Takip et

Ubuntu 16.04 Üzerinde Django, Postgres, Nginx ve Gunicorn Kurulumu

# Ubuntu 16.04’te Django, PostgreSQL, Nginx ve Gunicorn Kurulumu: Tam Kılavuz

Meta Açıklaması: Ubuntu 16.04 üzerinde Django, PostgreSQL, Nginx ve Gunicorn kullanarak yüksek performanslı bir web uygulaması nasıl kurulur? Bu kapsamlı kılavuzda adım adım kurulum, konfigürasyon ve optimizasyon adımlarını bulacaksınız. Django projeleriniz için güvenilir ve ölçeklenebilir bir mimari oluşturun!

Yüksek performanslı ve güvenilir bir web uygulaması geliştirmek istiyorsunuz ama nereden başlayacağınızı bilmiyor musunuz? Django’nun gücü, PostgreSQL’in veritabanı yönetimi yetenekleri, Nginx’in ters proxy özellikleri ve Gunicorn’un WSGI sunucu yeteneği bir araya geldiğinde, güçlü ve ölçeklenebilir bir uygulama mimarisi oluşturmak mümkün. Bu makalede, Ubuntu 16.04 üzerinde bu teknolojileri kullanarak adım adım bir Django uygulaması kurulumunu, konfigürasyonunu ve performans optimizasyonunu ele alacağız. Fatih Soysal’ın bu kapsamlı kılavuzu ile Django yolculuğunuza güvenle başlayabilirsiniz.

1. Temel Kavramlar: Django, PostgreSQL, Nginx ve Gunicorn

Öncelikle, kullanacağımız temel teknolojileri kısaca tanıyalım.

Django: Python tabanlı, yüksek seviyeli bir web uygulama framework’üdür. “Don’t Repeat Yourself” (DRY) prensibine bağlı kalarak, hızlı ve verimli uygulama geliştirmeyi sağlar. Karmaşık projelerde bile kodun okunabilirliğini ve sürdürülebilirliğini artırır. Django’nun güçlü ORM (Object-Relational Mapper) sayesinde veritabanı işlemleri kolaylaşır.

PostgreSQL: Açık kaynak kodlu, güçlü ve güvenilir bir ilişkisel veritabanı yönetim sistemidir. SQL standardına uyumlu olup, geniş bir özellik yelpazesi sunar. Django ile mükemmel bir uyumluluğa sahiptir ve büyük ölçekli projeler için idealdir.

Nginx: Yüksek performanslı bir web sunucusu ve ters proxy’dir. Statik dosyaları hızlı bir şekilde servis eder ve gelen istekleri Gunicorn gibi WSGI sunucularına yönlendirir. Bu sayede, Django uygulamanızın performansını artırır ve yük altında daha istikrarlı çalışmasını sağlar.

Gunicorn: WSGI (Web Server Gateway Interface) HTTP sunucusu olarak çalışır. Django uygulamanızı çalıştırmak ve Nginx ile iletişim kurmak için kullanılır. Çoklu iş parçacığı desteği sayesinde, gelen istekleri verimli bir şekilde işler.

2. Ubuntu 16.04’te Gerekli Yazılımların Kurulumu: Nasıl Yapılır?

Öncelikle, Ubuntu 16.04 sisteminize gerekli yazılımları kuracağız. Bunun için terminalinizi açın ve aşağıdaki komutları çalıştırın:

sudo apt update
sudo apt upgrade -y
sudo apt install python3 python3-pip python3-dev postgresql postgresql-contrib nginx git -y

Bu komutlar, sisteminizi güncelleyecek, Python 3 ve gerekli geliştirme paketlerini, PostgreSQL veritabanı sistemini, Nginx web sunucusunu ve Git sürüm kontrol sistemini kuracaktır.

3. PostgreSQL Veritabanı Kurulumu ve Konfigürasyonu: Adım Adım

PostgreSQL’i kurduktan sonra, Django uygulamanız için bir veritabanı kullanıcısı ve veritabanı oluşturmanız gerekir.

sudo -u postgres psql

Bu komut PostgreSQL’e root yetkisiyle giriş yapmanızı sağlar. Aşağıdaki komutları çalıştırarak bir kullanıcı ve veritabanı oluşturacağız:

CREATE USER django_user WITH PASSWORD 'güçlü_şifreniz'; -- güçlü bir şifre belirleyin
CREATE DATABASE django_db OWNER django_user;
\q

Bu komutlar, django_user adında bir kullanıcı oluşturur ve django_db adında bir veritabanı oluşturur. güçlü_şifreniz yerine güçlü ve güvenli bir şifre kullanmayı unutmayın! \q komutu ise psql’den çıkış yapmanızı sağlar.

4. Python Sanal Ortamı Oluşturma ve Django Kurulumu: Yeni Başlayanlar İçin

Yeni bir proje dizini oluşturun ve içine django-project adında bir sanal ortam oluşturun:

mkdir django-project
cd django-project
python3 -m venv .venv
source .venv/bin/activate

Sanal ortamı etkinleştirdikten sonra, Django’yu yükleyebilirsiniz:

pip install django

Yeni bir Django projesi oluşturun:

django-admin startproject myproject

Ve bir uygulama ekleyin:

cd myproject
python manage.py startapp myapp

5. Django Projesinin PostgreSQL ile Bağlantısı: Orta Seviye

myproject/settings.py dosyasını açın ve DATABASES ayarlarını aşağıdaki gibi değiştirin:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'django_db',
        'USER': 'django_user',
        'PASSWORD': 'güçlü_şifreniz',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

Bu ayarlar, Django’nun PostgreSQL veritabanına bağlanmasını sağlar. Şifrenizi doğru girdiğinizden emin olun.

6. Nginx ve Gunicorn Konfigürasyonu: İleri Düzey

Nginx için bir konfigürasyon dosyası oluşturun:

sudo nano /etc/nginx/sites-available/myproject

Aşağıdaki içeriği ekleyin:

server {
    listen 80;
    server_name your_domain_or_ip; # Domain adınızı veya IP adresinizi girin

    location /static {
        alias /path/to/myproject/myproject/static; # Projenizin static dosyalarının yolunu girin
    }

    location / {
        proxy_pass http://unix:/path/to/myproject/myproject.sock; # Gunicorn soket yolunu girin
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Gunicorn için bir başlatma komutu oluşturun (örneğin, myproject.service):

sudo nano /etc/systemd/system/myproject.service

Aşağıdaki içeriği ekleyin:

[Unit]
Description=Gunicorn instance for myproject
After=network.target

[Service]
User=django_user # django_user kullanıcısını oluşturduğunuzdan emin olun
Group=www-data
WorkingDirectory=/path/to/myproject
ExecStart=/path/to/.venv/bin/gunicorn --bind unix:/path/to/myproject/myproject.sock myproject.wsgi:application
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Bu dosyaları kaydedin ve aşağıdaki komutları çalıştırın:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/myproject
sudo systemctl enable myproject
sudo systemctl start myproject
sudo systemctl restart nginx

Bu komutlar, Nginx ve Gunicorn’u başlatacak ve yapılandırma dosyalarını etkinleştirecektir.

7. Performans Optimizasyonu: Gerçek Dünya Senaryoları

Veritabanı Optimizasyonu: PostgreSQL’in EXPLAIN ANALYZE komutu ile sorgularınızın performansını analiz edebilir ve indeksleme stratejilerinizi geliştirebilirsiniz. Karmaşık sorguları optimize etmek için CTE (Common Table Expressions) kullanabilirsiniz.

Cacheleme: Django’nun cache framework’ünü kullanarak sık kullanılan verileri önbelleğe alabilirsiniz. Redis veya Memcached gibi önbellek sunucuları kullanarak performansı daha da artırabilirsiniz.

Statik Dosya Optimizasyonu: Statik dosyalarınızı (CSS, JavaScript, resimler) CDN (Content Delivery Network) kullanarak dağıtarak, sunucunuzdaki yükü azaltabilirsiniz. Ayrıca, statik dosyalarınızı sıkıştırarak (gzip) bant genişliği kullanımını optimize edebilirsiniz.

8. Uygulamanın Çalıştırılması ve Test Edilmesi: Vaka Analizi

Tüm adımları doğru bir şekilde tamamladıktan sonra, tarayıcınızda your_domain_or_ip adresine giderek Django uygulamanızı test edebilirsiniz. Eğer bir hata ile karşılaşırsanız, log dosyalarını kontrol ederek sorunun kaynağını belirleyebilirsiniz. Örneğin, Nginx log dosyası /var/log/nginx/error.log adresinde bulunur.

9. Sıkça Sorulan Sorular (SSS)

* Django’yu başka bir veritabanıyla kullanabilir miyim? Evet, Django MySQL, SQLite ve MongoDB gibi diğer veritabanlarıyla da uyumludur.

* Gunicorn’u başka bir WSGI sunucusu ile değiştirebilir miyim? Evet, uWSGI gibi alternatif WSGI sunucuları da kullanabilirsiniz.

* Nginx’i başka bir web sunucusu ile değiştirebilir miyim? Evet, Apache gibi diğer web sunucuları da kullanabilirsiniz.

* Uygulamam yavaş çalışıyorsa ne yapmalıyım? Performans optimizasyonu bölümünde belirtilen adımları izleyerek uygulamanızın performansını artırabilirsiniz.

* Güvenlik açıklarından nasıl korunabilirim? Düzenli güncellemeler yapmalı, güçlü şifreler kullanmalı ve güvenlik duvarı kurmalısınız. Ayrıca, Django’nun güvenlik özelliklerini kullanarak uygulamanızı güvenlik açıklarına karşı koruyabilirsiniz.

Sonuç

Bu makalede, Ubuntu 16.04 üzerinde Django, PostgreSQL, Nginx ve Gunicorn kullanarak bir web uygulaması kurulumunu ve konfigürasyonunu adım adım açıkladık. Performans optimizasyonu ipuçları ve sıkça sorulan sorularla birlikte, bu kılavuz Django projelerinizde size yol gösterecektir. Unutmayın ki, bu yapılandırma, projenizin büyüklüğü ve ihtiyaçlarına göre özelleştirilmelidir. Daha fazla bilgi ve ileri düzey konular için [Fatih Soysal’ın web sitesini](https://fatihsoysal.com) ziyaret edebilirsiniz.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.