Heim > Artikel > Backend-Entwicklung > Stellen 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.
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.
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
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.
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
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
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:
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!
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:
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
seinWenn 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.
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!