Heim  >  Artikel  >  Backend-Entwicklung  >  Stellen Sie Django in der Produktion bereit

Stellen Sie Django in der Produktion bereit

Barbara Streisand
Barbara StreisandOriginal
2024-09-25 06:15:37982Durchsuche

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
Vorheriger Artikel:AI Runner v.ev18Nächster Artikel:AI Runner v.ev18