GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie Django mit PostgreSQL und Nginx unter Ubuntu 16.04

Django ist ein kostenloses Open-Source-Webframework, das auf Python basiert. Es ist ein High-Level-Python-Webframework mit einem MVT-Architekturmuster (Model-View-Template). Django wird von der Django Software Foundation (DSF) gepflegt. Das Django-Webframework ist schnell, es hilft Entwicklern, Anwendungen schnell zu erstellen (RAD).

In diesem Tutorial zeige ich Ihnen, wie Sie das Django-Webframework installieren und konfigurieren, um eine PostgreSQL-Datenbank für die Entwicklung zu verwenden. Wir werden Nginx aus Geschwindigkeits- und Sicherheitsgründen als Reverse-Proxy für das Django-Webframework ausführen. Django wird unter dem Python-WSGI-HTTP-Server 'Gunicorn' laufen, wir werden 'Gunicorn' mit 'Supervisor' als Prozesssteuerungssystem verwalten und steuern.

Voraussetzung

  • Ubuntu 16.04
  • Root-Berechtigungen

Schritt 1 – Installieren Sie Django, Virtualenv und Gunicorn

Ich werde python3 als Standard-Python-Version für das System verwenden. Wir werden python3 und pip3 auf Ubuntu 16.04 installieren. Pip3 ist ein Paketverwaltungssystem zum Installieren und Verwalten von in Python geschriebenen Softwarepaketen.

Verbinden Sie sich als Root-Benutzer auf dem Terminal oder per SSH (wie ich es hier mache) mit Ihrem Server und aktualisieren Sie das Ubuntu-Repository:

ssh [email protected]
sudo apt-get update

Installieren Sie python3 und pip3 mit diesem apt-Befehl:

sudo apt-get install python3-pip python3-dev

Erstellen Sie einen neuen Symlink für den pip3-Befehl, um ihn als „pip“ anstelle von „pip3“ verwenden zu können, und aktualisieren Sie ihn:

ln -s /usr/bin/pip3 /usr/bin/pip
pip install --upgrade pip

Installieren Sie als Nächstes die erforderlichen Python-Pakete mit dem Befehl pip. Ich werde Django, Virtualenv und Gunicorn hier installieren:

pip install django virtualenv gunicorn

Schritt 2 – PostgreSQL installieren und konfigurieren

Wir werden PostgreSQL als Datenbank für unser Django-Projekt verwenden. Installieren Sie PostgreSQL mit diesem apt-Befehl.

sudo apt-get install postgresql postgresql-contrib libpq-dev

Wenn die Installation abgeschlossen ist, installieren Sie das neue Python-Paket mit dem Namen „psycopg2“ mit pip. Es ist der Python-PostgreSQL-Datenbankadapter.

pip install psycopg2

Greifen Sie nun auf den postgres-Benutzer zu und öffnen Sie die PostgreSQL-Shell mit dem psql-Befehl:

su - postgres
psql

Legen Sie mit dem folgenden Befehl ein neues Passwort für den Postgres-Benutzer fest:

\password postgres
Enter new password:

Erstellen Sie als Nächstes eine neue Datenbank und einen neuen Benutzer/eine neue Rolle für das Django-Projekt in PostgreSQL. Ich werde neue Datenbanken mit dem Namen „django_db“ mit dem Benutzer/der Rolle „python_dev“ erstellen. Geben Sie den folgenden Befehl in der PostgreSQL-Shell ein.

CREATE USER python_dev WITH PASSWORD 'aqwe123';
CREATE DATABASE django_db OWNER python_dev;

Siehe Datenbankliste und Rolle:

\list

Schritt 3 – Neues Django-Projekt starten

Starten Sie das erste Django-Projekt mit dem Namen „hello_django“. Wir werden keine Root-Rechte für das Projekt verwenden, ich werde einen normalen Linux-Benutzer „natsume“ für das Projekt verwenden. Sie können gerne einen anderen Benutzernamen verwenden, der Ihr Projekt beschreibt.

Neuen Benutzer erstellen

Erstellen Sie mit dem folgenden Befehl einen neuen Linux-Benutzer:

useradd -m -s /bin/bash natsume
passwd natsume

-m =Home-Verzeichnis automatisch erstellen.
-s =Standard-Shell für den Benutzer definieren.

Neue virtuelle Umgebung erstellen und Django installieren

Melden Sie sich beim Natsume-Benutzer an:

su - natsume

Erstellen Sie eine neue virtuelle Umgebung im Verzeichnis „myproject“ für unser Django-Projekt mit python3 als Standard-Python-Version.

mkdir myproject
virtualenv --python=python3 myproject/

Gehen Sie in das Verzeichnis „myproject“ und aktivieren Sie die virtuelle Umgebung.

cd myproject/
source bin/activate

Installieren Sie als Nächstes Django, gunicorn und psycopg2 mit dem pip-Befehl in dieser Umgebung.

pip install django gunicorn psycopg2

Neues Projekt mit PostgreSQL starten

Starten Sie das Django-Projekt „hello_django“ mit dem folgenden django-admin-Befehl:

django-admin startproject hello_django

Es wird ein neues Verzeichnis ‚hello_django‘ erstellen, in dieses Verzeichnis gehen und die Konfigurationsdatei ‚setting.py‘ mit vim bearbeiten.

cd hello_django/
vim hello_django/settings.py

Ändern Sie die Datenbankeinstellungen in Zeile 76 mit der folgenden Konfiguration:

        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db',
        'USER': 'python_dev',
        'PASSWORD': 'aqwe123',
        'HOST': 'localhost',
        'PORT': '',

Konfigurieren Sie am Ende der Datei die statische URL, indem Sie die folgende Konfigurationszeile STATIC_ROOT hinzufügen:

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

Speichern und beenden.

Als nächstes migrieren Sie die Datenbank in unsere postgreSQL-Datenbank und erstellen Sie einen neuen Admin-Benutzer. Sammeln Sie dann alle statischen Dateien im statischen Verzeichnis, das automatisch erstellt wird, wenn wir den Befehl ausführen.

python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic

Stellen Sie sicher, dass kein Fehler vorliegt, und führen Sie mit dem Befehl „runserver“ einen Testlauf des Django-Projektservers durch.

python manage.py runserver 0.0.0.0:8080

Öffnen Sie Ihren Webbrowser und besuchen Sie die Server-IP-Adresse auf Port 8080, in meinem Fall http://192.168.1.115:8080. Sie sehen die Django-Standardseite.

Drücken Sie zum Beenden Strg + c.

Schritt 4 – Konfigurieren Sie das Django-Projekt mit Gunicorn

Gunicorn oder Green Unicorn ist ein Python-WSGI-HTTP-Server, der vom Ruby Unicorn-Projekt geforkt wurde. Es unterstützt verschiedene Web-Frameworks und ist einfach zu konfigurieren.

Wechseln Sie in das Verzeichnis „myproject“ und aktivieren Sie die virtuelle Umgebung für das Home-Verzeichnis des Benutzers natsume.

cd ~/myproject/
source bin/activate

Erstellen Sie eine neue Datei ‚gunicorn_start‘ im bin-Verzeichnis mit vim:

vim bin/gunicorn_start

Konfiguration unten einfügen:

#!/bin/bash

# Project Name
NAME="hello_django"                       

# Django Project Directory
DJANGODIR=/home/natsume/myproject/hello_django          

# Run gunicorn on the socket file
SOCKFILE=/home/natsume/myproject/hello_django/run/gunicorn.sock

# Gunicorn running as user and group
USER=natsume
GROUP=natsume

# Workers
NUM_WORKERS=3

#Module Setting
#replace hello_django with your project name
DJANGO_SETTINGS_MODULE=hello_django.settings
DJANGO_WSGI_MODULE=hello_django.wsgi

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-

Speichern und beenden.

Machen Sie die Datei mit dem Befehl chmod ausführbar.

chmod u+x bin/gunicorn_start

Schritt 5 – Supervisor installieren und konfigurieren

Supervisor ist ein Prozessleitsystem für Linux-Betriebssysteme. Es ermöglicht Ihnen, eine Reihe von Prozessen unter Linux zu konfigurieren, zu überwachen und zu steuern. Supervisor basiert auf Python, wir können es aus dem Python-Repository pypi mit dem Befehl pip oder aus dem Ubuntu-Repository mit apt installieren.

Ich werde Supervisor mit diesem apt-Befehl installieren:

sudo apt-get install supervisor

Supervisor hat eine Standardkonfigurationsdatei im Verzeichnis „/ect/supervisor/“. Gehen Sie in dieses Verzeichnis und erstellen Sie eine neue Konfiguration für unser Django-Projekt, damit wir es mit Supervisor steuern können.

cd /etc/supervisor/conf.d/
vim hello-django.conf

Fügen Sie die Supervisor-Konfiguration unten ein:

[program:hello_django]
command = sh /home/natsume/myproject/bin/gunicorn_start
user = natsume
stdout_logfile = /home/natsume/myproject/logs/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

Speichern und beenden.

Melden Sie sich als Nächstes beim natsume-Benutzer an und erstellen Sie einige Verzeichnisse, die für die Gunicorn-Socket-Datei und die Supervisor-Protokolldatei benötigt werden.

su - natsume

# Directory for gunicorn sock file
mkdir -p myproject/hello_django/run/

# Directory and file for supervisor log files
mkdir -p myproject/logs/
touch myproject/logs/gunicorn_supervisor.log

Mit "exit" zurück zum Root-Benutzer und Supervisor starten:

exit
systemctl start supervisor

Überprüfen Sie den Status und das Protokoll des Prozesses:

supervisorctl
tail -f hello_django

Schritt 6 – Nginx für das Django-Projekt installieren und konfigurieren

In diesem Schritt installieren wir Nginx und konfigurieren es als Reverse-Proxy für unser Django-Projekt.

Installieren Sie Nginx aus dem Ubuntu-Repository:

sudo apt-get install nginx

Wechseln Sie in das Konfigurationsverzeichnis des virtuellen Nginx-Hosts und erstellen Sie eine Datei für den virtuellen Host hello_django:

cd /etc/nginx/sites-available/
vim hello_django

Konfiguration unten einfügen:

# Django running with Gunicorn Sock file
upstream hello_django_project {
    server unix:/home/natsume/myproject/hello_django/run/gunicorn.sock fail_timeout=0;
}

server {

    listen   80;
    server_name www.django-nginx.com;

    client_max_body_size 4G;

    access_log /home/natsume/myproject/logs/nginx-access.log;
    error_log /home/natsume/myproject/logs/nginx-error.log;

    location /static/ {
        alias   /home/natsume/myproject/hello_django/static/;
    }

    location /media/ {
        alias   /home/natsume/myproject/hello_django/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

    # Try to serve static files from nginx, no point in making an
    # *application* server like Unicorn/Rainbows! serve static files.
    if (!-f $request_filename) {
        proxy_pass http://hello_django_project;
        break;
        }
   

# Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /home/natsume/myproject/hello_django/static/;
        }
    }
}

Speichern und beenden.

Aktivieren Sie den virtuellen Host und testen Sie die Nginx-Konfiguration.

ln -s /etc/nginx/sites-available/hello_django /etc/nginx/sites-enabled/
nginx -t

Stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann Nginx neu:

systemctl restart nginx

Schritt 7 – Testen von Django

In Schritt 5 haben wir einen virtuellen Host für unser Django-Projekt mit dem Domänennamen „www.django-nginx.com“ erstellt. Öffnen Sie Ihren Browser und besuchen Sie den Domainnamen, den Sie für Ihr Projekt gewählt haben.

www.django-nginx.com/admin/

Und Sie werden zum Django-Admin-Dashboard weitergeleitet.

Überprüfen Sie, ob alle von uns eingerichteten Dienste mit dem folgenden Befehl ausgeführt werden:

netstat -pl

Sie sehen die PID-, Port- und Sock-Datei, die von allen Diensten verwendet werden.

Die Django-Installation und -Konfiguration mit PostgreSQL und Nginx auf Ubuntu 16.04 war erfolgreich.

  • https://www.djangoproject.com/
  • https://www.nginx.com/
  • http://gunicorn.org/
  • http://supervisord.org/

Ubuntu
  1. So installieren Sie Mattermost mit PostgreSQL und Nginx unter Ubuntu 16.04

  2. So installieren Sie MediaWiki mit Nginx unter Ubuntu 16.04

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

  4. So installieren Sie Postgresql und phpPgAdmin unter Ubuntu 15.04

  5. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

So installieren Sie Redmine 3.2 mit Nginx unter Ubuntu 16.04

So installieren Sie OSClass mit Nginx unter Ubuntu 20.04

So installieren Sie Nginx mit ModSecurity unter Ubuntu 15.04

So installieren Sie Nextcloud 13 auf Ubuntu 16.04 mit Nginx

So installieren und konfigurieren Sie PostgreSQL unter Ubuntu

So installieren und konfigurieren Sie Nginx in Ubuntu 20.04 und Ubuntu 21.04