GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

So richten Sie Django mit Postgres, Nginx und Gunicorn unter Ubuntu 20.04 ein

Django ist ein in Python geschriebenes Open-Source-Webframework. Es ist ein beliebtes All-in-One-Web-Framework und eine der ersten Wahl für viele Entwickler. Django bietet viele Vorteile, wie z. B. MVT-Architektur (Model View Template), automatisches Admin-Panel und leistungsstarke ORM-Datenbankunterstützung (Object Relational Mapping). Es bietet auch großartige Debugging-Tools für Entwickler. In diesem Tutorial zeigen wir Ihnen, wie Sie Django mit PostgreSQL als Datenbankspeicher anstelle des Standard-SQLite, Nginx als Reverse-Proxy und Gunicorn als Anwendungsserver unter Ubuntu 20.04 installieren.

Voraussetzungen

  • Ein Ubuntu 20.04 VPS
  • SSH-Zugriff mit Root-Rechten

Schritt 1. Melden Sie sich beim Server an

Melden Sie sich zunächst über SSH als Root-Benutzer bei Ihrem Ubuntu 20.04-Server an:

ssh root@IP_Address -p Port_number

Sie müssen „IP_Address“ und „Port_number“ durch die jeweilige IP-Adresse und SSH-Portnummer Ihres Servers ersetzen. Ersetzen Sie außerdem „root“ gegebenenfalls durch den Benutzernamen des Administratorkontos.

Bevor Sie beginnen, müssen Sie sicherstellen, dass alle auf dem Server installierten Ubuntu-Betriebssystempakete auf dem neuesten Stand sind. Sie können dies tun, indem Sie die folgenden Befehle ausführen:

# apt update -y
# apt upgrade -y

Schritt 2. Erstellen Sie einen Systembenutzer

Sobald wir uns als root bei Ubuntu 20.04 angemeldet haben, erstellen wir einen neuen Systembenutzer und gewähren ihm sudo-Berechtigungen. Wir werden diesen Benutzer auch verwenden, um diese Installation abzuschließen. In diesem Tutorial erstellen wir einen neuen Systembenutzer namens „Master“, Sie können einen beliebigen Benutzernamen wählen.

# adduser master

Nach der Erstellung führen wir diesen Befehl aus, um den neuen Benutzer zur sudo-Gruppe hinzuzufügen. In Ubuntu dürfen Benutzer, die Mitglieder der sudo-Gruppe sind, sudo-Befehle ausführen.

# usermod -aG sudo master

Wir werden auch den Benutzerstamm zu unserer www-data-Gruppe hinzufügen

# usermod -aG www-data master

Jetzt können wir uns als neuer Benutzer „master“

anmelden
# su - master

Schritt 3. Pakete installieren

Um dies zu starten, installieren wir alle erforderlichen Pakete aus dem Repository. Um Nginx, PostgreSQL, Python aus dem Repository zu installieren, können wir diesen Befehl ausführen:

$ sudo apt install postgresql postgresql-contrib python3-pip python3-dev libpq-dev nginx -y

Schritt 4. Datenbank und Datenbankbenutzer hinzufügen

Während der PostgreSQL-Installation wurde ein Systembenutzer namens postgres als standardmäßiger Administratorbenutzer erstellt. Wir müssen diesen Benutzer verwenden, um uns bei der PostgreSQL-Shell anzumelden und administrative Aufgaben auszuführen.

$ sudo -u postgres psql

Sie werden nach Ihrem „Master“-Passwort gefragt und die Shell würde so aussehen:

postgres=#

Führen Sie in der PostgreSQL-Shell die folgenden Befehle aus:

postgres=# CREATE USER djangouser WITH PASSWORD 'm0d1fyth15';
postgres=# CREATE DATABASE djangodb;

Als nächstes müssen wir auch die Kodierung auf UTF-8, die Zeitzone und das Datenbankschema default_transaction_isolation ändern.

postgres=# ALTER ROLE djangouser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE djangouser SET timezone TO 'UTC';

Im letzten Teil gewähren wir der neuen Datenbank die Berechtigungen und verlassen dann die PostgreSQL-Shell.

postgres=# GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
postgres=# \q

Schritt 5. Erstellen Sie eine virtuelle Python-Umgebung

Django kann auf verschiedene Arten installiert werden. In diesem Artikel zeigen wir Ihnen, wie Sie es in einer virtuellen Python-Umgebung installieren.

$ sudo -H pip3 install --upgrade pip
$ sudo -H pip3 install virtualenv

Lassen Sie uns nach Abschluss ein neues Verzeichnis für die Django-Installation erstellen und dann in das neue Verzeichnis eintreten

$ mkdir django && cd $_

Nachdem wir das Verzeichnis „django“ aufgerufen haben, können wir diesen Befehl ausführen, um eine neue virtuelle Umgebung zu erstellen.

$ virtualenv djangoenv

Wie im Bild zu sehen, wird die neue virtuelle Umgebung im Verzeichnis „djangoenv“ erstellt. Um Django, Gunicorn und Psycopg2 in der virtuellen Umgebung zu installieren, müssen wir es zuerst aktivieren.

$ source djangoenv/bin/activate

Wenn Sie den obigen Befehl ausführen, sieht Ihre Shell so aus:

(djangoenv) master@ubuntu20:~/django$

Führen Sie in der Shell diesen Befehl aus, um Django zu installieren.

(djangoenv) master@ubuntu20:~/django$ pip install django gunicorn psycopg2

Nach Abschluss sollten Sie eine Ausgabe wie diese sehen:

Installing collected packages: sqlparse, backports.zoneinfo, asgiref, psycopg2, gunicorn, django
Successfully installed asgiref-3.4.1 backports.zoneinfo-0.2.1 django-4.0 gunicorn-20.1.0 psycopg2-2.9.2 sqlparse-0.4.2

Alle erforderlichen Komponenten zum Starten eines Django-Projekts sollten in der virtuellen Umgebung installiert werden.

Schritt 6. Django-Projekt erstellen

Im vorherigen Schritt haben wir ein Verzeichnis ~/django erstellt oder in diesem Fall /home/master/django . Wir werden ein Django-Projekt in diesem Verzeichnis erstellen, wir können diesen Befehl ausführen, um das Django-Projekt in ~/django zu installieren . Der Befehl sollte ausgeführt werden, während wir uns in der virtuellen Umgebung befinden.

(djangoenv) master@ubuntu20:~/django$ django-admin startproject djangoproject ~/django

Der obige Befehl installiert das Django-Projekt in ~/django/djangoproject . Wenn Sie das Verzeichnis auflisten, sehen Sie manage.py , djangoenv und djangoproject in Ihrem ~/django .

Da wir nun PostgreSQL als Datenbankspeicher verwenden möchten, müssen wir die Konfiguration ändern.

$ nano ~/django/djangoproject/settings.py

Fügen Sie diese Zeile oben in Ihrer settings.py

hinzu
import os

Und ersetzen Sie die vorhandenen Datenbankinformationen durch die folgenden.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'djangodb',
        'USER': 'djangouser',
        'PASSWORD': 'm0d1fyth15',
        'HOST': 'localhost',
        'PORT': '',
    }
}

Stellen Sie sicher, dass der Benutzername und das Passwort der Datenbank mit denen übereinstimmen, die wir im vorherigen Schritt erstellt haben. Suchen Sie immer noch in derselben Datei settings.py nach ALLOWED_HOSTS, dann können Sie Ihre Server-IP-Adresse, Domänennamen und Subdomänennamen hinzufügen. Die Einträge sollten durch ein Komma getrennt und in Anführungszeichen gesetzt werden.

ALLOWED_HOSTS = ['123.123.123.123', 'domain.com', 'sub.domain.com']

Suchen Sie als Nächstes die Konfiguration der statischen Dateien von Django. Die Änderungen sind erforderlich, um Ihre statischen Django-Dateien über nginx zugänglich zu machen und um zu verhindern, dass nginx Fehlermeldungen 404 zurückgibt. Fügen Sie diese Zeile nach STATIC_URL =‘/static/’

hinzu
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Vergessen Sie nicht, die Änderungen zu speichern und dann zu beenden.

Als nächstes ist es an der Zeit, das anfängliche Datenbankschema in unsere PostgreSQL-Datenbank zu migrieren. Führen wir diese Befehle aus.

(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py makemigrations
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py migrate

Erstellen Sie dann einen Superuser.

(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py createsuperuser

Sie werden aufgefordert, einen Benutzernamen zu erstellen, eine E-Mail-Adresse und das Passwort des Benutzernamens anzugeben. Sie sollten die Informationen zu diesem administrativen Benutzer und Passwort speichern, da Sie sich damit beim Django-Backend anmelden werden.

Führen Sie für den letzten den folgenden Befehl aus, um statische Dateien zu sammeln.

(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py collectstatic

Sie müssen die Aktion bestätigen, indem Sie sie mit Ja beantworten, dann sehen Sie diese Ausgabe nach der Bestätigung:

128 static files copied to '/home/master/django/static'

Deaktivieren Sie die virtuelle Umgebung, um sie zu beenden.

(djangoenv) master@ubuntu20:~/django$ deactivate

Schritt 7. Gunicorn Systemd-Datei erstellen

Um den Gunicorn-Dienst zu verwalten, erstellen wir eine systemd-Einheitendatei unter /etc/systemd/system/gunicorn.service.

$ sudo nano /etc/systemd/system/gunicorn.service

Fügen Sie diese Zeilen ein

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

[Service]
User=master
Group=www-data
WorkingDirectory=/home/master/django
ExecStart=/home/master/django/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/master/django/djangoproject.sock djangoproject.wsgi:application

[Install]
WantedBy=multi-user.target

Speichern Sie die Datei und beenden Sie sie. Laden Sie dann systemd neu und starten Sie gunicorn.

$ sudo systemctl daemon-reload
$ sudo systemctl start gunicorn

Führen Sie diesen Befehl aus, um zu überprüfen, ob Gunicorn ausgeführt wird oder nicht:

$ sudo systemctl status gunicorn

Schritt 8. Nginx konfigurieren

Gunicorn läuft und wir sind jetzt bereit, nginx so zu konfigurieren, dass es als Reverse-Proxy für unser Django-Projekt fungiert. Lassen Sie uns einen nginx-Serverblock für Django erstellen und den nginx-Standardserverblock löschen.

$ sudo rm /etc/nginx/sites-enabled/default
$ sudo nano /etc/nginx/conf.d/django.conf

Fügen Sie diese Zeilen in /etc/nginx/conf.d/django.conf ein

server {
    listen 80;
    server_name 123.123.123.123;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        alias /home/master/django/static/;
        }
    location /.well-known {
    alias /home/master/django/;
}
    

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/master/django/djangoproject.sock;
    }
}

Stellen Sie vor dem Speichern der Dateien sicher, dass Sie 123.123.123.123 mit der tatsächlichen IP-Adresse Ihres Servers und der Socket-Pfad korrekt ist. Suchen Sie dann nach Fehlern und starten Sie nginx neu, um die neue Konfiguration neu zu laden.

$ sudo nginx -t
$ sudo systemctl restart nginx

An diesem Punkt sollten Sie auf Ihr Django-Projekt unter http://YOUR_SERVER_IP_ADDRESS und die Verwaltungs-URL unter http://YOUR_SERVER_IP_ADDRESS/admin mit Ihrem bevorzugten Webbrowser.

Schritt 9. SSL-Zertifikat installieren

Dieser Schritt ist optional, wird jedoch dringend empfohlen. In der heutigen Zeit sollten Websites in HTTPS statt HTTP laufen. Dieser Schritt führt Sie durch die SSL-Installation von Let’s Encrypt.

$ sudo apt install certbot python3-certbot-nginx -y

Bearbeiten Sie nach der Installation den Serverblock Ihrer Django-Website und ersetzen Sie server_name durch Ihre tatsächliche Domain oder Subdomain, die auf Ihre Server-IP-Adresse verweist. Stellen Sie sicher, dass der Domain- oder Subdomain-DNS-Eintrag bereits auf Ihren Server verweist, bevor Sie das SSL-Zertifikat ausstellen.

Öffnen Sie /etc/nginx/conf.d/django.conf und bearbeiten Sie diesen Teil

server {
    listen 80;
    server_name 123.123.123.123;

zu

server {
    listen 80;
    server_name yourdomain.com;

Achten Sie darauf, yourdomain.com zu ersetzen mit Ihrem tatsächlichen Domainnamen. Speichern Sie die Datei, beenden Sie sie und laden Sie Nginx neu.

$ sudo systemctl reload nginx

Jetzt können wir das SSL-Zertifikat installieren, führen Sie diesen Befehl aus:

$ sudo certbot

Sie müssten Ihre E-Mail-Adresse angeben, die Nutzungsbedingungen von Let’s Encrypt akzeptieren und angeben, ob Sie Ihre E-Mail-Adresse mit der Electronic Frontier Foundation teilen möchten oder nicht. Dann müssen Sie auswählen, für welche Namen Sie HTTPS aktivieren möchten. Wählen Sie Ihre Django-Website aus, indem Sie die Nummer eingeben und die EINGABETASTE drücken. Let’s encrypt installiert das Zertifikat und fragt Sie, ob Sie die HTTP-zu-HTTPS-Umleitung konfigurieren möchten oder nicht. Sie können die Umleitung auswählen, dann erstellt certbot die Umleitung und lädt Nginx neu, wenn alles in Ordnung ist.

Jetzt sollten Sie im HTTPS-Modus unter https://yourdomain.com auf Ihre Django-Website zugreifen können .

Sie haben gelernt, wie Sie Django mit PostgreSQL, Nginx und Gunicorn einrichten.

Natürlich müssen Sie Django nicht mit PostgreSQL, Nginx und Gunicorn auf Ubuntu 20.04 einrichten, wenn Sie einen unserer Django VPS-Hosting-Dienste verwenden. In diesem Fall können Sie einfach unsere erfahrenen Linux-Administratoren bitten, Django mit PostgreSQL einzurichten , Nginx und Gunicorn auf Ubuntu 20.04 VPS für Sie. Sie sind 24×7 erreichbar und kümmern sich umgehend um Ihr Anliegen.

PS. Wenn Ihnen dieser Beitrag zur Einrichtung von Django mit PostgreSQL, Nginx und Gunicorn unter Ubuntu 20.04 gefallen hat, teilen Sie ihn bitte mit Ihren Freunden in den sozialen Netzwerken über die Schaltflächen unten oder hinterlassen Sie einfach eine Antwort in den Kommentarbereichen. Danke.


Panels
  1. Installieren Sie Django CMS auf Ubuntu 12.04 mit MariaDB, Gunicorn und Nginx

  2. NodeBB mit Redis und Nginx unter Ubuntu 12.04 installieren und einrichten

  3. So erstellen und löschen Sie Benutzer unter Ubuntu 16.04

  4. So installieren Sie PHP 7.4 mit Nginx unter Ubuntu 20.04

  5. So richten Sie eine einfache nodejs-App mit nginx und pm2 auf einem Ubuntu-Server ein

So installieren Sie Magento 2 mit Nginx und Letsencrypt unter Ubuntu 18.04

So installieren Sie Gitlab mit PostgreSQL und Nginx unter Ubuntu 15.04

So installieren Sie Drupal 8 mit Nginx, PHP-FPM und SSL unter Ubuntu 15.10

So installieren Sie Django mit PostgreSQL und Nginx unter Ubuntu 16.04

So richten Sie die Django-Entwicklungsumgebung unter Ubuntu 18.04 ein

Richten Sie Django mit Postgres, Nginx und Gunicorn auf Ubuntu 18.04 ein