So richten Sie Django mit Postgres, Nginx und Gunicorn unter Debian 11 ein

Django mit Postgres, Nginx und Gunicorn unter Debian 11 einrichten

Einleitung

Django ist ein beliebtes Python-Webframework, das für den Aufbau skalierbarer und sicherer Webanwendungen entwickelt wurde. In Kombination mit Postgres, einer leistungsstarken relationalen Datenbank, Nginx, einem Webserver, und Gunicorn, einem WSGI-HTTP-Server, bildet es einen robusten und effizienten Stack für den Betrieb von Django-Anwendungen. Dieser Leitfaden führt Sie Schritt für Schritt durch die Einrichtung von Django mit Postgres, Nginx und Gunicorn unter Debian 11.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:

– Einen Debian 11-Server
– Einen Nicht-Root-Benutzer mit Sudo-Berechtigungen
– Einen Domainnamen (optional)
– Ein SSL-Zertifikat (optional)

Schritte

1. Postgres installieren

bash
sudo apt update
sudo apt install postgresql postgresql-contrib

Richten Sie den Postgres-Dienst ein:

bash
sudo systemctl enable postgresql
sudo systemctl start postgresql

Erstellen Sie einen Datenbankbenutzer und eine Datenbank für Django:

bash
sudo -u postgres psql -c "CREATE USER django WITH PASSWORD 'password';"
sudo -u postgres psql -c "CREATE DATABASE my_django_db OWNER django;"

2. Python-Umgebung einrichten

Installieren Sie Python 3 und Pip:

bash
sudo apt install python3 python3-pip

Erstellen Sie eine virtuelle Umgebung für Django:

  Bleiben Sie sicher mit diesen 7 besten Chromebook-VPNs

bash
python3 -m venv venv
source venv/bin/activate

Installieren Sie Django und andere Abhängigkeiten:

bash
pip install django psycopg2-binary

3. Django-Projekt erstellen

Erstellen Sie ein neues Django-Projekt:

bash
django-admin startproject my_django_project
cd my_django_project

Starten Sie den Django-Entwicklungsserver:

bash
python3 manage.py runserver

4. Nginx installieren

bash
sudo apt install nginx

Einrichten der Nginx-Konfiguration:


sudo nano /etc/nginx/sites-available/my_django_project

Fügen Sie die folgende Konfiguration ein:


server {
listen 80;
server_name example.com;

Ersetzen Sie dies durch Ihren Domainnamen

location / {
proxy_pass http://localhost:8000;

Port Ihres Django-Entwicklungsservers

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
}

Aktivieren Sie die neue Konfiguration:

bash
sudo ln -s /etc/nginx/sites-available/my_django_project /etc/nginx/sites-enabled/my_django_project
sudo systemctl restart nginx

5. Gunicorn installieren

bash
pip install gunicorn

Erstellen Sie eine Gunicorn-Konfigurationsdatei:


sudo nano /etc/systemd/system/gunicorn.service

Fügen Sie die folgende Konfiguration ein:


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

[Service]
User=django

Der Benutzer, unter dem Ihr Django-Projekt läuft

Group=www-data

Die Gruppe, unter der Ihr Django-Projekt läuft

WorkingDirectory=/home/django/my_django_project

Der Pfad zu Ihrem Django-Projekt

ExecStart=/home/django/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock my_django_project.wsgi:application

[Install]
WantedBy=multi-user.target

Aktivieren Sie den Gunicorn-Dienst:

bash
sudo systemctl daemon-reload
sudo systemctl enable gunicorn
sudo systemctl start gunicorn

6. Konfigurieren von Django mit Gunicorn

Öffnen Sie die Datei settings.py Ihres Django-Projekts:

bash
nano my_django_project/settings.py

Suchen Sie den Eintrag ALLOWED_HOSTS und fügen Sie den Domainnamen Ihrer Website hinzu:

python
ALLOWED_HOSTS = ['example.com', 'www.example.com']

Legen Sie den WSGI_APPLICATION auf den Gunicorn-Anwendungsobjektpfade fest:

python
WSGI_APPLICATION = 'my_django_project.wsgi.application'

7. SSL konfigurieren (optional)

Wenn Sie ein SSL-Zertifikat haben, können Sie es wie folgt einrichten:


sudo nano /etc/nginx/sites-available/my_django_project

Fügen Sie der Serverblock-Konfiguration Folgendes hinzu:


listen 443 ssl;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/certificate.key;

Starten Sie Nginx neu, um die Änderungen anzuwenden:

bash
sudo systemctl restart nginx

Fazit

Sie haben Django erfolgreich mit Postgres, Nginx und Gunicorn unter Debian 11 eingerichtet. Dieser Stack bietet Ihnen eine zuverlässige und effiziente Umgebung für den Betrieb Ihrer Django-Webanwendungen. Denken Sie daran, Ihre Anwendung regelmäßig zu aktualisieren und Sicherheitsmaßnahmen zu implementieren, um sie vor Bedrohungen zu schützen.

Häufig gestellte Fragen (FAQs)

1. Wie kann ich auf die Postgres-Datenbank zugreifen?

Sie können die folgenden Befehle verwenden:

bash

Von der Konsole

psql -U django -d my_django_db

Von einem Python-Skript

import psycopg2
conn = psycopg2.connect(database="my_django_db", user="django", password="password")

2. Wie kann ich den Gunicorn-Server neu starten?

bash
sudo systemctl restart gunicorn

3. Wie kann ich auf die Django-Verwaltungsoberfläche zugreifen?

Fügen Sie die folgende URL in Ihren Browser ein:


http://your_domain_name/admin/

4. Wie kann ich weitere Django-Anwendungen zu meinem Projekt hinzufügen?

Erstellen Sie eine neue Django-App im Projektverzeichnis und registrieren Sie sie in der INSTALLED_APPS-Liste in settings.py.

5. Kann ich eine andere Datenbank als Postgres verwenden?

Ja, Django unterstützt auch andere Datenbanken wie MySQL, SQLite und Oracle.

6. Wie kann ich die Leistung meines Django-Stacks verbessern?

Sie können Folgendes versuchen:

– Verwenden Sie Caching.
– Optimieren Sie Ihre SQL-Abfragen.
– Verringern Sie die Anzahl der gleichzeitigen Anfragen.

7. Wie sichere ich meine Django-Anwendung?

Implementieren Sie folgende Sicherheitsmaßnahmen:

– Verwenden Sie sichere Passwörter.
– Aktivieren Sie die Zwei-Faktor-Authentifizierung.
– Verwenden Sie ein Web Application Firewall (WAF).

8. Wo kann ich weitere Informationen zu Django finden?

* Django-Dokumentation
* Django REST Framework-Dokumentation
* Django Girl’s Tutorial