07.06.2023

Sistemi bir Python Django projesi için yapılandırma

Giriş

Django, Python'da web uygulamaları geliştirmek için ücretsiz ve açık kaynaklı bir çerçevedir. Eksiksiz web siteleri ve web uygulamaları geliştirmek için güçlü araçlar sağlar. Geliştiricilerin kaliteyi kaybetmeden hızlı ve verimli bir şekilde uygulamalar oluşturmasına olanak tanır.

Django, web geliştirmedeki çok yönlülüğü ve gücü ile ünlüdür. Python'da uygulamalar oluşturmak için güçlü bir çerçevedir ve araç ve modül kütüphanesi ile geliştirme süresini azaltmaya yardımcı olur. Güçlü şablonlama ve otomatik URL oluşturma özellikleriyle de bilinir. Bu çerçeve, gelen verileri otomatik olarak kontrol ettiği ve saldırıları önlediği için iyi bir uygulama güvenliği de sağlar.

Diğer çerçevelerle karşılaştırma

Postgres yüksek güvenilirliği ve performansı ile bilinir. Ayrıca, analitik işlevler ve coğrafi mekansallaştırma ile başa çıkmak için araçlar da dahil olmak üzere veri analizi için gelişmiş özelliklere sahiptir. İşlevselliğini tamamlayabilecek çok çeşitli eklentiler de vardır.

Gunicorn, kullanım kolaylığı ve yüksek performansı ile ünlüdür. Tek bir sunucuda birden fazla isteği işleyebilen basit bir Python işlem yöneticisidir. Gunicorn, HTTP/1.1 protokolü desteği, otomatik yeniden başlatma ve vorker'ları ölçeklendirme gibi birçok yerleşik özelliğe sahiptir. Django ve Flask gibi diğer web çerçeveleri ile birlikte de kullanılabilir.

Nginx en popüler ve güvenilir web sunucularından biridir. Kurulumu ve yapılandırması kolaydır, yüksek performansa ve düşük kaynak kullanımına sahiptir, web uygulamalarını ve dinamik web sitelerini destekler ve statik içerik itme, proxy oluşturma, URL yeniden yönlendirme ve yönlendirme gibi birçok farklı özelliğe sahiptir. Temel olarak web trafiğini idare etmenin yanı sıra hata toleransı ve yüksek performans için de kullanılabilir.

Başlarken

Yazılım paketlerini güncelleyin.

sudo apt update

Aşağıdaki yazılımı yükleyin.

sudo apt install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx curl

Veritabanını yapılandırın

Postgres'e giriş yapın.

sudo -u postgres psql

Proje için bir veritabanı oluşturma komutu.

CREATE DATABASE "yournameproject";

Bir veritabanı, bir kullanıcı oluşturun ve daha hızlı çalışması için veritabanımızı optimize edin.

CREATE DATABASE "yournameproject"

Veritabanı oluşturuldu ve belirli parametreler üzerinde değişiklik yapmamız gerekiyor.

CREATE USER "YourUsername" WITH PASSWORD 'password';

Kullanıcı başarıyla oluşturuldu ve "DB "mizi hızlandırmak için parametreleri değiştirerek "DB "yi optimize etmeye karar verdim.

ALTER ROLE "Yourproject" SET timezone TO 'UTC';
ALTER ROLE "Yourproject" SET default_transaction_isolation TO 'read committed';
ALTER ROLE "Yourproject" SET client_encoding TO 'utf8';

Bu parametreler, kullanıcıya bir parola ile veritabanına bağlanması için bir hesap vermek üzere oluşturulur.

Ardından, kullanıcının rolü varsayılan UTC saat dilimi, varsayılan "Tamamen Oku" işlem yalıtımı ve varsayılan UTF-8 istemci kodlaması ile yapılandırılacaktır.

Kullanıcıya "DB "yi yönetmesi için erişim izni verildi.

GRANT ALL PRIVILEGES ON DATABASE "yourproject" TO "myprojectuser";

Proje için bir çalışma alanı oluşturma

Bir "DB" oluşturdum ve şimdi projenin geri kalan gereksinimlerine geçebiliriz. İşleri biraz daha kolaylaştırmak için, ihtiyacımız olan tüm gereksinimleri sanal bir ortamda kurdum.

Bu komutları yazalım:

sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv

"virtualenv" aracını kurduktan sonra projemizi şekillendirmeye başlıyorum.
Proje için dosyalarımızı saklayacağımız bir dizin oluşturdum ve bu dizine gidiyorum

mkdir ~/yourprojectdir
cd ~/myprojectdir

Dizinde sanal bir ortam oluşturuldu.

virtualenv yourprojectenv

virtualenv, farklı projeler için izole ortamlar oluşturmanıza ve kütüphanelerin ve uygulamaların farklı sürümlerini kullanmanıza olanak tanıyan bir komuttur

Bu, kuruluştaki tüm projeler için aynı teknoloji yığınının korunmasına olanak tanıyarak uyumsuzluk ve hata riskini azaltır.

Bu dizin hemen Python'un yerel sürümünü ve paket yönetim sistemini içerecektir.
Projemize gereksinimleri atamadan önce sanal ortamı çalıştırmamız gerekiyor. Bu komutu yazın:

source yourprojectenv/bin/activate

Komut satırı değişecek ve artık Python sanal ortamında çalıştığınızı gösterecektir. Şu şekilde olacaktır.

Sanal ortamı çalıştırırken gerekli bileşenleri yükleyin.

pip install django gunicorn psycopg2-binary

Proje oluşturma

Çerçeve için zaten bir proje dizini oluşturulmuştur, bu nedenle başlatma yolunu belirtmemiz gerekir, çünkü ikinci dizin içinde kontrol komut dosyası kodunun bulunduğu alt dizini içerir.

django-admin startproject yourproject ~/yourprojectdir

Bundan sonra, oluşturulan proje dosyasında birkaç parametreyi değiştirmeniz gerekecektir. Ayarlar dosyasını herhangi bir metin editörü ile açın.

nano ~/yourprojectdir/yourproject/settings.py

Şimdi ayarları değiştirmemiz gerekiyor.

Ardından aşağı kaydırın ve şifreyi sağlayan bölümü bulun, adı "DB" dir.

Ayrıca DATABASES dizesini arayın, bu dizeyi verileriniz için yapılandırın.

Aşağı kaydırın ve statik dosyaları depolamak istediğiniz yeri belirtmek için parametreyi ekleyin.

Son yapılandırma

Yönetim komut dosyalarını kullanarak "DB" şemasını taşıyacağım.

~/yourprojectdir/manage.py
~/yourprojectdir/manage.py migrate

Proje için bir yönetici kullanıcı oluşturun.

~/yourprojectdir/manage.py createsuperuser

Verilen dizindeki tüm statik içeriği toplar.

~/myprojectdir/manage.py collectstatic

Komutun doğrulanması gerekir. Bundan sonra, tüm dosyalar projenin "statik" dizinine taşınacaktır.

Ayrıca proje için kullanılacak portu da açın.

sudo ufw allow 2222

Kontrol Et

Framework sunucusunu başlatarak projemizi kontrol edin.

~/myprojectdir/manage.py runserver your_ip:2222

Çerçevenin çalışıp çalışmadığını kontrol etmek için web tarayıcısına gidin.

Web kaynağına yetki verdikten sonra kontrol paneline yönlendirilirsiniz.

Çıktı

Bu yazıda size Ubuntu 20.04 sisteminizi Postgres veritabanı; Gunicorn web sunucusu ve yapılandırılmış Ngnix proxy ile bir Django projesi başlatmak için nasıl hazırlayacağınızı gösterdim.