Django est un framework qui permet de créer rapidement des applications Python. Par défaut ces applications sont configurées pour stocker leur données dans des bases SQLite.
Ce type de configuration fonctionne parfaitement pour des applications peu gourmandes, mais utiliser un autre système de stockage peut aider à augmenter les performances en production.
Dans cet article nous verrons comment installer et configurer PostgreSQL et l’utiliser avec vos applications Django.
Installez les composants depuis les dépôts Ubuntu
Pour commencer nous avons besoin d’une distribution Ubuntu 16.04 fraîchement installée.
Ensuite, nous installons les prérequis :
Si vous utilisez Python 2 :
apt-get update apt-get install python-pip python-dev libpq-dev postgresql postgresql-contrib
Si vous utilisez Python 3 :
apt-get update apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib
Créez une base de données et un utilisateur
Par défaut PostgreSQL va créer un utilisateur nommé « postgres« . Nous allons nous servir de celui-ci pour créer nos bases et nos utilisateurs.
pour se connecter :
sudo -u postgres psql
Nous créons une base pour notre projet Django. Chaque projet devra avoir sa propre base pour des raisons de sécurité.
Ici nous utiliserons la base « projet » :
postgres=# CREATE DATABASE projet;
Nous créons ensuite l’utilisateur qui se connectera à la base depuis votre projet Django. Ici « utilisateur » :
postgres=# CREATE USER utilisateur WITH PASSWORD 'pass';
Nous ajustons ensuite quelques paramètres, comme l’encodage ou le le ‘timezone‘ :
postgres=# ALTER ROLE utilisateur SET client_encoding To 'utf8'; postgres=# ALTER ROLE utilisateur SET default_transaction_isolation TO 'read committed'; postgres=# ALTER ROLE utilisateur SET timezone TO 'UTC';
Il s’agit de recommandations demandées pour créer un projet Django.
Nous denons des droits à notre utilisateur sur notre base :
postgres=# GRANT ALL PRIVILEGES ON DATABASE projet TO utilisateur;
On quitte PostgreSQL :
postgres=# \q
Installez Django
Pour plus de flexibilité nous allons installer Django à l’intérieur d’un environnement virtuel Python. Le paquet ‘virtualenv‘ permet de faire cela.
Si vous utilisez Python 2 :
# pip install virtualenv
Si vous utilisez Python 3 :
# pip3 install virtualenv
On créer un répertoire qui va contenir notre projet :
# mkdir /home/projet # cd /home/projet
On créer l’environnement virtuel :
# virtualenv projetenv
On l’active :
# source projetenv/bin/activate
Nous installons localement une copie de Python et de psycopg2 qui nous permettra d’utiliser notre base PostgreSQL :
(projetenv) $ pip install django psycopg2
On démarre le projet Django :
(projetenv) $ django-admin.py startproject projet
Configurez Django pour accéder à la base PostgreSQL
On ouvre le fichier de configuration principal du projet :
(projetenv) $ nano /home/projet/projet/settings.py
Vers la fin du fichier, vous trouvez une section « DATABASES » qui ressemble à cela :
[...] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } [...]
Il faut modifier cette partie pour configurer l’accès à notre base PostgreSQL :
[...] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'projet', 'USER': 'utilisateur', 'PASSWORD': 'pass', 'HOST': 'localhost', 'PORT': '', } } [...]
Migrez vers la base PostgreSQL et testez le projet
Nous pouvons désormais migrer notre projet vers PostgreSQL :
(projetenv) $ cd /home/projet (projetenv) $ python manage.py makemigrations (projetenv) $ python manage.py migrate
Nous créons un compte d’administration :
(projetenv) $ python manage.py createsuperuser
Donnez un nom d’utilisateur, un e-mail et un mot passe.
Nous démarrons notre serveur de développement :
(projetenv) $ python manage.py runserver 0.0.0.0:8000
Notre application écoutera sur le port TCP 8000, il est donc indispensable d’ouvrir celui-ci dans le pare-feu de votre VPS.
Finalement nous nous connectons sur la page d’accueil de notre projet Django :
https://IP_de_votre_VPS:8000