suchen
HeimBackend-EntwicklungPython-TutorialStellen Sie Django in der Produktion bereit

Ich habe kürzlich meine eigene Django-Anwendung für die Produktion bereitgestellt. Die Website heißt videiro.com und wurde in Django + HTML/CSS/JS + Tailwind entwickelt.

Aufstellen

Ich verwende einen Debian 12-Server, der meine Anwendung über Cloudflare-Tunnel verfügbar macht. Alle statischen Dateien werden über Nginx bereitgestellt und das Django-Projekt wird von Gunicorn ausgeführt.

In dieser Anleitung zeige ich dir, wie ich das einrichte.

Vorbereitung des Django-Projekts

Als erstes müssen Sie die Datei „settings.py“ öffnen und Folgendes ändern

Debug = False
ALLOWED_HOSTS = ['yourdomain.tld']
CSRF_COOKIE_SECURE = True
CSRF_TRUSTED_ORIGINS = [
    'yourdomain.tld',
]

Sie sollten den SECRET_KEY auch in eine lange zufällige Zeichenfolge ändern, die Sie niemals mit jemandem teilen sollten.

Danach erstellen Sie eine neue Datei mit dem Namen .gitignore und fügen Folgendes ein:

db.sqlite3
*.pyc

Dadurch wird sichergestellt, dass die Datenbank nicht auf unseren Server hochgeladen wird und dass auch keine Pyc-Dateien hochgeladen werden.

Jetzt können Sie Ihr Projekt in ein neues Github-Repository (oder Gitea-Repository) hochladen. Wenn Sie nicht möchten, dass jeder Zugriff auf Ihren Quellcode hat, stellen Sie sicher, dass das Repository als privat festgelegt ist.

Wenn Sie sicherstellen möchten, dass Ihr Quellcode privat bleibt, empfehle ich Ihnen, eine selbstgehostete Gitea-Instanz einzurichten. Lesen Sie „Selbsthosten Sie Ihre eigene Gitea-Instanz – selbstgehostete, leichte Github-Alternative“, um zu erfahren, wie das geht.

git init
git branch -M main
git add .
git commit -m "initial commit"
git remote add origin https://...
git push -u origin main

Da Sie nun fertig sind, sollten Sie sich bei Ihrem Server anmelden

Server-Setup

Bevor Sie etwas konfigurieren, stellen Sie sicher, dass Sie keine SSH-Anmeldungen mit einem Passwort zulassen. Folgen Sie „SSH mit schlüsselbasierter Authentifizierung sichern“, um Ihren Server vor solchen Angriffen zu schützen.

Melden Sie sich bei Ihrem Server an

ssh user@server.ip

Stellen Sie sicher, dass Ihre Pakete den Daten entsprechen

sudo apt update && sudo apt upgrade

Jetzt Python, Pip, Git und Nginx installieren

sudo apt install python3 python3-pip git nginx

Klonen Sie nun Ihr Projekt in Ihr Home-Verzeichnis.

git clone https://...
cd my-project

Sobald Sie drin sind, installieren Sie Folgendes:

pip install django django-crispy-forms whitenoise

Versuchen Sie nun, das Projekt auszuführen:

python3 manage.py runserver

Wenn Sie eine Fehlermeldung erhalten, dass ein Paket fehlt, installieren Sie es und führen Sie es erneut aus.

Gunicorn konfigurieren

Jetzt richten wir Gunicorn ein

Installieren Sie es zuerst

pip install gunicorn

Erstellen Sie nun mit Ihrem bevorzugten Texteditor eine neue Datei namens gunicorn.service:

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

Und fügen Sie Folgendes ein:

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

[Service]
User=YOURUSER
Group=www-data
WorkingDirectory=/home/YOURUSER/PROJECT
ExecStart=/path/to/gunicorn --access-logfile - --workers 3 --bind 127.0.0.1:8000 PROJECTNAME.wsgi:application

[Install]
WantedBy=multi-user.target

Ändern Sie YOURUSER in Ihren Benutzer.

So finden Sie den Weg zum Gunicorn Run:

which gunicorn

Und Ihr Projektname ist der Name des Ordners in Ihrem Projekt, der die Datei „settings.py“ enthält.

Führen Sie nun die folgenden Befehle aus, um Gunicorn zu starten und zu aktivieren (Start beim Booten)

sudo systemctl daemon-reload
sudo systemctl start gunicorn.service
sudo systemctl enable gunicorn.service

Wenn Sie nun zu 127.0.0.1:8000 gehen, sollte Ihr Projekt laufen.

Aber wir waren noch nicht fertig

Nginx einrichten

Jetzt müssen wir unsere statischen Inhalte über Nginx bereitstellen.

Erstellen Sie zunächst eine neue Nginx-Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

sudo vim /etc/nginx/sites-available/PROJECT

Ändern Sie PROJEKT nach Ihren Wünschen

Fügen Sie nun den folgenden Inhalt ein:

server {
    listen 80;
    server_name YOURDOMAIN;

    location /static/ {
    alias /var/www/staticfiles/;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Ändern Sie einfach YOURDOMAIN in die Domain, auf der dies gehostet wird.

Erstellen Sie einen symbolischen Link, um Ihre Website zu aktivieren:

sudo ln -s /etc/nginx/sites-available/PROJECT /etc/nginx/sites-enabled/

Nginx starten und aktivieren:

sudo systemctl start nginx
sudo systemctl enable nginx

Richten Sie statische Dateien ein

Das erste, was Sie tun müssen, ist, in Ihr (Django-)Projekt zu wechseln

cd project

Führen Sie nun den folgenden Befehl aus:

python3 manage.py collectstatic

Dadurch wird ein neuer Ordner namens „staticfiles“ erstellt

Um nun die statischen Dateien einzurichten, haben wir zwei Möglichkeiten:

  1. Ändern Sie den Benutzer in /etc/nginx/nginx.conf zu Ihrem Benutzer (weniger sicher)
  2. Kopieren Sie die statischen Dateien nach /var/www/ (sicherer)

Ich werde die 2. Option machen:

Erstellen Sie zunächst eine neue Datei namens staticfiles in /var/www

sudo mkdir -p /var/www/staticfiles

Kopieren Sie nun alle statischen Dateien aus Ihrem Projekt dorthin:

sudo cp staticfiles/* /var/www/staticfiles

Jetzt cd in /var/www

cd /var/www

Ändern Sie den Besitz aller Dateien

sudo chown www-data:www-data staticfiles
sudo chown www-data:www-data staticfiles/*

Starten Sie den Nginx-Dienst neu:

sudo systemctl restart nginx

Jetzt gehen Sie zu:

127.0.0.1

Sie sollten sehen, dass Ihre Website mit allen bereitgestellten statischen Dateien läuft!

Offenlegung über Cloudflare-Tunnel

Jetzt machen Sie Ihre Website öffentlich zugänglich.

Dazu benötigen Sie ein Cloudflare-Konto und eine auf Cloudflare verweisende Domain.

Gehen Sie zunächst zum Zero Trust Dashboard

Klicken Sie unter Netzwerke auf Tunnel und dann auf Tunnel erstellen

Nach der Erstellung sollten Sie einen Connector installieren und ausführen. Befolgen Sie die Anweisungen auf der Seite für Ihr spezifisches Setup.

Nachdem der Connector ausgeführt wird, sollten Sie auf die Registerkarte „Öffentlicher Hostname“ klicken und einen öffentlichen Hostnamen hinzufügen.

Jetzt sollten Sie etwa Folgendes sehen: Deploy django to production

Füllen Sie die Informationen so aus, wie ich sie angegeben habe. Der Diensttyp sollte HTTP sein und die URL sollte 127.0.0.1:80 oder localhost:80

sein

Wenn Sie nun zu der von Ihnen angegebenen Domain gehen, sollte Ihre App betriebsbereit sein.

Herzlichen Glückwunsch!

Wenn Ihnen dieser Beitrag gefallen hat und Sie meine (größtenteils unbezahlte) Arbeit unterstützen möchten, können Sie hier spenden.

Abonnieren Sie meinen kostenlosen Newsletter!

Hier beitreten

Das obige ist der detaillierte Inhalt vonStellen Sie Django in der Produktion bereit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Python: Spiele, GUIs und mehrPython: Spiele, GUIs und mehrApr 13, 2025 am 12:14 AM

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Python vs. C: Anwendungen und Anwendungsfälle verglichenPython vs. C: Anwendungen und Anwendungsfälle verglichenApr 12, 2025 am 12:01 AM

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Der 2-stündige Python-Plan: ein realistischer AnsatzDer 2-stündige Python-Plan: ein realistischer AnsatzApr 11, 2025 am 12:04 AM

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python: Erforschen der primären AnwendungenPython: Erforschen der primären AnwendungenApr 10, 2025 am 09:41 AM

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Wie viel Python können Sie in 2 Stunden lernen?Wie viel Python können Sie in 2 Stunden lernen?Apr 09, 2025 pm 04:33 PM

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden?Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden?Apr 02, 2025 am 07:18 AM

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet?Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet?Apr 02, 2025 am 07:15 AM

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Was soll ich tun, wenn das Modul '__builtin__' beim Laden der Gurkendatei in Python 3.6 nicht gefunden wird?Was soll ich tun, wenn das Modul '__builtin__' beim Laden der Gurkendatei in Python 3.6 nicht gefunden wird?Apr 02, 2025 am 07:12 AM

Laden Sie Gurkendateien in Python 3.6 Umgebungsbericht Fehler: ModulenotFoundError: Nomodulennamen ...

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.