Comment utiliser MySQL ou MariaDB avec votre application Django sur Ubuntu 14.04

introduction

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

Dans ce guide, nous montrerons comment installer et configurer MySQL ou MariaDB pour l’utiliser avec vos applications Django. Nous allons installer le logiciel nécessaire, créer les informations d’identification de la base de données pour notre application, puis démarrer et configurer un nouveau projet Django pour utiliser ce moteur.

Conditions préalables

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

Lorsque vous êtes prêt à continuer, lisez la suite.

Installer les composants à partir des référentiels Ubuntu

Notre première étape consistera à installer toutes les pièces dont nous avons besoin à partir des référentiels. Nous allons installer + 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

Si vous voulez utiliser MySQL, les commandes + apt + suivantes vous permettront d’obtenir les paquetages dont vous avez besoin:

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

Vous serez invité à sélectionner et à confirmer un mot de passe pour le compte administratif MySQL.

Après l’installation, vous pouvez créer la structure de répertoires de la 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

Le mot de passe administrateur que vous avez défini pour MySQL lors de l’installation vous sera demandé. Ensuite, on vous posera une série de questions. Outre la première question qui vous demande de choisir un autre mot de passe administratif, sélectionnez oui pour chaque question.

Une fois 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 son utilisateur. 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 packages à partir des référentiels en tapant:

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

Il vous sera demandé 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

Le mot de passe administratif que vous avez défini pour MariaDB lors de l’installation vous sera demandé. Ensuite, on vous posera une série de questions. Outre la première question, vous demandant de choisir un autre mot de passe administratif, sélectionnez oui pour chaque question.

Une fois 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 son utilisateur.

Créer une base de données et un utilisateur de base de données

Le reste de ce guide peut être suivi tel quel, que vous ayez installé MySQL ou MariaDB.

Nous pouvons commencer par vous connecter à une session interactive avec notre logiciel de base de données en tapant ce qui suit (la commande est la même quel que soit le logiciel de base de données que vous utilisez):

mysql -u root -p

Le mot de passe administratif que vous avez sélectionné lors de l’installation vous sera demandé. Ensuite, vous recevrez une invite.

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 ++ dans ce guide, mais il est toujours préférable de choisir quelque chose de plus descriptif. Nous allons définir le type par défaut pour la base de données sur UTF-8, ce à quoi Django s’attend:

CREATE DATABASE  CHARACTER SET UTF8;

N’oubliez pas de terminer toutes les commandes à l’invite SQL par un point-virgule.

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

CREATE USER @localhost IDENTIFIED BY '';

Il ne reste plus qu’à donner à notre base de données les droits d’accès à la base de données que nous avons créée:

GRANT ALL PRIVILEGES ON .* TO @localhost;

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

FLUSH PRIVILEGES;

Quittez l’invite SQL pour revenir à votre session shell habituelle:

exit

Installer Django dans un environnement virtuel

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

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

sudo pip install virtualenv

Créez un répertoire pour votre projet Django. Accédez ensuite au répertoire:

mkdir ~/
cd ~/

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

virtualenv

Cela installera une copie locale de Python et + pip + dans un répertoire appelé ++ dans 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 /bin/activate

Votre invite changera pour indiquer que vous travaillez maintenant dans l’environnement virtuel. Cela ressemblera à quelque chose comme ceci + () @: ~ / $ +.

Une fois que votre environnement virtuel est actif, vous pouvez installer Django avec + pip +. Nous allons également installer le paquet + 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 + myproject +. Cela créera un répertoire enfant du même nom qui contiendra 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 celui-ci soit correctement configuré:

django-admin.py startproject  .

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 du projet Django principal situé dans le répertoire du projet enfant:

nano ~///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'),
   }
}

. . .

Ceci est actuellement configuré pour utiliser SQLite en tant que 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 + NAME +, utilisez le nom de votre base de données (++ 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 nous connecter. Nous allons ajouter et laisser en blanc l’option du port afin que la valeur par défaut soit sélectionnée:

. . .

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.',
       'NAME': '',
       'USER': '',
       '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. Comme nous n’avons pas encore de données réelles, cela va simplement configurer la structure de base de données initiale:

cd ~/
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

Vous serez invité à sélectionner un nom d’utilisateur, à fournir une adresse électronique, à choisir et à confirmer un mot de passe pour le compte.

Une fois que vous avez un compte administrateur configuré, vous pouvez vérifier que 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 par défaut de Django:

http://:8000

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

image: https: //assets.digitalocean.com/articles/django_mysql_1404/django_index.png [index Django]

Ajoutez + / admin + à la fin de l’URL pour pouvoir accéder à l’écran de connexion à l’interface d’administration:

image: https: //assets.digitalocean.com/articles/django_mysql_1404/admin_login.png [Connexion à l’administrateur Django]

Entrez le nom d’utilisateur et le mot de passe que vous venez de créer à l’aide de la commande + createuperuser +. Vous serez ensuite amené à l’interface d’administration:

image: https: //assets.digitalocean.com/articles/django_mysql_1404/admin_interface.png [Interface d’administration Django]

Une fois l’enquête terminée, vous pouvez arrêter le serveur de développement en appuyant sur CTRL-C dans la fenêtre de votre terminal.

En accédant à l’interface d’administration, nous avons confirmé que notre base de données avait stocké les informations de notre compte utilisateur et que l’accès à celle-ci était approprié.

Conclusion

Dans ce guide, nous avons montré comment installer et configurer MySQL ou MariaDB en tant que base de données principale pour un projet Django. Alors que SQLite peut facilement gérer la charge lors du développement et de la production légère, la plupart des projets bénéficient de la mise en œuvre d’un SGBD plus complet.