TP3. Configurer un serveur de base de données
Sommaire
Pré-requis
Pour réaliser ce TP vous devez connaître les éléments suivants :
Objectifs
Ce TP / TD a pour objectif de vous faire découvrir comment configurer un serveur de base de données (MySQL) pour qu'il soit utilisable par un serveur Web (Apache), mais également par une application Client (C#, Java, PHP, etc.).
Application cliente ?
Une application cliente est une application qui se connecte à un serveur pour récupérer des données et les afficher à l'utilisateur. Le découpage entre serveur et client est une notion qui est très importante dans le développement d'applications.
En effet, cela permet de :
- Répartir les ressources entre plusieurs machines.
- Isoler les données de l'application.
- Sécuriser les données de l'application (accès à la base de données).
Nous allons donc dans ce TP nous concentrer sur la base de données et uniquement sur celle-ci.
Machine type examen
Comprendre le découpage multimachine est un élément important pour le passage de l'examen. Il est donc important de bien comprendre ce que nous faisons dans ce TP.
Avant-propos : Les environnements
Rappel, en informatique, il est important de différencier les différents environnements :
- Production : C'est l'environnement qui est utilisé par les utilisateurs finaux. Il est donc important qu'il soit stable et sécurisé.
- Test / Staging : C'est l'environnement qui est utilisé pour tester les nouvelles fonctionnalités.
- Développement : C'est l'environnement qui est utilisé par les développeurs pour tester leur code.
Chaque environnement à un rôle bien précis, il convient donc de travailler différemment sur chacun d'eux.
- Votre machine est votre environnement de développement.
- La machine que nous allons créer aujourd'hui peut-être votre environnement distant de base de données (test ou staging).
- La machine sur laquelle vous allez déployer votre site web de l'AP sera votre environnement de production.
Gare au nommage
Nous allons créer dans ce TP / TD une machine qui pourra vous servir de base de données pour vos différents projets. Je vous invite donc à être vigilant sur le nommage de cette machine, pour que celle-ci soit un nom qui va permettre son identification.
La machine
Pour réaliser ce TP, je vous propose que l'on réfléchisse ensemble sur la machine que nous allons créer.
Les besoins
Les besoins de cette machine sont les suivants :
- Elle doit être accessible uniquement depuis le réseau du lycée.
- Elle doit permettre de stocker plusieurs bases de données.
- Elle doit avoir un accès SSH sécurisé.
- Elle doit permettre de conserver vos bases de données pour les deux prochaines années.
- Elle doit être administrable à distance.
Les choix
Voilà la liste des choix que nous allons devoir faire pour créer cette machine :
- Espace disque :
- Mémoire vive :
- Processeur :
- OS :
- Logiciels :
Avant de créer votre machine, je vous invite à réfléchir sur ces choix. Une fois votre réflexion terminée, nous allons débriefer ensemble.
Une réponse possible
- Espace disque : 10 Go.
- Mémoire vive : 1 Go.
- Processeur : 1 vCPU.
- OS : Debian 11.5.
- Logiciels : MySQL / MariaDB, SSH, Apache, PHP.
- Accès SSH : Sans mot de passe, uniquement avec une clé SSH.
- Votre machine ne doit pas avoir de d’interface graphique (inutile pour un serveur).
Pourquoi cette configuration ? Apache et PHP sont installés, car, nous allons mettre sur votre serveur PHPMyAdmin. Si vous ne souhaitez pas installer PHPMyAdmin, vous pouvez supprimer Apache et PHP.
Création de la machine
Maintenant que notre besoin est défini, nous allons pouvoir créer notre machine. Je vous laisse suivre la procédure suivante :
- TP1. Créer une VM sur la ferme.
- TP2. Avoir une machine Debian avec Apache + PHP => ou la synthèse de ce TP : Configurer une serveur Debian pour le Web
Vous souhaitez juste les commandes ?
Voici la procédure de création de la partie PHP + Apache :
apt-get update
apt-get install wget lsb-release apt-transport-https gnupg2 ca-certificates -y
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
# Installer Apache + PHP
apt-get install open-vm-tools apache2 php8.2 php8.2-fpm php8.2-cli php8.2-{bz2,curl,mbstring,intl,pdo,mysql,gd} -y
# Activer PHP dans Apache
a2enmod proxy_fcgi setenvif rewrite
a2enconf php8.2-fpm
# Active Apache
systemctl restart apache2
systemctl enable apache2
# Vérifier la version de PHP
php -v
# Affiche OK si le serveur web est accessible.
curl -s --head http://localhost:80 | grep "HTTP/1.[01] [23].." && echo "Le serveur écoute bien sur le port 80." || echo "Aucun serveur en écoute sur le port 80."
Des points à vérifier
- Votre machine doit posséder une IP fixe (à générer via le configurateur réseau, en prenant soin de ne pas utiliser une IP déjà utilisée).
- Votre machine doit être à jour (
apt update && apt upgrade
). - Votre machine doit avoir un accès SSH sécurisé (via échange de clé).
Je veux une fiche serveur
Je vous rappelle que vous devez avoir une fiche serveur pour chaque machine que vous créez. Cette fiche doit être complète et doit contenir les informations de connexion à votre machine (les IP, Login, Mot de passe, etc.).
Création complète de la VM
Dans cette version, vous allez devoir créer la VM depuis le début. Vous avez plus d'options, mais vous devez réaliser l'installation du système d'exploitation.
Meilleure solution
Création de la VM via un modèleDans cette version, vous allez créer votre VM à partir d'un modèle. Le modèle contient déjà le système d'exploitation et les logiciels installés. Vous n'avez plus qu'à configurer la VM (réseau, utilisateur, etc.).
Configuration de la base de la machine
Si vous avez correctement suivi les TP précédents, vous devriez avoir une machine qui ressemble à ça :
- Logiciels installés : SSH, Apache, PHP, MySQL, vim.
- VMWare Tools installé. (
apt install open-vm-tools
). - Accès SSH : Via échange de clé.
- Accès Web fonctionnel (via le port 80).
VMWare Tools
Les VMWare Tools sont des logiciels qui permettent d'optimiser l'utilisation de la machine virtuelle. Ils sont très importants pour la performance de votre machine, vous devez donc les installer (sinon Bruno ne vous aime plus).
La base de données
Notre machine est maintenant prête à accueillir le serveur de base de données. Nous avons plusieurs possibilités :
- MariaDB
- MySQL
- PostgreSQL
Dans ce TP, nous allons utiliser MariaDB. Pourquoi ? Car celui-ci est disponible de base sur debian.
Installation de MariaDB
Vous l'avez compris, installer un logiciel sur Linux est très simple, une seule commande suffit :
apt-get update
apt-get install mariadb-server mariadb-client -y
Pourquoi ces deux paquets ? mariadb-server
est le serveur de base de données, et mariadb-client
est le client de base de données. Le client est utilisé pour se connecter localement à la base de données.
Arrêtons-nous un instant
- Pourquoi faire un update avant d'installer un paquet ?
- À quoi correspond le
-y
à la fin de la commande ? - Selon vous, est-ce que votre serveur de base de données est démarré ? Si oui, comment le vérifier ?
- Que veux dire localement ?
Configuration
Avant d'utiliser MariaDB, nous devons configurer le mot de passe de l'utilisateur root
. Pour cela, vous pouvez utiliser la commande suivante :
mysql_secure_installation
Cette commande va vous demander de rentrer le mot de passe actuel de l'utilisateur root
. Comme vous venez d'installer MariaDB.
Arrêtons-nous un instant
- Qu'est-ce que
mysql_secure_installation
? - Pourquoi est-ce important de changer le mot de passe de l'utilisateur
root
? - Quel mot de passe avez-vous choisi ? Pourquoi ?
Vérifier que MariaDB est installé
Pour vérifier que MariaDB est installé, vous pouvez utiliser la commande suivante :
mysql -u root -p
Cette commande va vous demander le mot de passe de l'utilisateur root
. Si vous avez bien suivi les étapes précédentes, vous devriez être connecté à MariaDB.
Configurer PHPMyAdmin
Notre serveur de base de données est maintenant installé, mais nous n'avons pas d'interface graphique pour le gérer. Pour cela, nous allons installer PHPMyAdmin.
Un instant
Une base de données ≠ de PHPMyAdmin. PHPMyAdmin est un logiciel qui permet de gérer une base de données. Il est donc possible d'utiliser une base de données sans PHPMyAdmin. Des alternatives existent, en fonction de vos besoins, il n'est peut-être pas nécessaire d'installer Apache + PHP + PHPMyAdmin sur votre serveur de base de données.
Dans la suite du TP/TD nous allons voir comment administrer notre base de données sans PHPMyAdmin. Les alternatives sont les suivantes :
- Utiliser la ligne de commande (compliqué).
- Utiliser un logiciel tiers (comme HeidiSQL, DBeaver, etc.).
- Utiliser un équivalent de PHPMyAdmin (comme Adminer).
- Utiliser l'outil intégré à votre IDE (comme dans PHPStorm, VsCode, etc).
Quel que soit votre choix, vous devez être très vigilant dans votre vocabulaire pour ne jamais mélanger le terme de base de données et celui de PHPMyAdmin (au risque de passer pour un débutant).
Avant d'aller plus loin, regardons ce que nous allons installer. PHPMyAdmin est un site web qui permet de gérer une base de données. Il est donc nécessaire d'avoir un serveur web (Apache) et un langage de programmation (PHP) pour pouvoir l'utiliser. Si vous avez suivi les étapes précédentes, vous devriez déjà avoir Apache et PHP installés.
Installation de PHPMyAdmin
Pour installer phpMyAdmin, vous pouvez utiliser la commande suivante :
apt install unzip
cd /var/www/html
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.zip
unzip phpMyAdmin-5.2.0-all-languages.zip
mv phpMyAdmin-5.2.0-all-languages phpmyadmin
rm phpMyAdmin-5.2.0-all-languages.zip
L'installation est le résultat de plusieurs commandes :
apt install unzip
: on installe le logicielunzip
. C'est un logiciel qui permet de décompresser des fichiers.cd /var/www/html
: on se déplace dans le dossier/var/www/html
.wget …
: on télécharge le fichierphpMyAdmin-5.2.0-all-languages.zip
. Depuis les serveurs de phpMyAdmin.unzip …
: on décompresse le fichierphpMyAdmin-5.2.0-all-languages.zip
.mv …
: on renomme le dossierphpMyAdmin-5.2.0-all-languages
enphpmyadmin
. Car il est plus simple de taperphpmyadmin
quephpMyAdmin-5.2.0-all-languages
.rm …
: on supprime le fichierphpMyAdmin-5.2.0-all-languages.zip
. Car il n'est plus utile.
Arrêtons-nous un instant
- Pourquoi utilisons-nous la version du site web de phpMyAdmin ? Et pas la version du dépôt Debian ?
- À votre avis est-ce suffisant pour que phpMyAdmin fonctionne ?
Configuration de PHPMyAdmin
PHPMyAdmin est maintenant installé, il ne nécessite pas de configuration particulière. Il suffit de se rendre sur l'adresse suivante : http://<adresse_ip>/
.
Dans un prochain TP/TD
Dans le prochain TP nous allons voir pour configurer Apache avec des VirtualHosts. L'objectif ? Héberger plusieurs sites web sur un seul serveur.
Avant de continuer le TP, je vous laisse valider que PHPMyAdmin fonctionne correctement en répondant à la problématique suivante :
Problématique
L'entreprise BTS SIO, vous demande de numériser la gestion des absences de ses étudiants. Pour cela, vous devez créer une base de données qui contiendra les informations suivantes :
- Pour les étudiants : nom, prénom, classe, date de naissance, adresse, téléphone, email.
- Pour les absences : date, heure de début, heure de fin, motif, étudiant.
Chaque étudiant peut avoir plusieurs absences. Chaque absence est liée à un seul étudiant. Les étudiants sont répartis en 2 classes : SIO1 et SIO2, et en deux niveaux : 1ère année et 2ème année.
Autre logiciels pour gérer une base de données
Nous avons pour l'instant vu comment installer MariaDB et PHPMyAdmin. Mais il existe d'autres logiciels pour gérer une base de données. Nous allons voir ici comment installer ces logiciels. Pour que les autres logiciels fonctionnent, il faut que vous autorisiez le port 3306 dans la configuration de MariaDB.
Rappel sur les ports
Le port est un numéro qui permet de différencier les différents services qui tournent sur un serveur. Par exemple, le port 80 est utilisé par le serveur web Apache. Le port 22 est utilisé par le service SSH. Le port 3306 est utilisé par le service MariaDB. De base, le port 3306 n'écoute que les connexions locales. Pour que les autres logiciels puissent se connecter à MariaDB, il faut autoriser les connexions distantes.
🚨 Point cyber, VOUS NE DEVEZ JAMAIS OUVRIR LE PORT 3306 SUR INTERNET. VOUS DEVEZ LE LAISSER OUVERT UNIQUEMENT SUR VOTRE RÉSEAU LOCAL. 🚨
Autoriser les connexions distantes
La configuration se fait dans le fichier /etc/mysql/mariadb.conf.d/50-server.cnf
.
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Ajoutez la ligne suivante dans la section [mysqld]
.
bind-address = 0.0.0.0
Redémarrer le serveur MySQL
systemctl restart mysql
Comment lire la ligne ajoutée ?
bind-address
: c'est la variable qui permet de définir l'adresse IP sur laquelle MariaDB va écouter les connexions.0.0.0.0
: Cette valeur signifie que MariaDB va écouter sur toutes les adresses IP disponibles sur le serveur.
Connexion avec DBeaver
Maintenant que MariaDB est configuré pour accepter les connexions distantes, nous allons voir comment se connecter à MariaDB avec DBeaver.
Dbeaver est déjà installé sur votre machine. Vous pouvez le lancer via le menu démarrer.
Une fois DBeaver lancé, vous devriez pouvoir vous connecter à MariaDB en utilisant les informations suivantes :
- Hôte :
<adresse_ip>
- Port :
3306
Conclusion
Dans ce TP, nous avons vu comment installer MariaDB et PHPMyAdmin. Nous avons aussi vu comment configurer MariaDB pour qu'il accepte les connexions distantes. Vous pouvez maintenant garder ce serveur pour vous entraîner à créer des bases de données et à les gérer.
N'oubliez pas, vous avez une aide mémoire récapitulant les commandes vues dans ce TP