Sådan konfigureres Django med Postgres, Nginx og Gunicorn på Ubuntu

Sådan konfigureres Django med Postgres, Nginx og Gunicorn på Ubuntu

Django er et kraftfuldt og populært Python-framework til webudvikling. Dens fleksible arkitektur og omfattende funktionalitet gør det til et fremragende valg til en lang række webapplikationer. For at fuldende Django-oplevelsen skal vi dog kombinere det med andre værktøjer og teknologier, der vil hjælpe os med at forbedre ydeevnen, sikkerheden og den generelle brugeroplevelse. I denne omfattende vejledning vil vi lede dig gennem trin-for-trin processen med at konfigurere Django med Postgres, Nginx og Gunicorn på Ubuntu.

  Sådan aktiverer du Screenshot Editor i Google Chrome

Introduktion til Django, Postgres, Nginx og Gunicorn

Django

Django er et åbent kildekode webframework skrevet i Python. Det følger model-template-view (MTV) arkitekturen og er kendt for sin brugervenlighed, sikkerhedskontroller og store samfundsstøtte.

Postgres

Postgres (også kendt som PostgreSQL) er et kraftfuldt open source objekt-relationelt databasesystem (ORDBMS). Det er kendt for sin robusthed, ydeevne, datainte integritet og udvidelighed.

Nginx

Nginx er en open source webserver, der er kendt for sin hastighed, stabilitet og evne til at håndtere høje trafikbelastninger. Det kan konfigureres som en reverse proxy, der videresender anmodninger til Django-applikationen og håndterer statisk indhold for at forbedre ydeevnen.

  Hvilken CSS-visningsstil er bedst for dig

Gunicorn

Gunicorn er en WSGI HTTP-server, der fungerer som en interface mellem Django-applikationen og Nginx. Det giver flere arbejdsprocesser, som håndterer indkommende anmodninger parallelt, hvilket forbedrer applikationens ydeevne.

Forudsætninger

Før vi begynder, skal du sørge for at have følgende forudsætninger:

– Et Ubuntu-system (version 18.04 eller nyere anbefales)
– En bruger med sudo-rettigheder
– Python 3.6 eller nyere
– Git installeret

Trin-for-trin vejledning

1. Installer Python og opret et virtuelt miljø


sudo apt update
sudo apt install python3-pip
python3 -m venv venv
source venv/bin/activate

2. Installer Django


pip install Django

3. Opret et Django-projekt


django-admin startproject myproject
cd myproject

4. Konfigurer databasesetup med Postgres

Installer Postgres


sudo apt install postgresql

Opret en databasebruger og database


sudo -u postgres createuser -P django
sudo -u postgres createdb -O django mydb

Konfigurer Django til at bruge Postgres

Rediger filen settings.py i Django-projektet:


DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb',
'USER': 'django',
'PASSWORD': 'postgres-password',
'HOST': 'localhost',
'PORT': '5432',
}
}

5. Konfigurer Nginx

Installer Nginx

  Sådan tilsluttes iPhone til Samsung TV


sudo apt install nginx

Opret en serverblok

Opret en ny fil /etc/nginx/sites-available/myproject med følgende indhold:


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

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /static/ {
alias /home/user/myproject/myproject/static/;
}
}

Aktivér serverblokken


sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/

6. Konfigurer Gunicorn

Installer Gunicorn


pip install gunicorn

Opret en Gunicorn-konfigurationsfil

Opret en fil gunicorn_config.py i Django-projektet:


bind = '127.0.0.1:8000'
workers = 3

7. Kør Django-applikationen


gunicorn --config gunicorn_config.py myproject.wsgi:application

Konklusion

Ved at kombinere Django med Postgres, Nginx og Gunicorn har vi optimeret ydeevnen, sikkerheden og brugeroplevelsen af vores Django-webapplikation. Denne konfiguration giver os mulighed for at håndtere flere samtidige anmodninger, forbedre databaseresponstiden og levere statisk indhold hurtigere. Nu er vores Django-applikation klar til at gå live på internettet og servicere brugere med pålidelighed og effektivitet.

Ofte stillede spørgsmål

1. Hvad er fordelene ved at bruge Gunicorn med Django?

* Forbedret håndtering af samtidige anmodninger
* Parallellisering af arbejdsprocesser

2. Hvordan påvirker Nginx ydeevnen af Django-applikationen?

* Tjener som omvendt proxy og videresender anmodninger
* Håndtering af statisk indhold, hvilket frigør Django fra denne opgave

3. Er Postgres den foretrukne database til Django-applikationer?

* Ikke nødvendigvis, men det er et populært valg på grund af dets robusthed, ydeevne og community-støtte

4. Kan jeg ændre portnummeret for Gunicorn?

* Ja, du kan ændre det i gunicorn_config.py-filen

5. Hvordan kan jeg fejlfinde problemer med Django-applikationen?

* Brug Django debug-værktøjer såsom pdb og logging

6. Kan jeg implementere SSL for Nginx?

* Ja, ved at bruge Let’s Encrypt eller et SSL-certifikat

7. Hvordan kan jeg overvåge ydeevnen af Django-applikationen?

* Brug værktøjer såsom New Relic eller Prometheus

8. Er det muligt at distribuere Django-applikationen på en skyplatform?

* Ja, ved hjælp af tjenester som AWS Elastic Beanstalk eller Heroku

9. Findes der alternativer til Nginx til brug med Django?

* Apache HTTP Server
* Caddy

10. Hvad er de bedste praksisser for at sikre Django-applikationer?

* Implementer CSRF-beskyttelse
* Brug HTTPS
* Håndtér brugerinput korrekt