Django-Applikationen im Internet zugänglich machen: Eine Anleitung
In diesem Artikel zeigen wir Ihnen, wie Sie eine Django-Demonstrationsanwendung online stellen können, ohne sie auf einem Hosting-Dienst zu implementieren. Das ist ideal für schnelle Präsentationen.
Das Aufsetzen einer vollständigen Staging-Umgebung nur für die Demonstration einer Django-App ist oft übertrieben, besonders wenn die URL nur für wenige Minuten benötigt wird, um sie einem Kunden oder Kollegen zu zeigen.
Eine praktikable Alternative ist die Nutzung eines Tools, um Ihren lokalen Server öffentlich zugänglich zu machen. So können Personen weltweit sehen, was auf Ihrem Localhost geschieht.
Wir verwenden hierfür Ngrok. Dieses Tool ermöglicht es, öffentliche URLs basierend auf den lokalen Ports Ihres Computers zu erstellen. Dies funktioniert dank der Technologie des Tunneling.
Der gesamte Code dieses Tutorials ist in diesem Github-Repository zu finden.
Voraussetzungen
Grundkenntnisse in den folgenden Bereichen sind empfehlenswert, obwohl Sie diesem Tutorial wahrscheinlich auch ohne diese folgen können:
- Grundlegende Python-Kenntnisse
- Vertrautheit mit der Befehlszeile
- Eine installierte Python-Umgebung
Erstellung einer Django-Applikation
Um den Prozess detailliert zu erläutern, werden wir gemeinsam ein Django-Projekt erstellen. Wenn Sie bereits ein Projekt haben, können Sie diesen Abschnitt überspringen.
Virtuelle Umgebung
Zuerst erstellen wir eine virtuelle Python-Umgebung:
- Öffnen Sie Ihr Systemterminal.
- Alternativ können Sie auch das integrierte Terminal Ihres Code-Editors verwenden.
- Wählen Sie im Editor „Terminal“ > „Neues Terminal“, und am unteren Bildschirmrand wird eine Shell eingeblendet.
- Geben Sie folgenden Befehl ein, um eine virtuelle Umgebung zu erstellen:
python -m venv .venv
Dieser Befehl bewirkt Folgendes:
Python wird angewiesen, mit -m venv
eine virtuelle Umgebung namens .venv
zu erstellen.
- Nach Ausführung des Befehls sollten Sie einen neuen Ordner
.venv
in Ihrem aktuellen Verzeichnis sehen.
$ ls -l drwxr-xr-x - daniel 30 abr 23:12 .venv # Other files ...
- Aktivieren Sie die virtuelle Umgebung mit dem folgenden Befehl:
source .venv/bin/activate
- Eine tabellarische Übersicht der Aktivierungsbefehle für verschiedene Plattformen finden Sie in der offiziellen Python-Dokumentation:
Plattform | Shell | Befehl zur Aktivierung |
Posix | bash/zsh | $ source <venv>/bin/activate |
Posix | fish | $ source <venv>/bin/activate.fish |
Posix | csh/tcsh | $ source <venv>/bin/activate.csh |
Posix | PowerShell Core | $ <venv>/bin/Activate.ps1 |
Windows | cmd.exe | C:> <venv>\Scripts\activate.bat |
Windows | Power Shell | PS C:> <venv>\Scripts\Activate.ps1 |
Nach korrekter Ausführung sollte der Name der virtuellen Umgebung in Ihrer Shell angezeigt werden:
$ source .venv/bin/activate.fish (.venv) $
Installation von Django
Nach Aktivierung der virtuellen Umgebung können Sie Django installieren. Die Installation der neuesten Version wird empfohlen:
$ pip install django Collecting django Using cached Django-3.2-py3-none-any.whl (7.9 MB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting asgiref<4,>=3.3.2 Using cached asgiref-3.3.4-py3-none-any.whl (22 kB) Collecting sqlparse>=0.2.2 Using cached sqlparse-0.4.1-py3-none-any.whl (42 kB) Installing collected packages: pytz, asgiref, sqlparse, django Successfully installed asgiref-3.3.4 django-3.2 pytz-2021.1 sqlparse-0.4.1
Nun erstellen wir die grundlegende Projektstruktur Ihrer Django-App:
$ django-admin startproject mytestingproject
Dies erstellt ein Django-Projekt namens „mytestingproject“. Navigieren Sie anschließend in das Verzeichnis des Projekts und starten Sie den Django-Server:
# Enter to the project directory (.venv)$ cd mytestingproject/ # Listing the files inside the project (.venv) $ ls mytestingproject manage.py
Jetzt sind wir im Projektverzeichnis und können den Django-Server starten:
(.venv) $python manage.py runserver Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. May 01, 2021 - 04:34:25 Django version 3.2, using settings 'mytestingproject.settings' Starting development server at https://127.0.0.1:8000/ Quit the server with CONTROL-C.
Django hat einen lokalen Server auf dem Standardport 8000 gestartet (127.0.0.1 zeigt auf Ihren Localhost).
Ignorieren Sie vorerst die Fehlermeldungen und öffnen Sie Ihren Webbrowser, um die folgende Adresse aufzurufen:
https://localhost:8000/
Wenn alles korrekt eingerichtet ist, sollten Sie die Django-Standardseite sehen.
Die Django-Installation ist somit abgeschlossen. Jetzt machen wir diese Django-Anwendung für andere zugänglich.
Veröffentlichung der Django-App mit Ngrok
Wie erwähnt, ermöglicht Ngrok das Publizieren lokaler Server im Internet. Laden Sie Ngrok von der offiziellen Website herunter und installieren Sie es.
Nach der Installation führen wir einige Befehle aus.
Öffnen Sie ein neues Terminalfenster und geben Sie den folgenden Befehl ein (lassen Sie das Terminal mit dem laufenden Django-Server geöffnet):
$ ngrok help NAME: ngrok - tunnel local ports to public URLs and inspect traffic More commands ....
Dieser Befehl zeigt verfügbare Ngrok-Befehle und verifiziert die korrekte Installation.
Um eine öffentliche URL zu erstellen, mit der auf Ihren Server zugegriffen werden kann, führen Sie aus:
$ ngrok http 8000
Das Argument http
erstellt eine URL, die mit Port 8000 Ihres Localhosts verbunden ist.
Sie erhalten eine Ausgabe ähnlich der folgenden:
ngrok by @inconshreveable (Ctrl+C to quit) Session Status online Session Expires 1 hour, 59 minutes Update update available (version 2.3.39, Ctrl-U to update) Version 2.3.35 Region United States (us) Web Interface https://127.0.0.1:4040 Forwarding https://cac2165aa7f8.ngrok.io -> https://localhost:8000 Forwarding https://cac2165aa7f8.ngrok.io -> https://localhost:8000 Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00
Ngrok hat eine (etwas seltsam aussehende) URL erstellt, die auf Ihren lokalen Server weiterleitet. Öffnen Sie die angegebene URL im Browser.
Änderung der settings.py
Ein Fehler tritt auf, da Django eine „DisallowedHost“-Einstellung hat. Die Konsolen-Ausgabe des Django-Servers zeigt, dass ein Fehler auftritt:
# Django messages Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS. Bad Request: / [01/May/2021 05:07:46] "GET / HTTP/1.1" 400 65196 Invalid HTTP_HOST header: 'cac2165aa7f8.ngrok.io'. You may need to add 'cac2165aa7f8.ngrok.io' to ALLOWED_HOSTS. # Ngrok messages HTTP Requests ------------- GET /favicon.ico 400 Bad Request GET / 400 Bad Request
Django fordert, dass die verwendete Domäne zur Konfigurationsvariablen ALLOWED_HOSTS
hinzugefügt wird. Die von Ngrok generierte Domäne ist jedoch recht lang und kompliziert.
Wir ändern die Django-Einstellungen, um diesen Fehler zu beheben. Öffnen Sie die Datei settings.py
im Projektordner:
# mytestingproject/settings.py # Line 28 # Change from ALLOWED_HOSTS = [] # To ALLOWED_HOSTS = ["*"]
Durch die Verwendung des Platzhalters *
werden alle Hostnamen akzeptiert.
Laden Sie die Seite nun erneut. Es sollte alles wie gewünscht funktionieren:
Alle Änderungen an Ihrem lokalen Projekt werden in dieser öffentlichen URL widergespiegelt.
Wichtig: Ändern Sie in einer Produktionsumgebung ALLOWED_HOSTS
, um Sicherheitslücken zu vermeiden.
Zusammenfassung
In diesem Tutorial haben Sie gelernt, wie Sie eine Demo-URL für Ihr Django-Projekt erstellen können, ohne es bereitstellen zu müssen.
Sie haben die Einrichtung eines Django-Projekts geübt und die Arbeit mit der settings.py
-Datei kennengelernt.
Zudem haben Sie gelernt, wie Sie Ngrok nutzen, um lokale Server online zu stellen.
Als Nächstes könnten Sie beliebte Python-Frameworks für die API-Entwicklung erkunden.