Django

Erstellen einer Django-App auf einem Ubuntu-Server

Erstellen einer Django-App auf einem Ubuntu-Server
Django ist eine gemeinsame Plattform für die Entwicklung von Websites, Webanwendungen und Web-APIs. Es hat viele Vorteile, das Django-Framework für Ihr Projekt als Werkzeug zu verwenden. Wenn Sie sich nicht sicher sind, ob es das richtige ist, müssen Sie sich nur die vielen großen Marken ansehen, die Django in ihrem Stack verwenden.

Die erstmalige Bereitstellung von Django in einer Produktionsumgebung kann eine entmutigende Aufgabe sein. Entwickler starten oft eine Linux-Instanz in der Cloud für ihre Produktionsumgebung.

In diesem Tutorial zeigen wir Ihnen, wie Sie Django in der Produktion mit einer neuen Ubuntu-Instanz starten.

Wir gehen davon aus, dass Ihre gesamte Bearbeitung auf dem Server erfolgt und Sie die Befehle als root ausführen.

Für dieses Tutorial verwenden wir Ubuntu 18.04.2 LTS

Erstellen eines Benutzers für das Projekt

Wir erstellen einen neuen Nutzer, django, zum Ausführen unserer Anwendung. Dies bietet einen kleinen Sicherheitsvorteil.

So erstellen Sie den neuen Benutzer:

useradd -m django

Das -m flagge erstellt ein neues Home-Verzeichnis: /home/django.

Einrichten der Python-Umgebung

Das Wichtigste zuerst: Aktualisieren Sie Ihre Paketlisten mit apt-get-Update

Ubuntu 18.04 wird mit Python 3 ausgeliefert.6, aber es wird nicht mit pip ausgeliefert, das Sie benötigen, um Ihre Abhängigkeiten zu installieren.

apt-get install python3-pip

Jetzt, da wir pip haben, erstellen wir eine virtuelle Umgebung. Virtuelle Umgebungen helfen, Konflikte mit von Linux verwendeten Python-Paketen zu vermeiden.

pip3 installiere virtualenv
cd /home/django
virtuelle Umgebung

Jetzt haben Sie ein virtuelles Python 3 erstellt.6 Umgebung in der /home/django/env Ordner, der mit dem folgenden Befehl aktiviert werden kann: Jetzt, da wir pip haben, erstellen wir eine virtuelle Umgebung. Virtuelle Umgebungen helfen, Konflikte mit von Linux verwendeten Python-Paketen zu vermeiden.

Quelle /home/django/env/bin/activate

Das Django-Projekt einrichten

Für dieses Tutorial erstellen wir ein temporäres Django-Projekt. Wenn Sie Ihren eigenen Code bereitstellen, müssen Sie ihn stattdessen auf den Server hochladen. Wir arbeiten im Home-Verzeichnis /home/django.Das Django-Projekt einrichten

Lassen Sie uns das Django-Projekt erstellen:

cd /home/django
source env/bin/activate
pip install django
django-admin startproject Tutorial

Überprüfen Sie, ob die Dinge funktionieren, indem Sie Folgendes ausführen:

CD-Tutorial
Python verwalten.py Runserver 0server.0.0.0:80

Unsere Ubuntu-Instanz läuft mit 178.128.229.34, also verbinden wir uns mit http://178.128.229.34.Überprüfen Sie, ob die Dinge funktionieren, indem Sie Folgendes ausführen:

Sie werden wahrscheinlich so etwas sehen:

Um dies zu beheben, bearbeiten wir /home/django/tutorial/tutorial/einstellungen.py. Finden ALLOWED_HOSTS = [] und stellen Sie es ein auf:

ALLOWED_HOSTS = [
'178.128.229.34' # Ersetzen Sie dies durch die IP-Adresse Ihres Servers
oder der Domainname, den Sie für die Verbindung verwenden
]

Kehren wir nun zu http://178 . zurück.128.229.34:

Groß! Wir sind online!

Einrichten von PostgreSQL, der Datenbank

Django verwendet standardmäßig eine SQLite3-Datenbank. Leider erlaubt SQLite3 keine gleichzeitigen Schreibvorgänge. Wenn Ihre Website immer nur einen Benutzer hat, der Daten bearbeitet und der Rest der Besucher nur Seiten liest, dann könnte dies angemessen sein. Aber wenn mehrere Personen gleichzeitig Daten bearbeiten, möchten Sie wahrscheinlich ein anderes Backend verwenden different.

Häufige Optionen sind PostgreSQL und Mysql. Wir verwenden PostgreSQL für dieses TutorialSQL.

Beginnen Sie mit der Installation von PostgreSQL:

apt-get install postgresql

Starten Sie dann psql, eine Datenbank-Shell. Standardmäßig kann sich nur der Postgres-Nutzer mit der Datenbank verbinden, sodass wir uns zuerst als dieser Nutzer authentifizieren müssen:

su - postgres
psql

Als nächstes benötigen wir eine Datenbank und einen Benutzer, um auf diese Datenbank zuzugreifen:

Datenbank-Tutorial erstellen;
Benutzer tutorial_user mit verschlüsseltem Passwort 'tutorial_password' erstellen;
Gewähren Sie alle Berechtigungen für das Datenbank-Tutorial an tutorial_user;

Geben Sie jetzt Exit ein oder drücken Sie zweimal Strg-D: einmal, um psql zu beenden, und einmal, um sich von der Postgresuser-Shell abzumelden.

Groß! Jetzt haben wir unsere Datenbank und den Benutzer eingerichtet. Lassen Sie uns überprüfen, ob wir uns in unsere Datenbank einloggen können.

Wir versuchen, eine Datenbank-Shell zu öffnen, und melden uns diesmal mit dem von uns erstellten Benutzer bei der Datenbank an, die wir erstellt haben:

psql -Ututorial_user -dtutorial -h127.0.0.1 -W

Geben Sie an der Eingabeaufforderung das von uns erstellte Passwort ein: Tutorial_Passwort.

Wenn Sie eine Datenbank-Shell sehen, waren Sie erfolgreich. Wenn Sie Fehler sehen, müssen Sie zurückgehen und herausfinden, was nicht stimmt.

Verbinden von Django mit der Datenbank

Um Django mit der Datenbank zu verbinden, müssen wir zuerst den Python PostgreSQL-Adapter installieren:

pip installiere psycopg2-binary

Dann lass uns aufmachen /home/django/tutorial/tutorial/einstellungen.pyund konfigurieren Sie die Verbindung.

Finden Sie Ihre aktuelle Datenbankverbindung; Wenn Sie es nicht geändert haben, könnte es etwa so aussehen:

DATENBANKEN =
'Standard':
'MOTOR': 'django.db.Back-Ends.sqlite3',
'NAME': os.Pfad.join(BASE_DIR, 'db.sqlite3'),

Um eine Verbindung zu PostgreSQL herzustellen, ersetzen wir es durch Folgendes:

DATENBANKEN =
'Standard':
'MOTOR': 'django.db.Back-Ends.postgresql_psycopg2',
'NAME': 'Anleitung',
'BENUTZER': 'tutorial_user',
'PASSWORT': 'tutorial_password',
'GAST': '127.0.0.1',
'HAFEN': '5432',

Testen wir die Verbindung:

cd /home/django/tutorial
Python verwalten.py Runserver 0server.0.0.0:80

Sie sollten Ihre Website wieder besuchen können (für uns unter http://178.128.229.34/, aber ersetzen Sie das durch Ihre IP oder Ihren Hostnamen).

Wenn alles gut ist, können wir weitermachen.

Einrichten von nginx, dem Webserver

Wenn du rennst Python verwalten.py-Runserver, Sie verwenden den Entwicklungsserver von Djangogo. Das ist großartig für die lokale Entwicklung, aber wie bei SQLite3 ist es nicht wirklich für die Produktion geeignet.

Übliche Optionen für Produktions-Webserver sind nginx und Apache. Für dieses Tutorial verwenden wir nginx.

Installieren Sie nginx wie folgt:

apt-get install nginx

Wenn jetzt alles gut funktioniert hat, sollte nginx auf Port 80 laufen. Schauen Sie sich Ihre Website an; Das solltest du sehen:

Großartig, also nginx ist einsatzbereit! Als nächstes müssen wir es konfigurieren, um mit Django zu kommunizieren. Öffnen Sie die nginx-Konfigurationsdatei unter /etc/nginx/sites-available/default. Lassen Sie uns die Datei durch Folgendes ersetzen:

Upstream-Django
Server 127.0.0.1:8000;

Server
hören 80;
Lage /
try_files $uri @send_to_django;

Standort @send_to_django
proxy_set_header-Host $http_host;
proxy_redirect aus;
proxy_pass http://django;

Testen Sie die Konfigurationsdatei, indem Sie nginx -t . ausführen. Wenn alles in Ordnung ist, können wir neu laden, indem wir nginx -s reload ausführen.

Wenn Sie nun Ihre Website besuchen, sehen Sie Folgendes:

Wenn Sie dies sehen, bedeutet dies, dass nginx die Anfrage nicht an den Upstream-Prozess weitergeben konnte. Momentan liegt es daran, dass die Anfrage an 127 weitergeleitet wird.0.0.1:8000 aber es gibt keinen Prozess, der an dieser Adresse lauscht.

Starten wir den Django-Entwicklungsserver und versuchen Sie es erneut:

cd /home/django/tutorial
Python verwalten.py-Runserver 127.0.0.1:8000

und besuche wieder deine Website. Sie sollten Ihre Django-Anwendung sehen.

Django auf Gunicorn montieren

Denken Sie daran, dass wir unseren Django-Entwicklungsserver nicht in der Produktion verwenden möchten. Stattdessen verwenden wir einen Web Server Gateway Interface (WSGI)-Server, um Django auszuführen. Nginx leitet die Anfrage an den WSGI-Server weiter, auf dem Django ausgeführt wird.

Übliche Optionen für einen WSGI-Server sind Gunicorn und uWSGI. Für dieses Tutorial verwenden wir Gunicorn.

Lassen Sie uns Gunicorn installieren:

pip installiere gunicorn

Als nächstes können wir gunicorn wie folgt starten:

cd /home/django/tutorial
Gunicorn-Tutorial.wsgi

Jetzt sollten Sie in der Lage sein, Ihre Website zu besuchen und zu sehen, dass Ihre Anwendung ordnungsgemäß ausgeführt wird.

Gunicorn als Service betreiben

Es gibt ein paar Probleme beim Ausführen von gunicorn wie folgt:

  1. Wenn wir die SSH-Sitzung schließen, wird der Gunicorn-Prozess gestoppt.
  2. Wenn der Server neu startet, startet der Gunicorn-Prozess nicht.
  3. Der Prozess läuft als root. Wenn Hacker einen Exploit im Code unserer App finden, können sie Befehle als root ausführen. Wir wollen das nicht; aber deshalb haben wir den djangouser erstellt!

Um diese Probleme zu lösen, werden wir Gunicorn als Systemdienst ausführen.

cd /home/django
mkdir bin
cd /home/django/bin
Start-Server berühren.Sch

Im Startserver.Sch:

cd /home/django
source env/bin/activate
CD-Tutorial
Gunicorn-Tutorial.wsgi

Jetzt können Sie das Skript testen:

cd /home/django/bin
bash start-server.Sch
# Besuchen Sie Ihre Website, sie sollte laufen

Jetzt erstellen wir den Systemdienst für Gunicorn.  /etc/systemd/system/gunicorn erstellen.Dienst wie folgt:

[Einheit]
Description=Gunicorn
Nach=Netzwerk.Ziel
[Bedienung]
Typ=einfach
Benutzer=django
ExecStart=/home/django/bin/start-server.Sch
Neustart=bei Fehler
[Installieren]
WantedBy=Mehrbenutzer.Ziel

Jetzt aktivieren wir den Dienst und starten ihn

systemctl aktivieren gunicorn
systemctl start gunicorn

Sie sollten Ihre Website im Moment sehen können.

Wir können Gunicorn wie folgt ausschalten:

systemctl stop gunicorn

Und Sie sollten ein 502 Bad Gateway sehen.

Lassen Sie uns abschließend den Boot-Zyklus überprüfen:

systemctl start gunicorn
jetzt neustarten

Wenn Ihr Computer wieder online ist, sollten Sie sehen, dass Ihre Website aktiv ist.

Statische Dateien

Wenn Sie das Django-Admin-Panel auf Ihrer Website unter /admin/ (bei uns ist es http://178.128.229.34/admin/), werden Sie feststellen, dass statische Dateien nicht richtig geladen werden.

Wir müssen einen neuen Ordner für statische Dateien erstellen:

cd /home/django
mkdir statisch

Dann teilen wir Django mit, dass dort die statischen Dateien abgelegt werden sollen, indem wir /home/django/tutorial/tutorial/settings . bearbeiten.py, und fügt hinzu:

STATIC_ROOT = '/home/django/static/'

Jetzt können wir die statischen Dateien sammeln:

cd /home/django
source env/bin/activate
CD-Tutorial
Python verwalten.py Collectstatic

Schließlich müssen wir nginx anweisen, diese statischen Dateien bereitzustellen.

Öffnen wir /etc/nginx/sites-available/default und fügen Sie Folgendes direkt über Ihrem Standort/Block hinzu:

Standort /statisch/
root /home/django;
try_files $uri =404;

Die ganze Datei sollte nun so aussehen:

Upstream-Django
Server 127.0.0.1:8000;

Server
hören 80;
Standort /statisch/
root /home/django;
try_files $uri =404;

Lage /
try_files $uri @send_to_django;

Standort @send_to_django
proxy_set_header-Host $http_host;
proxy_redirect aus;
proxy_pass http://django;

Wir können die Datei mit nginx -s reload neu laden

Und voila! Ihre statischen Dateien funktionieren jetzt vollständig.

Fazit

Zu diesem Zeitpunkt funktioniert Ihre Django-App ordnungsgemäß. Wenn Sie spezielle Anforderungen haben, müssen Sie möglicherweise einen Cache wie Redis oder eine Nachrichtenwarteschlange wie Rabbit MQ einrichten. Möglicherweise möchten Sie auch eine kontinuierliche Bereitstellung einrichten, da das Bereitstellungsverfahren eine Weile dauern kann.

Ein weiterer wichtiger Schritt besteht darin, die entsprechenden Schritte zu unternehmen, um Ihren Ubuntu-Computer zu sichern. Andernfalls könnte sich Ihr Server schlecht benehmen server!

Viel Glück!

Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...
Linker Mausklick funktioniert nicht unter Windows 10
Wenn Sie eine dedizierte Maus mit Ihrem Laptop oder Desktop-Computer verwenden, aber die linker Mausklick funktioniert nicht unter Windows 10/8/7 aus ...