UWSGI ve NGINX ile Django Uygulaması Nasıl Kullanılır

Django, kodunuzu test etmek için oldukça basit bir web sunucusu ile gelir ve bu sunucu ile siteyi test aşamasında sorunsuz bir şekilde çalıştırıp kullanabiliriz, ancak uygulamanın geliştirilme aşaması tamamlandıktan sonra yayına alma sırasında bu web sunucunun kullanılması önerilmez.

Bu yüzden araya harici bir web sunucusu eklememiz gerekir. Bunun için biz makalemizde uWSGI kullanacağız. Diğer uygulamalara göre hız bakımından olumlu yönde bir artış söz konusu olacak. Ayrıca statik içerikleri de NGINX ile sunacağız.

Kullanacağımız yapı ise şu şekilde olacak

uwsgi django nginx diagrami mertcan gökgöz
UWSGI ve NGINX ile Django Uygulaması Nasıl Kullanılır 2

uWSGI’ye socket oluşturmasını sağlıyoruz ve protokol aracılığı ile NGINX kardeşimizin servis etmesini ve dış dünyaya açılmasını sağlıyoruz.
Django 1.4 sürümünden sonra zaten wsgi modülü otomatik kendisi oluşturduğundan dolayı python tarafında yapacağımız bir şey kalmamış oluyor. Sadece modülün yerini bulmamız ve not almamız bizim için yeterli

Şimdi gerekli enstrümanların kurulumuna geçiyoruz. Debian 9 için aşağıdaki işlemleri yaparak bize lazım olan paketleri sisteme dahil ediyoruz.

apt install uwsgi nginx

uWSGI sisteme dahil edileceği sırada. Sistem için NGINX kurulumu da yapılacak isterseniz güncel sürüme yükseltebilirsiniz. Mevcut NGINX sürümü 1.10.3 kurulacak.
NGINX kurulduktan sonra yapılandırma dosyamız içerisine aşağıdaki satırları ekliyoruz. Bu sayede dış dünya ile django uygulamamız iletişim kurmuş oluyor.

    location / {
        include         uwsgi_params;
        uwsgi_pass      127.0.0.1:8000;
    }

Yaptıklarımız bunlarla da sınırlı kalmayacak. uWSGI üzerinde bir takım ayarlamalarda yapmamız gerekecek
Uygulamamız için örnek oluşturması adına benim kullandığım uwsgi.ini yapılandırma dosyası aşağıdaki gibidir.

[uwsgi]
plugins = python3
thread=3
master=1
max-requests = 50000
env = DJANGO_SETTINGS_MODULE=TPaste.settings
module = TPaste.wsgi:application
chdir = /home/mertcan/myproject
socket = 127.0.0.1:8000
logto = /tmp/django.log

Şimdi bu işlemleri otomatize etmek ve birazda bizim işlerimizi kolaylaştırmak için supervisor kuralım ve üzerinde gereken yapılandırmayı yapalım. Bunun için sisteme aşağıdaki komut aracılığı ile enstrümanın kurulumunu tamamlayalım.

apt install supervisor

Django uygulamamız için gereken yapılandırmayı /etc/supervisor/conf.d/ içerisine yapacağız. Benim oluşturduğum ve kullanacağım yapılandırma şu şekilde

[program:uwsgi]
user = mertcan
command=/usr/local/bin/uwsgi --ini /home/mertcan/uwsgi.ini
autostart=true
autorestart=true
stderr_logfile = /var/log/uwsgi_err.log
stdout_logfile = /var/log/uwsgi_out.log
stopsignail = QUIT

Yapılandırma dosyamızı supervisorümüze kabul ettirmemiz gerekiyor bunun için ise supervisorctl reread komutunu vermeniz yeterli bu sayede yapılandırma dosyalarını yenilemiş oluyoruz. Oluşturduğumuz yapılandırma dosyasındaki değişikliği tamamlamak için supervisorctl update komutu ile işlemlerimizi sonlandırıyoruz.


Setting up Django and your web server with uWSGI and nginx

Share this:

Leave a Comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.