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=
Indholdsfortegnelse
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.