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

Django mit Postgres, Nginx und Gunicorn unter Ubuntu einrichten

Einführung

Django, ein in Python verfasstes, leistungsstarkes Web-Framework, erleichtert die Entwicklung von Webanwendungen durch vielfältige Funktionen, darunter ORM (Object-Relational Mapping), ein Templatesystem und URL-Routing.

Postgres, ein quelloffenes, relationales Datenbankmanagementsystem (RDBMS), ist für seine Zuverlässigkeit, Skalierbarkeit und die Unterstützung von ACID-Transaktionen (Atomizität, Konsistenz, Isolation, Dauerhaftigkeit) bekannt.

Nginx, ein hochperformanter Webserver, zeichnet sich durch seine Geschwindigkeit, Stabilität und Anpassbarkeit aus und wird häufig als Reverse-Proxy sowie Lastenverteiler in komplexen Webanwendungen genutzt.

Gunicorn, ein WSGI (Web Server Gateway Interface) HTTP-Server, ist speziell für Django-Anwendungen optimiert und bietet asynchrone Ereignisverarbeitung, die einen hohen Durchsatz und geringe Latenzzeiten ermöglicht.

Dieses Tutorial zeigt Ihnen die Einrichtung von Django mit Postgres, Nginx und Gunicorn unter Ubuntu 20.04 LTS. Die folgenden Schritte werden dabei behandelt:

1. Installation von Django und Postgres
2. Konfiguration von Django mit Postgres
3. Einrichtung und Anpassung von Nginx
4. Installation und Konfiguration von Gunicorn
5. Test der Anwendung

Tags: Django, Postgres, Nginx, Gunicorn, Ubuntu

Installation von Django und Postgres

1. Installation von Python 3

Überprüfen Sie zunächst, ob Python 3 auf Ihrem System installiert ist:


sudo apt-get update
sudo apt-get install python3 python3-pip

2. Installation von Django

Django wird mithilfe von pip installiert:


sudo pip3 install django

3. Installation von Postgres

Postgres installieren Sie mit dem Paketmanager apt:


sudo apt-get install postgresql postgresql-contrib

4. Konfiguration von Postgres

Starten Sie den Postgres-Dienst und setzen Sie ein Passwort für den Postgres-Benutzer:


sudo systemctl start postgresql
sudo passwd postgres

Konfiguration von Django mit Postgres

1. Erstellung eines Django-Projekts

Ein neues Django-Projekt wird wie folgt angelegt:


django-admin startproject myproject

2. Datenbankeinstellungen

Öffnen Sie die Datei settings.py in Ihrem Projektverzeichnis und bearbeiten Sie die Datenbankkonfiguration:


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

Ersetzen Sie postgrespassword durch das von Ihnen gewählte Passwort.

3. Migrationen ausführen

Führen Sie die Django-Migrationen aus, um die Datenbanktabellen zu erzeugen:


python3 manage.py migrate

Installation und Konfiguration von Nginx

1. Nginx installieren

Installieren Sie Nginx mittels apt:


sudo apt-get install nginx

2. Nginx-Konfiguration

Erstellen Sie eine neue Nginx-Konfigurationsdatei unter /etc/nginx/sites-available/myproject:


server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass https://localhost:8000;
    }
}

Ersetzen Sie example.com mit dem Domainnamen Ihrer Website.

3. Aktivierung von Nginx

Aktivieren Sie die Nginx-Konfiguration:


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

Installation und Konfiguration von Gunicorn

1. Gunicorn installieren

Gunicorn wird mit pip installiert:


sudo pip3 install gunicorn

2. Gunicorn-Konfiguration

Erstellen Sie eine Gunicorn-Konfigurationsdatei unter /etc/systemd/system/myproject.service:


[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=myuser
Group=mygroup
WorkingDirectory=/path/to/myproject
ExecStart=gunicorn --bind unix:/path/to/myproject.sock --workers 3 --threads 4 myproject.wsgi:application

[Install]
WantedBy=multi-user.target

3. Gunicorn-Dienst erstellen und starten

Erstellen Sie den Gunicorn-Dienst und starten Sie ihn:


sudo systemctl daemon-reload
sudo systemctl start myproject
sudo systemctl enable myproject

Testen der Anwendung

Öffnen Sie Ihren Webbrowser und rufen Sie Ihre Domain https://example.com auf. Sie sollten die Django-Willkommensseite sehen.

Fazit

Sie haben Django erfolgreich mit Postgres, Nginx und Gunicorn unter Ubuntu eingerichtet. Diese Kombination bietet eine leistungsfähige und skalierbare Basis für Ihre Webanwendungen.

Zusätzliche Hinweise:

  • Sichern Sie Ihre Anwendung mit einem SSL-Zertifikat.
  • Überwachen Sie die Leistung und Sicherheit Ihrer Anwendung kontinuierlich.
  • Erwägen Sie den Einsatz eines Caching-Servers wie Redis oder Memcached zur Steigerung der Performance.

Häufig gestellte Fragen (FAQs)

1. Welche Vorteile bringt die Nutzung von Postgres mit Django?

Postgres ist ein robustes und skalierbares RDBMS mit vielfältigen Funktionen, die in Django-Anwendungen von Nutzen sind, etwa ACID-Transaktionen und Unterstützung komplexer Abfragen.

2. Warum ist es ratsam, Nginx als Reverse-Proxy einzusetzen?

Nginx ist ein hochperformanter Webserver, der sich ideal als Reverse-Proxy eignet. Er kann den Datenverkehr auf verschiedene Backend-Server verteilen, statische Inhalte zwischenspeichern und als Firewall dienen.

3. Was sind die Vorteile von Gunicorn?

Gunicorn ist ein für Django-Anwendungen optimierter WSGI-Server, der asynchrone Ereignisverarbeitung für hohen Durchsatz und geringe Latenz bietet.

4. Wie kann ich meine Django-Anwendung auf einem anderen Port betreiben?

Sie können den Port in der Datei settings.py unter ALLOWED_HOSTS anpassen.

5. Wie kann ich meine Django-Anwendung durch ein SSL-Zertifikat sichern?

Konfigurieren Sie ein SSL-Zertifikat in Ihrer Nginx-Konfiguration unter listen 443 ssl.

6. Wie kann ich die Performance meiner Django-Anwendung überwachen?

Nutzen Sie Tools wie New Relic oder Sentry, um die Performance Ihrer Anwendung zu verfolgen.

7. Wie integriere ich einen Caching-Server in meine Django-Anwendung?

Verwenden Sie einen Caching-Server wie Redis oder Memcached, um die Performance zu verbessern.

8. Wo erhalte ich weitere Informationen über Django, Postgres, Nginx und Gunicorn?

Konsultieren Sie die offizielle Dokumentation von Django, Postgres, Nginx und Gunicorn.