Како поставити Django са Postgres, Nginx и Gunicorn на Ubuntu-у

Uvod

Django, popularan Python web framework, nudi sveobuhvatan skup alata za brzo kreiranje i održavanje web aplikacija. U kombinaciji sa Postgres-om, moćnim sistemom za upravljanje relacionim bazama podataka, Nginx-om, web serverom visokih performansi, i Gunicorn-om, WSGI HTTP serverom, Django omogućava stvaranje robusne i efikasne platforme za hostovanje web aplikacija. Ovaj detaljni vodič će vas voditi kroz proces instalacije i konfiguracije Django-a sa Postgres-om, Nginx-om i Gunicorn-om na Ubuntu 20.04 LTS serveru.

Instalacija potrebnog softvera

1. Ažuriranje sistema

Započnite ažuriranjem keša menadžera paketa i instaliranjem najnovijih verzija instaliranih paketa:

    sudo apt update
    sudo apt upgrade

2. Instalacija Python 3 i PIP

Django zahteva Python 3 i PIP, menadžer paketa za Python. Instalirajte ih pomoću sledeće naredbe:

    sudo apt install python3 python3-pip

3. Instalacija virtuelnog okruženja

Virtuelna okruženja izoluju Python okruženja, sprečavajući sukobe verzija i zavisnosti. Instalirajte virtuelno okruženje koristeći ovu naredbu:

   sudo apt install python3-venv

4. Instalacija Django-a

Sada instalirajte Django u vaše virtuelno okruženje:

    python3 -m venv my_django_env
    source my_django_env/bin/activate
    pip install Django

5. Instalacija Postgres-a

    sudo apt install postgresql postgresql-contrib

6. Instalacija Nginx-a

    sudo apt install nginx

7. Instalacija Gunicorn-a

    pip install gunicorn

Konfiguracija sistema

1. Kreiranje Django projekta

Napravite novi direktorijum za vaš Django projekat i inicijalizujte ga:

    mkdir my_django_project
    cd my_django_project
    django-admin startproject mysite

2. Konfiguracija Django postavki

Otvorite datoteku settings.py u direktorijumu mysite i dodajte sledeće postavke:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'mydjangoapp',
            'USER': 'django_user',
            'PASSWORD': 'my_password',
            'HOST': 'localhost',
            'PORT': '5432',
        }
    }

Zamenite mydjangoapp, django_user, i my_password sa odgovarajućim vrednostima za vaš projekat.

3. Kreiranje Postgres baze podataka

Prijavite se na Postgres koristeći postgres korisnika i kreirajte bazu podataka za Django aplikaciju:

    sudo -u postgres psql
    CREATE DATABASE mydjangoapp;
    CREATE USER django_user WITH PASSWORD 'my_password';
    GRANT ALL PRIVILEGES ON DATABASE mydjangoapp TO django_user;
    \q

4. Pokretanje Django migracija

Migracije kreiraju tabele i strukture neophodne za vašu Django aplikaciju:

    python manage.py migrate

5. Konfiguracija Nginx-a

Otvorite datoteku /etc/nginx/sites-available/mysite i dodajte sledeću konfiguraciju:

    server {
        listen 80;
        server_name mysite.example.com;

        location / {
            proxy_pass http://127.0.0.1:8000;
        }
    }

Zamenite mysite.example.com sa imenom domena ili IP adresom vašeg servera.

6. Konfiguracija Gunicorn-a

Napravite datoteku mysite.conf u direktorijumu sa konfiguracionim datotekama Gunicorn-a i dodajte sledeću konfiguraciju:

    [uwsgi]
    socket = 127.0.0.1:8000
    protocol = http
    num-processes = 4
    enable-threads = true
    wsgi-file = mysite/wsgi.py

7. Povezivanje Nginx-a sa Gunicorn-om

Otvorite datoteku /etc/nginx/nginx.conf i dodajte sledeći blok:

    upstream django_app {
        server 127.0.0.1:8000;
    }

Zatim povežite Nginx sa Gunicorn-om dodavanjem sledećeg bloka u datoteku mysite konfiguracije:

    location / {
        proxy_pass http://django_app;
    }

Pokretanje aplikacije

1. Startovanje Postgres-a

    sudo systemctl start postgresql

2. Startovanje Gunicorn-a

    gunicorn --config mysite.conf mysite.wsgi

3. Startovanje Nginx-a

    sudo systemctl start nginx

4. Provera da li aplikacija radi

Pristupite svojoj aplikaciji u pretraživaču na http://mysite.example.com. Ako vidite Django dobrodošlicu, vaša aplikacija radi ispravno.

Zaključak

Instaliranjem i konfiguracijom Django-a sa Postgres-om, Nginx-om i Gunicorn-om na Ubuntu 20.04 LTS serveru, uspešno ste kreirali robustan i efikasan sistem za hostovanje web aplikacija. Ovaj vodič vas je detaljno proveo kroz svaki korak, od instalacije do konfiguracije. Sada možete razvijati, testirati i implementirati svoje Django aplikacije brzo i lako na vašem Ubuntu serveru.

Često postavljana pitanja (FAQs)

1. Koje su prednosti korišćenja Postgres-a sa Django-om?
Postgres je sistem za upravljanje relacionim bazama podataka visokih performansi, sa odličnom pouzdanošću i podrškom za napredne funkcije poput ACID transakcija i upita zasnovanih na indeksima.

2. Kako ažurirati Django verziju?
Za ažuriranje Django-a, prvo aktivirajte vaše virtuelno okruženje, a zatim izvršite sledeću komandu: pip install Django --upgrade.

3. Kako postaviti Django aplikaciju na produkcijskom serveru?
Koristite proksi server, kao što je Nginx ili Apache, ispred Django aplikacije za poboljšane performanse, bezbednost i skalabilnost.

4. Kako nadograditi Django projekat na noviju verziju?
Izvršite django-admin upgrade komandu iz direktorijuma vašeg Django projekta da proverite da li postoje migracije za nadogradnju projekta.

5. Kako konfigurisati SSL/TLS za Nginx na Ubuntu-u?
Da biste omogućili SSL/TLS za Nginx, potrebno je da kreirate SSL sertifikat i ključ, a zatim ih dodate u konfiguraciju Nginx-a.

6. Kako implementirati keširanje u Django-u?
Možete koristiti