MySQL ou MariaDB avec Django sur Debian

Django est un framework flexible permettant de créer rapidement des applications Python. Par défaut, les applications Django sont configurées pour stocker les données dans un fichier de base de données SQLite léger. Bien que cela fonctionne bien dans certains cas, un système de gestion de base de données (SGBD) plus traditionnel peut améliorer les performances en production.

Dans ce guide, nous allons vous montrer comment installer et configurer MySQL ou MariaDB pour les utiliser avec vos applications Django. Nous installerons le logiciel nécessaire, créerons des identifiants de base de données pour notre application, puis démarrerons et configurerons un nouveau projet Django pour utiliser cette base de données. Prérequis

Pour commencer, vous aurez besoin d’une instance de serveur Ubuntu 14.04 propre avec un utilisateur non root configuré. L’utilisateur non root doit être configuré avec des privilèges sudo. Apprenez à configurer cela en suivant notre guide de configuration initiale de serveur.

Lorsque vous êtes prêt à continuer, poursuivez la lecture. Installer les composants depuis les dépôts Ubuntu

Installer les composants à partir des dépôts Ubuntu ou Debian

Notre première étape consistera à installer tous les éléments dont nous avons besoin à partir des dépôts. Nous installerons pip, le gestionnaire de paquets Python, afin d’installer et de gérer nos composants Python. Nous installerons également le logiciel de base de données et les bibliothèques associées nécessaires pour interagir avec eux.

Nous couvrirons à la fois MySQL et MariaDB ci-dessous, donc choisissez la section associée au SGBD que vous souhaitez utiliser. MySQL

MySQL

Si vous souhaitez utiliser MySQL, les commandes apt suivantes vous fourniront les paquets dont vous avez besoin:

sudo apt-get update && sudo apt-get install python-pip python-dev mysql-server libmysqlclient-dev

On vous demandera de sélectionner et de confirmer un mot de passe pour le compte administratif MySQL.

Après l’installation, vous pouvez créer la structure de répertoire de base de données en tapant :

sudo mysql_install_db

Vous pouvez ensuite exécuter un script de sécurité simple en exécutant :

sudo mysql_secure_installation

On vous demandera le mot de passe administratif que vous avez défini pour MySQL lors de l’installation. Ensuite, on vous posera une série de questions. En plus de la première question qui vous demande de choisir un autre mot de passe administratif, sélectionnez oui pour chaque question.

Avec l’installation et la configuration initiale de la base de données terminées, nous pouvons passer à la création de notre base de données et de notre utilisateur de base de données. Passez à la section suivante.

MariaDB

Si vous préférez MariaDB, vous pouvez suivre les instructions ci-dessous pour l’installer et effectuer la configuration initiale nécessaire. Installez les paquets à partir des dépôts en tapant :

sudo apt-get update
sudo apt-get install python-pip python-dev mariadb-server libmariadbclient-dev libssl-dev

On vous demandera de sélectionner et de confirmer un mot de passe pour le compte administratif MariaDB.

Vous pouvez ensuite exécuter un script de sécurité simple en exécutant :

sudo mysql_secure_installation

On vous demandera le mot de passe administratif que vous avez défini pour MariaDB lors de l’installation. Ensuite, on vous posera une série de questions. En plus de la première question, qui vous demande de choisir un autre mot de passe administratif, sélectionnez oui pour chaque question.

Avec l’installation et la configuration initiale de la base de données terminées, nous pouvons passer à la création de notre base de données et de notre utilisateur de base de données. Créer une base de données et un utilisateur de base de données

La suite de ce guide peut être suivie telle quelle, que vous ayez installé MySQL ou MariaDB.

Nous pouvons commencer par ouvrir une session interactive avec notre logiciel de base de données en tapant la commande suivante (la commande est la même quel que soit le logiciel de base de données que vous utilisez :

mysql -u root -p

On vous demandera le mot de passe administratif que vous avez sélectionné lors de l’installation. Ensuite, vous obtiendrez un prompt.

Tout d’abord, nous allons créer une base de données pour notre projet Django. Chaque projet doit avoir sa propre base de données isolée pour des raisons de sécurité. Nous appellerons notre base de données « myproject » dans ce guide, mais il est toujours préférable de choisir quelque chose de plus descriptif. Nous définirons le type par défaut de la base de données sur UTF-8, comme le souhaite Django :

CREATE DATABASE myproject CHARACTER SET UTF8;

N’oubliez pas de terminer toutes les commandes dans un prompt SQL par un point-virgule.

Ensuite, nous allons créer un utilisateur de base de données que nous utiliserons pour se connecter à la base de données et interagir avec elle. Définissez le mot de passe sur quelque chose de fort et sécurisé :

CREATE USER myprojectuser@localhost IDENTIFIED BY 'password';

Maintenant, tout ce que nous avons à faire est de donner à notre utilisateur de base de données des droits d’accès à la base de données que nous avons créée :

GRANT ALL PRIVILEGES ON myproject.* TO myprojectuser@localhost;

Videz les modifications pour qu’elles soient disponibles pendant la session en cours :

FLUSH PRIVILEGES;

Quittez le prompt SQL pour revenir à votre session shell normale :

exit

Installer Django dans un environnement virtuel

Maintenant que notre base de données est configurée, nous pouvons installer Django. Pour une meilleure flexibilité, nous installerons Django et toutes ses dépendances dans un environnement virtuel Python.

Vous pouvez obtenir le paquet virtualenv qui vous permet de créer ces environnements en tapant :

sudo pip install virtualenv

Créez un répertoire pour contenir votre projet Django. Déplacez-vous dans le répertoire ensuite :

mkdir ~/monprojet
cd ~/monprojet

Nous pouvons créer un environnement virtuel pour stocker les exigences Python de notre projet Django en tapant :

virtualenv monenv

Cela installera une copie locale de Python et de pip dans un répertoire appelé monenv à l’intérieur de votre répertoire de projet.

Avant d’installer des applications dans l’environnement virtuel, nous devons l’activer. Vous pouvez le faire en tapant :

source monenv/bin/activate

Votre invite changera pour indiquer que vous opérez désormais dans l’environnement virtuel. Il ressemblera à quelque chose comme ceci (monenv)utilisateur@hôte:~/monprojet$.

Une fois votre environnement virtuel activé, vous pouvez installer Django avec pip. Nous installerons également le package mysqlclient qui nous permettra d’utiliser la base de données que nous avons configurée :

pip install django mysqlclient

Nous pouvons maintenant démarrer un projet Django dans notre répertoire monprojet. Cela créera un répertoire enfant du même nom pour contenir le code lui-même, et créera un script de gestion dans le répertoire actuel. Assurez-vous d’ajouter le point à la fin de la commande pour que cela soit configuré correctement :

django-admin.py startproject monprojet .

Configurer les paramètres de la base de données Django

Maintenant que nous avons un projet, nous devons le configurer pour utiliser la base de données que nous avons créée.

Ouvrez le fichier de paramètres principal du projet Django situé dans le répertoire du projet enfant :

nano ~/monprojet/monprojet/settings.py

Vers le bas du fichier, vous verrez une section DATABASES qui ressemble à ceci :

. . .

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

. . .

Cela est actuellement configuré pour utiliser SQLite comme base de données. Nous devons changer cela pour que notre base de données MySQL/MariaDB soit utilisée à la place.

Tout d’abord, changez le moteur pour qu’il pointe vers le backend mysql au lieu du backend sqlite3. Pour le NOM, utilisez le nom de votre base de données (monprojet dans notre exemple). Nous devons également ajouter des identifiants de connexion. Nous avons besoin du nom d’utilisateur, du mot de passe et de l’hôte pour se connecter. Nous ajouterons et laisserons vide l’option port afin que la valeur par défaut soit sélectionnée :

. . .

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

. . .

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Migrer la base de données et tester votre projet

Maintenant que les paramètres Django sont configurés, nous pouvons migrer nos structures de données vers notre base de données et tester le serveur.

Nous pouvons commencer par créer et appliquer des migrations à notre base de données. Étant donné que nous n’avons pas encore de données réelles, cela configurera simplement la structure de base de données initiale :

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

Après avoir créé la structure de la base de données, nous pouvons créer un compte administratif en tapant :

python manage.py createsuperuser

On vous demandera de sélectionner un nom d’utilisateur, de fournir une adresse e-mail, et de choisir et de confirmer un mot de passe pour le compte.

Une fois que vous avez configuré un compte administrateur, vous pouvez tester si votre base de données fonctionne correctement en démarrant le serveur de développement Django :

python manage.py runserver 0.0.0.0:8000

Dans votre navigateur web, visitez le nom de domaine ou l’adresse IP de votre serveur suivi de :8000 pour atteindre la page racine Django par défaut :

http://nom_de_domaine_du_serveur_ou_IP:8000

Vous devriez voir la page d’index par défaut :

Django et MariaDB

Ajoutez /admin à la fin de l’URL et vous devriez pouvoir accéder à l’écran de connexion à l’interface admin :

Connexion à l’administration Django:

Django Admin

Saisissez le nom d’utilisateur et le mot de passe que vous venez de créer en utilisant la commande createsuperuser. Vous serez ensuite dirigé vers l’interface administrateur :

Interface administrateur Django:

Django Inteface

Lorsque vous avez fini d’investiguer, vous pouvez arrêter le serveur de développement en appuyant sur CTRL-C dans votre fenêtre de terminal.

En accédant à l’interface d’administration, nous avons confirmé que notre base de données a stocké les informations de notre compte utilisateur et qu’elle peut être accessible de manière appropriée.

Conclusion

Dans ce guide, nous avons montré comment installer et configurer MySQL ou MariaDB comme base de données de backend pour un projet Django. Bien que SQLite puisse facilement gérer la charge pendant le développement et une utilisation légère en production, la plupart des projets bénéficient de la mise en œuvre d’un SGBD plus complet.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut