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

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

Introduktion

Django* er et populært Python-webframework, der bruges til at udvikle webapplikationer. **Postgres** er en open source-objektrelational databasehåndteringssystem. **Nginx** er en webserver, der er kendt for sin høje ydeevne og lave hukommelsesforbrug. *Gunicorn er en WSGI HTTP-server, der bruges til at køre Django-applikationer.

I denne vejledning vil vi forklare, hvordan du konfigurerer Django med Postgres, Nginx og Gunicorn på Debian 11. Vi vil dække følgende trin:

* Installation af Postgres
* Konfiguration af Postgres
* Installation af Django
* Konfiguration af Django
* Installation af Nginx
* Konfiguration af Nginx
* Installation af Gunicorn
* Konfiguration af Gunicorn
* Konfiguration af ufw-firewall

H2. Installation af Postgres

Trin 1: Opdater pakkelisten


sudo apt update

Trin 2: Installer Postgres


sudo apt install postgresql

Trin 3: Start Postgres


sudo systemctl start postgresql

Trin 4: Tillad Postgres-porte i ufw


sudo ufw allow 5432/tcp

H3. Konfiguration af Postgres

Trin 1: Opret en databasebruger


sudo -u postgres psql


postgres=

CREATE USER django_user WITH PASSWORD 'django_password';

Trin 2: Opret en database


postgres=

CREATE DATABASE django_db;

Trin 3: Tildel tilladelser


postgres=

GRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;

H2. Installation af Django

Trin 1: Opret et virtuelt miljø


python3 -m venv myenv

Trin 2: Aktivér det virtuelle miljø


source myenv/bin/activate

Trin 3: Installer Django


pip install django

H2. Konfiguration af Django

Trin 1: Opret et nyt Django-projekt


django-admin startproject mysite

Trin 2: Opret en app


python manage.py startapp myapp

Trin 3: Konfigurer settings.py

Rediger mysite/settings.py og tilføj følgende linjer:

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

H2. Installation af Nginx

Trin 1: Tilføj Nginx-lagret


sudo apt install software-properties-common


sudo add-apt-repository ppa:nginx/stable

Trin 2: Opdater pakkelisten


sudo apt update

Trin 3: Installer Nginx


sudo apt install nginx

Trin 4: Start Nginx


sudo systemctl start nginx

H3. Konfiguration af Nginx

Trin 1: Opret et serverblok

Opret en ny fil (/etc/nginx/sites-available/mysite.conf):


server {
listen 80;
server_name your_domain_name;

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

Trin 2: Aktivér serverblokken


sudo ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/

Trin 3: Genindlæs Nginx-konfiguration


sudo systemctl reload nginx

H2. Installation af Gunicorn

Trin 1: Installer Gunicorn


sudo pip install gunicorn

Trin 2: Opret en systemservice

Opret en ny fil (/etc/systemd/system/gunicorn.service):


[Unit]
Description=Gunicorn service
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/home/project/mysite
Environment="PATH=/home/project/myenv/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/project/myenv/bin/gunicorn --bind 127.0.0.1:8000 mysite.wsgi
Restart=always

[Install]
WantedBy=multi-user.target

Trin 3: Start Gunicorn-service


sudo systemctl start gunicorn

Trin 4: Tillad Gunicorn-porte i ufw


sudo ufw allow 8000/tcp

H2. Konfiguration af ufw-firewall

Trin 1: Åbn alle nødvendige porte


sudo ufw default allow outgoing
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5432/tcp
sudo ufw allow 8000/tcp

Trin 2: Aktivér ufw


sudo ufw enable

Konklusion

Vi har nu konfigureret Django med Postgres, Nginx og Gunicorn på Debian 11. For at gennemføre konfigurationen fuldt ud skal du erstatte your_domain_name i Nginx-serverblokken med dit eget domænenavn og sørge for, at Django-projektets mappe ligger i stien mysite i Gunicorn-systemtjenesten. Ved at følge disse trin kan du bygge og implementere pålidelige og højtydende webapplikationer med Django.

Ofte stillede spørgsmål

Q1. Hvilke fordele tilbyder Django i forhold til andre webframeworks?
A1. Django er let at bruge, tilbyder indbygget sikkerhed og har et stort fællesskab.

Q2. Er Postgres den eneste database, der kan bruges med Django?
A2. Nej, Django understøtter også MySQL, SQLite og Oracle.

Q3. Hvad er fordelene ved at bruge Nginx som webserver?
A3. Nginx er højt ydende, brugervenlig og har en lav hukommelsesbrug.

Q4. Hvorfor er det vigtigt at bruge en systemservice til Gunicorn?
A4. En systemservice sikrer, at Gunicorn kører kontinuerligt, selv efter systemgenstart.

Q5. Hvad er formålet med ufw-firewall?
A5. Ufw er et værktøj til at konfigurere en firewall og beskytte dit system mod uautoriseret adgang.

Q6. Hvordan kan jeg oprette en superbruger til min Django-database?
A6. Kør kommandoen python manage.py createsuperuser i Django-projektmappen.

Q7. Hvordan kan jeg tilpasse Django-administrationsgrænsefladen?
A7. Rediger filen admin.py i Django-appen efter eget valg.

Q8. Hvordan kan jeg deploye en Django-applikation til produktion?
A8. Brug en platform som Heroku, AWS Elastic Beanstalk eller Digital Ocean App Platform.

Q9. Kan Django bruges til at oprette RESTful API’er?
A9. Ja, Django REST Framework er en populær udvidelse til oprettelse af RESTful API’er.

Q10. Hvordan kan jeg få hjælp til fejlfinding af Django-applikationer?
A10. Tjek Django-dokumentationen, søg i onlinefora eller brug Django-fejlfindingsværktøjerne.

  25 Excel-formler og tastaturgenveje for at spare tid og kræfter toadmin.dk