2024
SYSTEME D’EXPLOITATION : LINUX
SYSTEME
D’EXPLOITATION
WIN D O WS E T LIN UX
CONFIGURATION D’UN
ENVIRONNEMENT DE
DÉVELOPPEMENT WEB
AUTOMATISÉ
Encadré par : Mr Abdellah OUAGUID
Réalisé par : Rajaa RABIH
Wissal LAMOUADENE
Soukaina LAKBICHI
SYSTEME D’EXPLOITATION : LINUX
SOMMAIRE
INTRODUCTION .......................................................................................................................................3
Spécification des besoins ...........................................................................................................................4
1. Problématique 1..............................................................................................................................4
2. Solution 1 .......................................................................................................................................4
3. Problématique 2..............................................................................................................................4
4. Solution 2 .......................................................................................................................................4
5. Objectif du projet ............................................................................................................................5
6. Fonctionnalités attendues ................................................................................................................5
7. Interface utilisateur .........................................................................................................................6
8. Processus de configuration automatique ...........................................................................................6
Réalisation de projet .................................................................................................................................7
9. Installation et configuration de machines virtuelles : ..........................................................................7
2. Etablir la connexion entre les machines virtuelles : ...............................................................................9
3. Le contenue du fichier script.sh : ...................................................................................................... 12
4. Tester le scripte et la connexion entre les machines ............................................................................ 17
Conclusion.............................................................................................................................................. 18
ENSET MOHAMMEDIA
SYSTEME D’EXPLOITATION : LINUX
INTRODUCTION
Dans le monde du développement web, la mise en place
d'environnements de développement efficaces et cohérents est
essentielle pour garantir des processus fluides et productifs.
Cependant, la configuration manuelle de ces environnements sur
chaque machine peut être fastidieuse et chronophage. C'est là
qu'intervient notre projet de configuration automatisée des
environnements.
Notre projet vise à simplifier et à accélérer le processus de
configuration des environnements de développement web en
automatisant l'installation de tous les logiciels et outils nécessaires
à partir d'une seule commande. Plus besoin de passer par des
installations manuelles répétitives sur chaque machine - avec notre
solution, tout peut être géré depuis une machine centrale.
En utilisant notre outil, les développeurs peuvent configurer
rapidement et facilement des environnements de développement
cohérents sur plusieurs machines, ce qui leur permet de gagner du
temps et de se concentrer sur ce qui compte vraiment : la création
de superbes applications web. Notre solution offre également la
possibilité de maintenir la cohérence des environnements de
développement à travers les équipes, garantissant ainsi une
collaboration efficace et des résultats de haute qualité.
Dans cette présentation, nous allons explorer en détail les
fonctionnalités et les avantages de notre projet de configuration
automatisée des environnements, ainsi que son impact sur le
processus de développement web. En adoptant cette approche
innovante, les équipes de développement peuvent optimiser leur
temps et leurs efforts, tout en garantissant une productivité accrue
et des résultats fiables.
ENSET MOHAMMEDIA 3
SYSTEME D’EXPLOITATION : LINUX
Spécification des besoins
1. Problématique 1
Configuration des environnements de développement web dans chaque machine :
Lors du développement web, la configuration des environnements de développement sur chaque machine
individuelle peut être fastidieuse et chronophage. Chaque développeur ou membre de l'équipe doit
installer manuellement les logiciels et outils nécessaires sur sa propre machine, ce qui entraîne une perte
de temps et d'efforts considérable. De plus, maintenir la cohérence des environnements de
développement à travers plusieurs machines peut devenir un défi.
2. Solution 1
Pour résoudre cette problématique, le système doit permettre l'installation automatique des logiciels et
outils nécessaires sur plusieurs machines cibles à partir d'une machine centrale. En automatisant ce
processus, on réduit le temps et l'effort nécessaires pour configurer chaque machine individuellement.
Les développeurs n'ont plus besoin de passer par des installations manuelles répétitives, car le système
peut déployer rapidement et efficacement les environnements de développement sur toutes les machines
cibles.
3. Problématique 2
Installation des logiciels commande par commande :
Traditionnellement, l'installation des logiciels et outils nécessaires sur chaque machine se fait en
exécutant des commandes individuelles pour chaque logiciel. Cela peut devenir fastidieux, surtout
lorsqu'il y a plusieurs logiciels à installer, et cela augmente le risque d'erreurs humaines.
4. Solution 2
Pour simplifier ce processus, toutes les commandes nécessaires à l'installation des logiciels et outils
seront regroupées dans un fichier de script Bash. Ce fichier Bash exécutera séquentiellement les
commandes d'installation pour chaque logiciel, en automatisant ainsi l'ensemble du processus. Les
utilisateurs n'auront plus qu'à exécuter ce fichier de script pour installer tous les logiciels nécessaires en
une seule fois, ce qui réduit les risques d'erreurs et accélère le processus d'installation.
ENSET MOHAMMEDIA 4
SYSTEME D’EXPLOITATION : LINUX
5. Objectif du projet
L'objectif principal de ce projet est de développer un système d'automatisation pour configurer les
environnements de développement web de manière rapide, efficace et fiable. Le système devra permettre
l'installation automatique des logiciels et outils nécessaires sur plusieurs machines cibles à partir d'une
machine centrale, réduisant ainsi le temps et l'effort nécessaires pour configurer chaque machine
individuellement.
6. Fonctionnalités attendues
Le système doit être capable de fournir les fonctionnalités suivantes :
Génération automatique d'une paire de clés SSH sur la machine centrale (noeud) pour permettre l'accès
sécurisé aux machines cibles.
Copie automatique de la clé publique vers les machines cibles pour faciliter l'authentification sans mot de
passe.
Possibilité de tester la connexion et le passage de configuration vers les machines cibles pour s'assurer
que tout fonctionne correctement.
Installation automatique d'Apache sur les machines cibles pour fournir un serveur HTTP.
Mise à jour automatique des paquets sur les machines cibles pour garantir qu'elles disposent des
dernières versions des logiciels.
Installation automatique de Python, PostgreSQL, Node.js, Django et React sur les machines cibles pour
prendre en charge le développement web.
Création automatique d'un environnement virtuel Django sur les machines cibles pour isoler les
dépendances du projet.
Création automatique d'une base de données PostgreSQL et d'un utilisateur avec les autorisations
appropriées sur les machines cibles pour stocker les données du projet.
ENSET MOHAMMEDIA 5
SYSTEME D’EXPLOITATION : LINUX
7. Interface utilisateur
Le système sera commandé via un script Bash convivial qui prendra en charge différentes options pour
exécuter les fonctionnalités souhaitées. Les options incluront des commandes pour afficher l'aide,
exécuter les opérations sur les machines cibles et spécifier un répertoire de journalisation pour enregistrer
les résultats.
8. Processus de configuration automatique
Le script devra implémenter les étapes suivantes pour automatiser la configuration des environnements
de développement web :
Établir une connexion SSH sécurisée avec les machines cibles.
Exécuter les commandes d'installation et de configuration requises sur les machines cibles en fonction
des options fournies.
Gérer les erreurs et les exceptions de manière appropriée pour assurer un fonctionnement fluide du
système.
Enregistrer les résultats de chaque opération dans des fichiers journaux pour permettre la traçabilité et le
débogage en cas de problème.
ENSET MOHAMMEDIA 6
SYSTEME D’EXPLOITATION : LINUX
Réalisation de projet
9. Installation et configuration de machines virtuelles :
Pour ajouter un utilisateur à un groupe « superuser » (généralement le groupe « sudo » sous Linux), vous
pouvez utiliser la commande « usermod » :
Configuration des adresses ip :
ENSET MOHAMMEDIA 7
SYSTEME D’EXPLOITATION : LINUX
Spécifier le mode d’accès réseau : Nat
La machine centrale avec l’adresse ip: 192.168.100.5
ENSET MOHAMMEDIA 8
SYSTEME D’EXPLOITATION : LINUX
La machine cible (Target) avec l’adresse ip : 192.168.100.4
2. Etablir la connexion entre les machines virtuelles :
Étape 1 : Générer une paire de clés SSH sur la machine centrale (nœud)
Les clés SSH sont utilisées pour sécuriser les connexions entre la machine centrale et les machines
cibles. La paire de clés se compose de deux parties : la clé privée et la clé publique. La clé privée reste
sur la machine centrale et est utilisée pour signer les messages et les données envoyés vers les machines
cibles. La clé publique est distribuée aux machines cibles et est utilisée pour vérifier les signatures
provenant de la machine centrale. En générant une paire de clés SSH, nous établissons une méthode
sécurisée d'authentification et de communication entre la machine centrale et les autres machines du
réseau.
ENSET MOHAMMEDIA 9
SYSTEME D’EXPLOITATION : LINUX
Etape2: installation du serveur SSH :
Le serveur SSH permet aux utilisateurs de se connecter à distance à la machine via une connexion
chiffrée. Cela permet aux administrateurs système d'accéder à distance à la machine pour effectuer des
tâches de maintenance ou de gestion.
ENSET MOHAMMEDIA 10
SYSTEME D’EXPLOITATION : LINUX
Etape3 : Copier la clé publique vers les machines cibles
Une fois que vous avez généré une paire de clés SSH sur la machine centrale, vous devez copier la clé
publique vers les machines cibles avec lesquelles vous souhaitez établir une connexion sécurisée. La clé
publique sera utilisée par les machines cibles pour vérifier l'identité de la machine centrale lorsqu'elle
tente de se connecter. Cela permet d'authentifier la machine centrale et d'établir une connexion sécurisée
entre la machine centrale et les machines cibles. La copie de la clé publique vers les machines cibles est
une étape importante pour configurer un système de communication sécurisé basé sur SSH.
Tester le passage de configuration:
ENSET MOHAMMEDIA 11
SYSTEME D’EXPLOITATION : LINUX
Installation de apache:
Apache est installé sur la machine cible.
3. Le contenue du fichier script.sh :
ENSET MOHAMMEDIA 12
SYSTEME D’EXPLOITATION : LINUX
La fonction display_help() est définie pour afficher les informations d'aide sur la manière d'utiliser le
script.
Les différentes options sont répertoriées, telles que -h pour afficher l'aide, -e pour exécuter le programme
et -l pour spécifier un répertoire de journalisation.
Une description générale du script est fournie, expliquant son but et ses fonctionnalités.
La liste des commandes qui seront exécutées sur la machine distante est également fournie, détaillant
chaque opération à effectuer, telles que la mise à jour des paquets, l'installation d'Apache2, de Python, de
PostgreSQL, de Node.js, de Django, de React, et la configuration de PostgreSQL avec la création d'une
base de données et d'un utilisateur.
Installation des packages:
ENSET MOHAMMEDIA 13
SYSTEME D’EXPLOITATION : LINUX
Le segment de script Bash ci-dessus gère la récupération et l'analyse des options passées au script, ainsi
que la validation de celles-ci. Voici un commentaire sur son fonctionnement :
La variable `Execute` est définie par défaut à `false`. Elle est utilisée pour indiquer si l'option `-e`
ou `--execute` a été spécifiée pour exécuter le programme.
Une boucle `while` est utilisée pour parcourir les options passées au script en ligne de
commande.
Pour chaque option, un `case` est utilisé pour vérifier quelle action doit être effectuée en fonction
de l'option spécifiée.
o Si l'option est `-e` ou `--execute`, la variable `Execute` est définie sur `true`.
o Si l'option est `-h` ou `--help`, la fonction `display_help` est appelée pour afficher l'aide
et le script est terminé.
ENSET MOHAMMEDIA 14
SYSTEME D’EXPLOITATION : LINUX
o Si l'option est `-l` ou `--log`, le répertoire de journalisation est spécifié en utilisant la
valeur fournie après l'option.
o Si l'option n'est pas reconnue, un message est affiché indiquant qu'une option inconnue a
été fournie, puis l'aide est affichée et le script est terminé.
Après avoir analysé toutes les options, le script vérifie si l'option d'exécution (`-e`) est spécifiée et
si aucun répertoire de journalisation (`-l`) n'est fourni. Si tel est le cas, l'aide est affichée et le
script est terminé. Cela garantit que l'utilisateur est informé des options disponibles et de la
manière de les utiliser correctement.
ENSET MOHAMMEDIA 15
SYSTEME D’EXPLOITATION : LINUX
- La fonction `execute_remote_commands()` est définie pour exécuter les commandes sur la machine
distante.
- À l'intérieur de la fonction, les commandes à exécuter sur la machine distante sont fournies entre les
délimiteurs `<< 'EOF'` et `EOF`. Cela permet d'envoyer un bloc de texte (les commandes) via SSH vers
la machine distante pour exécution.
- Les commandes incluent la mise à jour des paquets, l'installation d'Apache2, de Python, de
PostgreSQL, de Node.js, de Django avec la création d'un environnement virtuel, l'installation de React,
ainsi que la configuration de PostgreSQL avec la création d'une base de données et d'un utilisateur.
- Si la variable `Execute` est définie à `true`, les commandes sont exécutées sur la machine distante.
- En outre, si un répertoire de journalisation (`LOG_DIR`) est spécifié, les mêmes commandes sont
exécutées à nouveau sur la machine distante pour enregistrer un fichier journal indiquant que
l'installation a été effectuée avec succès.
- Enfin, un message de journalisation est créé avec la date et l'heure actuelles, ainsi que l'adresse IP de la
machine distante, indiquant que l'exécution a été effectuée avec succès, et ce message est ajouté au
fichier journal spécifié.
ENSET MOHAMMEDIA 16
SYSTEME D’EXPLOITATION : LINUX
4. Tester le scripte et la connexion entre les machines
./Script.sh -e
./Script.sh -h
./Script.sh –l dir
ENSET MOHAMMEDIA 17
SYSTEME D’EXPLOITATION : LINUX
Conclusion
Ce projet met en œuvre une solution robuste et automatisée pour la configuration et l'installation
d'environnements de développement web sur des machines distantes. En utilisant des scripts Bash et
SSH, il permet d'exécuter efficacement une série de commandes sur les machines cibles, facilitant ainsi
le déploiement et la mise en place des logiciels nécessaires.
La création d'une paire de clés SSH assure une connexion sécurisée entre la machine centrale et les
machines cibles, tandis que la fonction de gestion des options du script permet une personnalisation
flexible du processus d'installation.
En automatisant des tâches telles que la mise à jour des paquets, l'installation d'Apache, de Python, de
PostgreSQL, de Node.js, de Django, de React, ainsi que la configuration de PostgreSQL avec la création
de bases de données et d'utilisateurs, ce projet permet d'économiser un temps précieux et réduit les
erreurs humaines potentielles.
De plus, l'ajout de fonctionnalités telles que la journalisation des opérations permet de garder une trace
des installations réussies, offrant ainsi un moyen pratique de surveiller et de vérifier le bon
fonctionnement du processus.
En conclusion, ce projet fournit une solution efficace et pratique pour automatiser la configuration des
environnements de développement web, améliorant ainsi la productivité des équipes de développement
et assurant une mise en place cohérente et sécurisée des logiciels nécessaires.
ENSET MOHAMMEDIA 18