So verwenden Sie PostgreSQL mit Ihrer Django-Anwendung unter Ubuntu 14.04

Einführung

Django ist ein flexibles Framework zum schnellen Erstellen von Python-Anwendungen. Standardmäßig sind Django-Anwendungen so konfiguriert, dass Daten in einer kompakten SQLite-Datenbankdatei gespeichert werden. Während dies unter bestimmten Belastungen gut funktioniert, kann ein herkömmlicheres DBMS die Leistung in der Produktion verbessern.

In diesem Handbuch wird gezeigt, wie Sie PostgreSQL für Ihre Django-Anwendungen installieren und konfigurieren. Wir werden die erforderliche Software installieren, Datenbankanmeldeinformationen für unsere Anwendung erstellen und dann ein neues Django-Projekt starten und konfigurieren, um dieses Backend zu verwenden.

Voraussetzungen

Zu Beginn benötigen Sie eine saubere Ubuntu 14.04-Serverinstanz mit einem Benutzer ohne Rootberechtigung. Der Benutzer ohne Rootberechtigung muss mit "+ sudo +" - Berechtigungen konfiguriert sein. Weitere Informationen zum Einrichten finden Sie in unserem initial server setup guide.

Wenn Sie bereit sind fortzufahren, lesen Sie weiter.

Installieren Sie die Komponenten aus den Ubuntu-Repositories

Unser erster Schritt wird die Installation aller Teile sein, die wir aus den Repositories benötigen. Wir werden + pip +, den Python-Paketmanager, installieren, um unsere Python-Komponenten zu installieren und zu verwalten. Wir werden auch die Datenbanksoftware und die zugehörigen Bibliotheken installieren, die für die Interaktion mit ihnen erforderlich sind.

Mit den folgenden "+ apt +" - Befehlen erhalten Sie die Pakete, die Sie benötigen:

sudo apt-get update
sudo apt-get install python-pip python-dev libpq-dev postgresql postgresql-contrib

Mit der Installation können wir fortfahren, um unsere Datenbank und den Datenbankbenutzer zu erstellen.

Erstellen Sie eine Datenbank und einen Datenbankbenutzer

Standardmäßig verwendet Postgres ein Authentifizierungsschema mit der Bezeichnung "Peer-Authentifizierung" für lokale Verbindungen. Grundsätzlich bedeutet dies, dass sich der Benutzer ohne weitere Authentifizierung anmelden kann, wenn der Benutzername des Betriebssystems des Benutzers mit einem gültigen Postgres-Benutzernamen übereinstimmt.

Während der Postgres-Installation wurde ein Betriebssystembenutzer mit dem Namen "+ postgres " erstellt, der dem administrativen Benutzer " postgres +" PostgreSQL entspricht. Wir müssen zu diesem Benutzer wechseln, um administrative Aufgaben auszuführen:

sudo su - postgres

Sie sollten sich jetzt in einer Shell-Sitzung für den Benutzer "+ postgres +" befinden. Melden Sie sich bei einer Postgres-Sitzung an, indem Sie Folgendes eingeben:

psql

Zunächst erstellen wir eine Datenbank für unser Django-Projekt. Jedes Projekt sollte aus Sicherheitsgründen eine eigene isolierte Datenbank haben. Wir werden unsere Datenbank in diesem Handbuch als "++" bezeichnen, aber es ist immer besser, etwas aussagekräftigeres auszuwählen:

CREATE DATABASE ;

Denken Sie daran, alle Befehle an einer SQL-Eingabeaufforderung mit einem Semikolon zu beenden.

Als Nächstes erstellen wir einen Datenbankbenutzer, mit dem wir eine Verbindung zur Datenbank herstellen und mit dieser interagieren. Stellen Sie das Passwort auf etwas Starkes und Sicheres ein:

CREATE USER  WITH PASSWORD '';

Anschließend ändern wir einige der Verbindungsparameter für den gerade erstellten Benutzer. Dies beschleunigt die Datenbankoperationen, sodass nicht bei jedem Verbindungsaufbau die richtigen Werte abgefragt und eingestellt werden müssen.

Wir setzen die Standardkodierung auf UTF-8, was Django erwartet. Wir setzen außerdem das Standard-Transaktionsisolationsschema auf "read commit", wodurch Lesevorgänge für nicht festgeschriebene Transaktionen blockiert werden. Zuletzt stellen wir die Zeitzone ein. Standardmäßig verwenden Ihre Django-Projekte "+ UTC":

ALTER ROLE  SET client_encoding TO 'utf8';
ALTER ROLE  SET default_transaction_isolation TO 'read committed';
ALTER ROLE  SET timezone TO 'UTC';

Jetzt müssen wir unseren Datenbankbenutzern nur noch Zugriffsrechte auf die von uns erstellte Datenbank gewähren:

GRANT ALL PRIVILEGES ON DATABASE  TO ;

Verlassen Sie die SQL-Eingabeaufforderung, um zur Benutzer-Shell-Sitzung "+ postgres" zurückzukehren:

\q

Beenden Sie die Benutzer-Shell-Sitzung "+ postgres", um zur normalen Benutzer-Shell-Sitzung zurückzukehren:

exit

Installieren Sie Django in einer virtuellen Umgebung

Nachdem unsere Datenbank eingerichtet ist, können wir Django installieren. Zur Verbesserung der Flexibilität werden wir Django und alle seine Abhängigkeiten in einer virtuellen Python-Umgebung installieren.

Sie erhalten das Paket "+ virtualenv +", mit dem Sie diese Umgebungen erstellen können, indem Sie Folgendes eingeben:

sudo pip install virtualenv

Erstellen Sie ein Verzeichnis für Ihr Django-Projekt. Gehen Sie anschließend in das Verzeichnis:

mkdir ~/
cd ~/

Wir können eine virtuelle Umgebung zum Speichern der Python-Anforderungen Ihres Django-Projekts erstellen, indem wir Folgendes eingeben:

virtualenv

Dies installiert eine lokale Kopie von Python und "+ pip " in ein Verzeichnis mit dem Namen "+" in Ihrem Projektverzeichnis.

Bevor wir Anwendungen in der virtuellen Umgebung installieren, müssen wir sie aktivieren. Sie können dies tun, indem Sie Folgendes eingeben:

source /bin/activate

Ihre Eingabeaufforderung ändert sich und zeigt an, dass Sie jetzt in der virtuellen Umgebung arbeiten. Es wird ungefähr so ​​aussehen: + () @: ~ / $ +.

Sobald Ihre virtuelle Umgebung aktiv ist, können Sie Django mit + pip + installieren. Wir werden auch das Paket + psycopg2 + installieren, mit dem wir die von uns konfigurierte Datenbank verwenden können:

pip install django psycopg2

Wir können jetzt ein Django-Projekt in unserem + myproject + Verzeichnis starten. Dadurch wird ein gleichnamiges untergeordnetes Verzeichnis erstellt, in dem sich der Code selbst befindet, und im aktuellen Verzeichnis wird ein Verwaltungsskript erstellt. Stellen Sie sicher, dass der Punkt am Ende des Befehls hinzugefügt wird, damit dies korrekt eingerichtet ist:

django-admin.py startproject  .

Konfigurieren Sie die Django-Datenbankeinstellungen

Nachdem wir ein Projekt haben, müssen wir es konfigurieren, um die von uns erstellte Datenbank zu verwenden.

Öffnen Sie die Einstellungsdatei für das Django-Hauptprojekt, die sich im untergeordneten Projektverzeichnis befindet:

nano ~///settings.py

Am Ende der Datei sehen Sie einen Abschnitt "+ DATABASES +", der so aussieht:

. . .

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.sqlite3',
       'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

. . .

Dies ist derzeit so konfiguriert, dass SQLite als Datenbank verwendet wird. Wir müssen dies ändern, damit stattdessen unsere PostgreSQL-Datenbank verwendet wird.

Ändern Sie zuerst die Engine so, dass das + postgresql_psycopg2 + Backend anstelle des + sqlite3 + Backends verwendet wird. Verwenden Sie für "+ NAME " den Namen Ihrer Datenbank (in unserem Beispiel "+"). Wir müssen auch Anmeldeinformationen hinzufügen. Wir benötigen den Benutzernamen, das Passwort und den Host, um eine Verbindung herzustellen. Wir werden die Port-Option hinzufügen und leer lassen, damit die Standardeinstellung ausgewählt wird:

. . .

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

. . .

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Migrieren Sie die Datenbank und testen Sie Ihr Projekt

Nachdem die Django-Einstellungen konfiguriert wurden, können wir unsere Datenstrukturen in unsere Datenbank migrieren und den Server testen.

Wir können damit beginnen, Migrationen zu erstellen und auf unsere Datenbank anzuwenden. Da wir noch keine tatsächlichen Daten haben, wird hiermit einfach die anfängliche Datenbankstruktur eingerichtet:

cd ~/
python manage.py makemigrations
python manage.py migrate

Nach dem Erstellen der Datenbankstruktur können wir ein Administratorkonto erstellen, indem wir Folgendes eingeben:

python manage.py createsuperuser

Sie werden aufgefordert, einen Benutzernamen auszuwählen, eine E-Mail-Adresse anzugeben und ein Kennwort für das Konto auszuwählen und zu bestätigen.

Sobald Sie ein Administratorkonto eingerichtet haben, können Sie testen, ob Ihre Datenbank ordnungsgemäß funktioniert, indem Sie den Django-Entwicklungsserver starten:

python manage.py runserver 0.0.0.0:8000

Besuchen Sie in Ihrem Webbrowser den Domainnamen oder die IP-Adresse Ihres Servers, gefolgt von "+: 8000 +", um die Standard-Django-Root-Seite zu erreichen:

http://:8000

Sie sollten die Standardindexseite sehen:

Fügen Sie "+ / admin +" an das Ende der URL an und Sie sollten in der Lage sein, auf den Anmeldebildschirm der Admin-Oberfläche zuzugreifen:

Geben Sie den Benutzernamen und das Passwort ein, die Sie gerade mit dem Befehl + createduperuser + erstellt haben. Sie werden dann zur Administrationsoberfläche weitergeleitet:

Wenn Sie mit den Nachforschungen fertig sind, können Sie den Entwicklungsserver stoppen, indem Sie in Ihrem Terminalfenster STRG-C drücken.

Durch den Zugriff auf die Administrationsoberfläche haben wir bestätigt, dass in unserer Datenbank unsere Benutzerkontoinformationen gespeichert sind und dass auf diese entsprechend zugegriffen werden kann.

Fazit

In diesem Handbuch wird gezeigt, wie Sie PostgreSQL als Backend-Datenbank für ein Django-Projekt installieren und konfigurieren. Während SQLite die Last während der Entwicklung und der Light Production-Nutzung problemlos bewältigen kann, profitieren die meisten Projekte von der Implementierung eines umfassenderen DBMS.