Wie man das Django-Python-Framework unter CentOS 8 installiert

Django ist ein freies, quelloffenes und hochrangiges Web-Framework, das für die Entwicklung von Python-Web-Anwendungen verwendet wird. Es wird mit einer Reihe von Werkzeugen geliefert, die Sie bei der Erstellung sicherer und skalierbarer Webanwendungen unterstützen. Sein Hauptziel ist es, die Erstellung komplexer Anwendungen zu erleichtern und kümmert sich um die interne Struktur.

In diesem Tutorial werden wir lernen, wie man Django installiert und Nginx als Reverse-Proxy für Django unter CentOS 8 konfiguriert.

Voraussetzungen

  • Ein Server, auf dem CentOS 8 läuft.
  • Ein Root-Passwort wird auf Ihrem Server konfiguriert.

Erforderliche Pakete installieren

Django ist ein Python-basiertes Framework, so dass Sie Python und PIP in Ihrem System installieren müssen. Sie können sie installieren, indem Sie den folgenden Befehl ausführen:

dnf install python36 python3-pip -y

Sobald beide Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

Django installieren

Sie können Django mit dem PIP-Befehl wie unten gezeigt installieren:

pip3 install Django

Nach der Installation von Django können Sie die Version von Django mit dem folgenden Befehl überprüfen:

django-admin --version

Sie sollten die Django-Version in der folgenden Ausgabe sehen:

3.0.3

Erstellen Sie ein Django-Projekt

An diesem Punkt ist Django installiert. Jetzt ist es an der Zeit, eine neue Django-Anwendung zu erstellen.

Sie können eine neue Django-Anwendung mit dem Befehl django-admin im Verzeichnis /opt wie unten gezeigt erstellen:

cd /opt
 django-admin startproject djangoproject

Nachdem das Django-Projekt erstellt wurde, ändern Sie das Verzeichnis in djangoproject und migrieren Sie die Änderungen mit dem folgenden Befehl:

cd djangoproject
 python3 manage.py migrate

Sie sollten die folgende Ausgabe erhalten:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying sessions.0001_initial... OK

Als nächstes müssen Sie ein Admin-Benutzerkonto für die Verwaltung des Django-Projekts erstellen. Sie können es mit dem folgenden Befehl erstellen:

python3 manage.py createsuperuser

Sie werden gebeten, Ihren Benutzernamen, Ihre E-Mail-Adresse und Ihr Passwort anzugeben. Sie können diese wie unten gezeigt nach Ihrer Wahl angeben:

Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Starten Sie die Django-Anwendung

Standardmäßig ist die Anwendung Django von den entfernten Hosts aus nicht zugänglich. Daher müssen Sie Django für externe Hosts zulassen. Sie können dies tun, indem Sie Ihre Server-IP in settings.py hinzufügen:

nano /opt/djangoproject/djangoproject/settings.py

Ändern Sie die folgende Zeile:

ALLOWED_HOSTS = ['your-server-ip']

Speichern und schließen Sie die Datei. Starten Sie dann die Anwendung Django mit folgendem Befehl:

cd /opt/djangoproject
 python3 manage.py runserver 0.0.0.0:8000

Sie sollten die folgende Ausgabe sehen:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
March 03, 2020 - 02:31:19
Django version 3.0.3, using settings 'djangoproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

Django application is now started and runs on port 8000. 

An diesem Punkt wird die Anwendung Django nun gestartet und läuft auf Port 8000. Sie können nun mit dem nächsten Schritt fortfahren.

Konfigurieren Sie SELinux und Firewall

Als nächstes müssen Sie die Ports 8000 und 80 durch Firewalld zulassen. Sie können sie mit dem folgenden Befehl zulassen:

firewall-cmd --permanent --add-port=8000/tcp
 firewall-cmd --permanent --add-port=80/tcp
 firewall-cmd --reload

Als nächstes konfigurieren Sie SELinux mit dem folgenden Befehl:

setsebool httpd_can_network_connect on -P

Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Zugriff auf die Django-Anwendung

Sie können auf die Anwendung Django unter der URL http://your-server-ip:8000 zugreifen. Sie werden die folgende Seite sehen:

Django-Anwendung

Sie können auch über die URL http://your-server-ip:8000/admin auf die Django-Administrationsschnittstelle zugreifen. Dann erhalten Sie folgende Seite:

Django-Administrator-Anmeldung

Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf die Schaltfläche Anmelden. Sie sollten die folgende Seite sehen:

Django-Verwaltungs-Dashboard

Nginx und Gunicorn installieren

In diesem Abschnitt werden wir Gunicorn installieren, um den Django-Dienst zu erstellen und zu verwalten, und Nginx, um die Django-Anwendung zu bedienen.

Installieren Sie zunächst Nginx mit dem folgenden Befehl:

dnf install nginx -y

Installieren Sie als nächstes Gunicorn mit dem PIP-Befehl wie unten gezeigt:

pip3 install gunicorn

Wenn beide Pakete installiert sind, starten Sie den Nginx-Dienst und aktivieren Sie ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start nginx
 systemctl enable nginx

Als nächstes ändern Sie den Besitzer des Verzeichnisses /opt/djangoproject auf Nginx, wie unten gezeigt:

chown -R nginx:nginx /opt/djangoproject

Erstellen Sie eine Systemdienstdatei für Django

Als nächstes erstellen Sie eine Systemdatei für die Verwaltung des Django-Dienstes mit dem folgenden Befehl:

nano /etc/systemd/system/django.service

Fügen Sie die folgenden Zeilen hinzu:

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

[Service]
User=nginx
Group=nginx
WorkingDirectory=/opt/djangoproject
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:application

[Install]
WantedBy=multi-user.target

Speichern und schließen Sie die Datei und laden Sie den systemdämon mit dem folgenden Befehl neu:

systemctl daemon-reload

Als nächstes starten Sie den Django-Dienst und aktivieren ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start django
 systemctl enable django

Sie können nun den Status des Django-Dienstes mit dem folgenden Befehl überprüfen:

systemctl status django

Sie sollten die folgende Ausgabe sehen: Sie sollten die folgende Ausgabe sehen:

? django.service - django daemon
   Loaded: loaded (/etc/systemd/system/django.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-02 22:27:51 EST; 3min 32s ago
 Main PID: 960 (django)
    Tasks: 4 (limit: 25028)
   Memory: 95.2M
   CGroup: /system.slice/django.service
           ??960 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>
           ??964 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>
           ??965 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>
           ??966 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>

Mar 02 22:27:51 centos8 systemd[1]: Started django daemon.
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [960] [INFO] Starting django 20.0.4
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [960] [INFO] Listening at: unix:/opt/djangoproject/djangoproject.sock (960)
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [960] [INFO] Using worker: sync
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [964] [INFO] Booting worker with pid: 964
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [965] [INFO] Booting worker with pid: 965
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [966] [INFO] Booting worker with pid: 966
h pid: 966

Konfigurieren Sie Nginx für Django

Als nächstes müssen Sie Nginx als Reverse-Proxy für Django konfigurieren. Erstellen Sie dazu eine neue Nginx-Konfigurationsdatei mit dem folgenden Befehl:

nano /etc/nginx/conf.d/django.conf

Fügen Sie die folgenden Zeilen hinzu:

server {
    listen 80;
    server_name your-server-ip

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /opt/djangoproject;
    }

    location / {
        proxy_set_header Host $http_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;
        proxy_pass http://unix:/opt/djangoproject/djangoproject.sock;
    }
}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Testen Sie dann die nginx auf einen Syntaxfehler mit dem folgenden Befehl:

nginx -t

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Starten Sie anschließend den Nginx-Dienst neu, um die Änderungen zu implementieren:

systemctl start nginx

Sie können auch Nginx mit dem folgenden Befehl überprüfen:

systemctl status nginx

Dies ergibt die folgende Ausgabe:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-02 22:28:13 EST; 4min 14s ago
  Process: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 985 (nginx)
    Tasks: 3 (limit: 25028)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??985 nginx: master process /usr/sbin/nginx
           ??986 nginx: worker process
           ??987 nginx: worker process

Mar 02 22:28:12 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 02 22:28:12 centos8 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 02 22:28:12 centos8 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 02 22:28:13 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.

Sie können jetzt auf Ihre Django-Anwendung über die URL http://your-server-ip zugreifen.

Schlussfolgerung

In dieser Anleitung haben wir gelernt, wie man Django unter CentOS 8 installiert. Wir haben auch gelernt, wie man Gunicorn zum Erstellen und Verwalten des Django-Dienstes und zur Konfiguration von Nginx als Reverse-Proxy für die Django-Anwendung verwendet.

Das könnte dich auch interessieren …