Django ALLOWED_HOSTS

Salman Mehmood 10 Oktober 2023
Django ALLOWED_HOSTS

Dieser Artikel zeigt, wie Sie Ihre Django-Website übernehmen, sie für die öffentliche Veröffentlichung vorbereiten, ALLOWED_HOSTS festlegen und erwartete größere Probleme während der Webbereitstellung mit Django beheben.

Beheben Sie die wichtigsten Bereitstellungsprobleme und legen Sie ALLOWED_HOSTS in Django fest

Sie müssen einige wichtige Einstellungen konfigurieren, um eine sichere Website zu haben, eine Website, die in einer benutzerfreundlichen Website stabil ist. Schauen wir uns an, wie man es macht, ohne einen Fehler zu bekommen.

Angenommen, wir haben eine Website namens example in dieser URL example.domains, und wir ssh in diesen Server. Wir haben unsere grundlegende Django-Projektinfrastruktur im Home-Verzeichnis dieses Benutzers.

/home/example/exampledomains

Jetzt werden wir also viele unserer Änderungen im Projektverzeichnis vornehmen, und dann haben wir dort die Datei settings.py. Das bringt uns zur ersten Konfigurationseinstellung, die wir setzen möchten, und verbirgt den SECRET_KEY.

Folgen Sie in Ihrer settings.py SECRET_KEY einer langen Folge von Zeichen, Zahlen und Symbolen, also was machen wir mit dieser Datei? Wie Sie dem Kommentar entnehmen können (es ist nicht sicher für die Produktion).

Jetzt wollen wir etwas anderes machen, wir wollen den SECRET_KEY aus einer Datei lesen, und das können wir mit den beiden Codezeilen unten machen. Wir kopieren unseren SECRET_KEY in die Datei secret_key.txt und erstellen dann eine Datei namens secret_key.txt im Stammverzeichnis unseres Projektverzeichnisses, die den geheimen Schlüssel enthält.

Es navigiert also zu diesem Pfad auf unserem System, öffnet die Datei, liest den geheimen Schlüssel und weist ihn der Variablen SECRET_KEY zu.

Lassen Sie uns fortfahren und diese Datei im Stammverzeichnis unseres Projektverzeichnisses speichern.

with open(os.path.join(BASE_DIR, "secret_key.txt")) as f:
    SECRET_KEY = f.read().strip()

Wir müssen unserer settings.py-Datei einige zusätzliche HTTPS-Einstellungen hinzufügen, also öffnen Sie Ihre settings.py-Datei und scrollen Sie nach unten. Diese drei Variablen müssen wir addieren und gleich True setzen.

SESSION_COOKIES_SECURE stellt sicher, dass Ihre Cookies über HTTP bereitgestellt werden, ähnlich wie CSRF_COOKIES_SECURE, dass Ihre CSRF-Cookies gesichert und über HTTPS bereitgestellt werden. Die dritte Variable namens SECURE_SSL_REDIRECT stellt sicher, dass Ihr gesamter Datenverkehr von HTTP auf HTTPS umgeleitet wird.

SESSION_COOKIES_SECURE = True
CSRF_COOKIES_SECURE = True
SECURE_SSL_REDIRECT = True

Als nächstes müssen wir in ähnlicher Weise einige HSTS-Einstellungen zu unserer Datei settings.py hinzufügen. Wenn Sie mit HSTS nicht vertraut sind, steht es für HTTP Strikte Transportsicherheit.

HSTS fügt im Wesentlichen einige Informationen zum Header Ihrer Anfrage hinzu, die besagen, dass Browser keine Verbindung zu Ihrer Website über eine unsichere Verbindung, dh HTTP, herstellen sollten und können.

Schauen wir uns diese Einstellungen unten in unserer Datei settings.py an und erstellen einige Variablen.

Die SECURE_HSTS_SECONDS speichert eine wirklich große Zahl (unten ist für ein Jahr). Wir müssen diese Informationen in die ursprüngliche Anfrage und nachfolgende diesbezügliche Anfragen an den Client einfügen, und der Browser wird dies respektieren.

Für das nächste Jahr können wir uns nicht über eine unsichere Verbindung mit Ihrer Website verbinden, das ist also gut so.

Wir möchten SECURE_HSTS_PRELOAD und SECURE_HSTS_INCLUDE_SUBDOMAINS auf True setzen, denn selbst wenn Sie keine Subdomains haben, können Sie diese gut in diesen Anfrage-Header aufnehmen.

SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True

Im weiteren Verlauf möchten wir sicherstellen, dass unser Domainname in den zulässigen Hosteinstellungen angegeben ist. Auch hier arbeiten wir in der Datei settings.py und finden die Variable ALLOWED_HOSTS (möglicherweise haben Sie diese hier bereits angegeben, dies ist nur eine Liste von Domainnamen).

Die Hostnamen, die diesen Server bedienen oder sich mit ihm verbinden dürfen, sind Ihr Django-Server; da wir mit example.domains arbeiten, geben wir den Domainnamen und die www.example.domains-Version davon an.

ALLOWED_HOSTS = ["example.domains", "www.example.domains"]

Als Nächstes müssen wir sicherstellen, dass wir das Debugging in der Produktion deaktivieren. Wir zeigen Ihnen die Unterschiede zwischen Debugging gleich True und False.

Stellen Sie zuerst die Datei settings.py ein, um sicherzustellen, dass DEBUG auf False gesetzt ist. Es ist standardmäßig True, wenn Sie Ihr Django-Projekt starten.

Wenn wir in unserem Webbrowser zu einer Seite gehen und auf False debuggen, sehen wir einen benutzerfreundlichen Fehler, wenn diese Seite nicht existiert. Sie wissen, dass es besser ist als es aussieht, wenn DEBUG gleich True ist.

DEBUG = False

Im weiteren Verlauf müssen wir sicherstellen, dass wir unsere statischen Dateien in unser statisches Stammverzeichnis kopieren. Wir meinen Bilder, CSS, JavaScript und alle Nicht-HTML-PHP-Dateien auf unserem Django-Server, wenn wir von statischen Dateien sprechen.

Standardmäßig hat unsere Datei settings.py eine statische URL unter dieser Adresse; Wir möchten eine statische Wurzel hinzufügen. Unser Fall befindet sich nur im Basisverzeichnis unseres Projekts '/static/'.

Django hat eine sehr praktische Funktion, die wir ausführen können, um diese Dateien mit dem folgenden Befehl in dieses statische Verzeichnis zu kopieren.

python manage.py collectstatic

Zuletzt müssen wir die Checkliste für die automatisierte Bereitstellung von Django ausführen. Dies ist eine praktische Funktion, die Django für uns bereitstellt.

Im Stammverzeichnis unseres Projektverzeichnisses müssen wir den folgenden Code eingeben.

python manage.py check --deploy

Wenn Sie also mitverfolgt haben, sollten Sie an dieser Stelle keine Probleme sehen. Bevor Sie dies ausführen, sehen Sie möglicherweise etwas, das Ihnen die einzelnen Probleme zeigt, die Sie vor der Bereitstellung beheben müssen.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn