III. Déployer et configurer un machin¶
Dernière section histoire que tout ça prenne un peu vie : on va lancer une ptite app web qui sera portée par nos deux machines :
azure1.tp1: le site webazure2.tp1: la base de données
Note
Et tout d'un coup, ça a du sens : le site web est exposé sur internet, normal. La base de données, c'est hors de question qu'elle le soit.

1. Machine azure2.tp1¶
Ui on commence par
azure2.tp1. C'est pas une erreur.
On va setup un serveur de base de données sur azure2.tp1.
En effet, mon app (qu'on lancera sur azure1.tp1 après) a besoin d'une base SQL classique pour fonctionner.
🌞 Installer MySQL/MariaDB sur azure2.tp1
- faites vos recherches pour ça, en fonction de l'OS que vous avez choisi
🌞 Démarrer le service MySQL/MariaDB sur azure2.tp1
- une commande
systemctl
🌞 Ajouter un utilisateur dans la base de données pour que mon app puisse s'y connecter
- connectez-vous à la base de données pour pouvoir l'administrer en SQL
-
caractéristiques attendus de l'utilisateur :
- appelez l'utilisateur
meow - le password doit être
meow - il doit être autorisé à se connecter depuis n'importe quelle machine
- il doit avoir tous les droits sur la database
meow_database
- appelez l'utilisateur
Example
Une fois que vous êtes connectés à la base de données (avec une commande mysql), vous pouvez par exemple passer les commandes SQL suivantes pour faire ça :
-- Création de la base de données
CREATE DATABASE meow_database;
-- Création de l'utilisateur `meow`
CREATE USER 'meow'@'%' IDENTIFIED BY 'meow';
-- On donne tous les droits à meow sur les tables de la base meow_database
GRANT ALL ON meow_database.* TO 'meow'@'%';
FLUSH PRIVILEGES;
🌞 Ouvrez un port firewall si nécessaire
- pour rappel vous pouvez faire un
sudo ss -lnptpour savoir sur quel port tourne votre serveur de base de données - ce port doit être joignable par la machine
azure1.tp1
2. Machine azure1.tp1¶
Ici on va déployer le site web.
Au menuuu :
- récupération de l'application sur la machine
- installation des dépendances de l'application
- configuration de l'application
- gestion de users et de droits
- création d'un service
webapp.servicepour lancer l'application - ouverture du port dans le firewall si nécessaire
- lancement du service
Let's goooo 🔥🔥
A. Récupération de l'application sur la machine¶
🌞 Récupération de l'application sur la machine
- l'application est dispo sur mon dépôt git, clique clique clique moi
- l'application doit être déposée dans
/opt/meow/
Example
Vous devez donc vous retrouver avec l'arborescence suivante :
# Ptite commande tree pour vous montrer ce qui est attendu dans ce dossier
❯ cd /opt
❯ tree -a -L2 meow
meow
├── app.py
├── requirements.txt
├── .env
└── templates
└── index.html
J'ai codé le back (
app.pyj'vous l'ai commenté en français étou), formaté avec Black. J'ai laissé le front (templates/index.html) vibecoded par une copine IA. Un peu cursed mon prompt, mais c'est kawaii enough.
B. Installation des dépendances de l'application¶
🌞 Installation des dépendances de l'application
- déplacez-vous dans le dossier de l'application
- exécutez les commandes suivantes :
# Assurez vous d'être dans le dossier où se trouve l'application
cd /opt/meow
# Création d'un environnement virtuel (on pourrit pas l'install Python de la machine hôte)
python -m venv .
# Installation des dépendances de l'application
./bin/pip install -r requirements.txt
C. Configuration de l'application¶
🌞 Configuration de l'application
- modifier le fichier
/opt/meow/.env - modifier uniquement la valeur de
DB_HOSTpour indiquer l'adresse IP deazure2.tp1
Info
Toutes les variables contenues dans ce fichier sont chargées au démarrage du programme Python.
La valeur de DB_HOST par exemple est utilisée comme adresse IP à laquelle se connecter pour se co à la base de données.
C'est très très courant un fichier comme .env. On l'appelle le fichier d'environnement (environment file) parce qu'il contient des variables d'environnement.
C'est un peu la façon la plus commune de fournir une conf à un programme. Tous les langages/OS supportent ça facilement.
D. Gestion de users et de droits¶
🌞 Gestion de users et de droits
- créez un utilisateur
webapp(commandeuseradd) -
le dossier
/opt/meowet tout son contenu doivent appartenir (commandechown) :- au user
webapp - au groupe
webapp
- au user
-
les "autres" ne doivent avoir aucun droit sur ce dossier et son contenu (commande
chmod)
Note
Ouais parce qu'on est pas des animaux en faiiiit, donc on va pas faire tourner ça en root.
On gère donc correctement nos permissions : principe du moindre privilège (on donne que le strict minimum).
E. Création d'un service webapp.service pour lancer l'application¶
🌞 Création d'un service webapp.service pour lancer l'application
- créez le fichier
/etc/systemd/system/webapp.service - il doit avoir le contenu suivant :
[Unit]
Description=Super Webapp MEOW
[Service]
User=webapp
WorkingDirectory=/opt/meow
ExecStart=/opt/meow/bin/python app.py
[Install]
WantedBy=multi-user.target
- exécutez ensuite un
sudo systemctl daemon-reloadpour indiquer au système qu'on a modifié les services
F. Ouverture du port dans le(s) firewall(s)¶
🌞 Ouverture du port80 dans le(s) firewall(s)
-
vous pouvez voir le port utilisé par l'application :
- dans ses logs (
journalctl) - ou en demandant à l'OS (
ss) - ou en regardant sa conf (fichier
.env)
- dans ses logs (
-
suivant l'OS que vous avez choisi, la commande pourra changer pour ouvrir le port, je vous laisse chercher
- probablement une commande
ufwsur Ubuntu - probablement une commande
firewall-cmdsur Rocky - etc.
- probablement une commande
-
n'oubliez pas d'ouvrir aussi le port dans le firewall Azure
- faites-le depuis la WebUI
3. Visitez l'application¶
🌞 L'application devrait être fonctionnelle sans soucis à partir de là
- vous pouvez visiter
http://<_IP_PUBLIQUE_DE_azure1.tp1>:8000 - vérifier que l'app fonctionne en postant un message
- mettez-moi un
curlvers l'URL dans le compte-rendu (juste les premières lignes svp ça ira)
🍤⭐🍤 Si t'es motivé y'a des exos bonus, fais-en au moiiiins un si t'es solide 🍤⭐🍤