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’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.