Skip to content

Latest commit

 

History

112 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Projet infrastructure

Bienvenue sur le guide d'installation du projet infrastructure du groupe de Lucas Saillot et Louise Ducrocq.


Sommaire


Objectifs

  • Configurer et administrer un serveur pour héberger une solution web.
  • Installer, paramétrer et utiliser des outils fiables et reconnus pour l’hébergement de solutions web.
  • Déployer un site web, comme WordPress, sur le serveur.
  • Automatiser les sauvegardes des fichiers du site et de sa base de données.
  • Rendre la solution web accessible sur un réseau local, à la fois via son adresse IP et un nom de domaine personnalisé.

Prérequis

Avant de commencer, assurez-vous d'avoir les éléments suivants :

  • Avoir un logiciel de virtualisation ou un serveur pour pouvoir installer Debian 12 comme OS.
  • Avoir téléchargé l'ISO de Debian 12 (Télécharger ici).
  • Avoir un logiciel de connexion SSH comme Bitvive.
  • Avoir le logiciel WinSCP

Étape 1 : Installer l'OS

Avant de commencer toute manipulation il nous faut une machine sous Linux, dans notre cas nous avons choisi Debian 12.

1. Booter l'ISO

Booter votre serveur ou machine virtuelle sur l'ISO Debian, vous devrez arriver sur le même écran affiché ci-dessous.
Appuyez sur Graphical install pour suivre les étapes d'installation dans une interface graphique. Cela ne signifie pas que le serveur sera configuré avec une interface graphique permanente, car celle-ci sera désactivée lors des étapes suivantes.

2. Sélection de la langue

Sélectionnez votre Langue, Pays, et Disposition du clavier :

Sélectionner la langue Sélectionner le pays Sélectionner la disposition du clavier

3. Nom de la machine

Sélectionnez le nom de la machine que vous voulez et laissez vide la case domaine.

Nom de la machine Nom de domaine

4. Mot de passe root et nouvel utilisateur

Saisissez un mot de passe complexe pour l'utilisateur root.

Mot de passe root

Nous devons à présent définir un nouvel utilisateur, que nous allons appeler cesi dans notre cas.
En premier lieu le nom puis l'identifiant qui servira de nom d'utilisateur pour se connecter.

Nom de l'utilisateur Identifiant

Et enfin le mot de passe de ce nouvel utilisateur :

Mot de passe utilisateur

5. Configurer les disques

Sélectionner "Assisté - utiliser un disque entier" puis vous pouvez cliquer sur continuer jusqu'au moment où vous tomberez sur la même page que la deuxième capture d'écran, à ce moment vous mettrez "Oui".

Configuration des disques Confirmation des disques

6. Configurer les paquets

Sélectionner "France".

Configuration des paquets

Sélectionner non si vous souhaitez désactiver les statistiques sur l'utilisation des paquets.

Statistiques des paquets

7. Choix des outils installés par défaut

⚠️ Important, décocher "environnement de bureau Debian" et "GNOME" (C'est l'interface graphique de Debian, dans notre cas nous voulons qu'une console comme il s'agit d'un serveur).
Ainsi que le Serveur SSH, nous allons l'installer manuellement.
Laissez uniquement les utilitaires usuels du système.

Choix des outils

8. Installation de GRUB

Il s’agit du chargeur de démarrage qui permet de booter sur Linux.
Mettez oui puis sélectionnez votre disque.

Installation de GRUB Choix du disque

9. Redémarrer

Voilà vous avez terminé la première étape de ce guide, vous pouvez maintenant redémarrer votre machine quand cet écran s'affiche :

Redémarrer

Étape 2 : Environnement

Nous allons dans ces étapes installer :

  • SSH
  • Apache
  • PHP
  • Base de donnée

1. Installer et configurer SSH

Dans un premier temps nous allons se connecter à la Machine : Vos identifiants sont ceux défini pour l'installation, utiliser l'utilisateur root pour plus de faciliter pour commencer

Connexion

Pour commencer on autorisé votre utilisateur à utiliser "sudo" pour plus de facilité, notre utilisateur s'appelle cesi dans notre cas.

su #Pour se connecter en root pour régler les paramètres
apt install sudo -y
echo "cesi ALL=(ALL:ALL) ALL" | sudo tee -a /etc/sudoers
sudo usermod -aG sudo cesi
exit #Pour retourner à l'utilisateur cesi

Rentrer les commandes les unes après les autres

sudo apt update
sudo apt upgrade -y
sudo apt install openssh-server -y

Une fois effectué, rentrer la commande suivante :

sudo systemctl status sshd

Vous devrez obtenir un statut "active"

SSH

On va récupérer l'ip local de notre machine pour pouvoir s'y connecter en SSH via notre PC.

ip a

IP A

Noté bien cette IP et son /, dans notre cas 192.168.87.128/24

Lancer bitsive et configurer le avec l'ip récupéré, le port 22 et les identifiants choisis. Connecter vous et ensuite cliquer sur "New terminal console"

Bitsive

Bitsive

2. Définir une IP fixe

Nous allons récupérer la passerelle de notre réseau

ip route show

Nous obtenons ce résultat : default via 192.168.87.2 dev ens33

Nous allons maintenant définir l'ip fixe

sudo nano /etc/network/interfaces

dhcp

Par défaut l'interface est réglé en DHCP, qui fait que l'ip est dynamique. Nous avons au préalable récupéré l'ip fixe à mettre et la passerelle. Voilà ce qu'il faut remplir à la place de DHCP, address correspond à l'ip récupéré avec son masque et le gateway correspond à la passerelle.

iface ens33 inet static
        address 192.168.87.128/24
        gateway 192.168.87.2

static

Pour enregistrer et quitter (CTRL + S et CTRL + X)

Nous allons maintenant redémarrer le service réseau :

sudo systemctl restart networking.service

Si tout c'est bien passé vous pouvez maintenant effectuer la commande suivante :

ping google.com

Si tout fonctionne vous recevrez des paquets ce qu'il signifie que votre machine à internet et une adresse IP fixe.

3. Installation d'Apache

Commençons par installer Apache.
Tapez les commandes les unes après les autres.

sudo apt install apache2 -y
sudo systemctl start apache2
sudo systemctl enable apache2

Accéder maintenant à l'ip de votre machine sur votre ordinateur et vous verrez cette page qui signifie que l'installation d'apache s'est bien déroulé.

apache

4. Installation PHP

Nous allons installer PHP avec la commande suivante :

sudo apt install -y php libapache2-mod-php
sudo apt-get update

Nous allons à présent vérifier si php est correctement installé. Commençons par créer et éditer un fichier info.php dans le dossier apache :

sudo nano /var/www/html/info.php

Nous allons utiliser une fonction php qui permet de vérifier si tout est bien installé :

<?php
phpinfo();
?>

Pour enregistrer et quitter (CTRL + S et CTRL + X)
Rendez-vous sur votre adresse IP /info.php dans notre cas : http://192.168.87.129/info.php

apache

Voilà PHP est installé et fonctionnel !

5. Installation de MariaDB

Pour installer MariaDB :

sudo apt update && sudo apt upgrade -y
sudo apt install mariadb-server -y
sudo systemctl start mariadb
sudo systemctl enable mariadb

Voilà MariaDB est installé mais il va falloir à présent sécurisé l'installation :

sudo mysql_secure_installation
  • Définir le mot de passe root (si demandé).
  • Supprimer les utilisateurs anonymes : Répondez Oui.
  • Désactiver l'accès root à distance : Répondez Oui.
  • Supprimer la base de données de test : Répondez Oui.
  • Recharger les tables de privilèges : Répondez Oui.

Étape 3 : Premier site

Placez vous dans le dossier apache :

cd /var/www/html

Créez un dossier monsite :

sudo mkdir monsite

Placez vous dans ce dossier, créer et modifier un fichier index.php :

cd ./monsite
sudo nano index.php

Nous plaçons dans ce fichier le code suivant (vous êtes libre de placer le code que vous voulez) :

<?php
    date_default_timezone_set('Europe/Paris'); // Définition du fuseau horaire
    $heure = date('H');
    $date_aujourdhui = date('d/m/Y');
?>
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bienvenue sur notre site</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #f0f8ff;
        }
        .container {
            text-align: center;
            background: white;
            padding: 2em;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            width: 80%;
            max-width: 600px;
        }
        h1 {
            color: #333;
            font-size: 2.5em;
            margin-bottom: 0.5em;
        }
        p {
            color: #666;
            font-size: 1.2em;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Bienvenue sur notre site !</h1>
        <p>Nous sommes le <?php echo $date_aujourdhui; ?>.</p>
    </div>
</body>
</html>

Pour enregistrer et quitter (CTRL + S et CTRL + X)
Rendez-vous sur l'ip /monsite, dans notre cas : http://192.168.87.128/monsite/

apache

Étape 4 : Connexion SSH par Clé / SFTP

Ouvrez bitvise puis cliquer sur "Client key manager"

apache

Cliquez sur "Generate New" et sélectionner RSA, 4096 et votre passphrase

apache

Une fois généré cliquez sur export OpenSSH Format puis ouvrez le fichier vous debrez avoir votre Clé SSH :

apache

Copier tout ça, nous allons en avoir besoin.

Retour sur la VM

mkdir ~/.ssh/
sudo nano ~/.ssh/authorized_keys

Copier dans ce fichier votre clé, puis pour enregistrer et quitter (CTRL + S et CTRL + X)

Vous pouvez maintenant vous reconnecter avec votre clé Public SSH en choisissant :

  • Initial method : publickey
  • Client key : celui que vous avez créer
  • Passphrase : votre passphrase

apache

Connexion SFTP

Nous allons créez deux utilisateurs dev1 et dev2 qui vont avoir accès en SFTP au dossier /var/www/html/monsite et seulement ce dossier : Commençons par créer un groupe sftpusers :

sudo groupadd sftpusers

Nous allons maintenant créer les utilisateurs :

# Création l'utilisateur Dev1
sudo useradd -g sftpusers -d /var/www/html/monsite -s /usr/sbin/nologin dev1
sudo passwd dev1

# Création l'utilisateur Dev2
sudo useradd -g sftpusers -d /var/www/html/monsite -s /usr/sbin/nologin dev2
sudo passwd dev2

Possédé par root Non modifiable par l’utilisateur (permissions classiques : 755)

sudo chown root:root /var/www/html/monsite
sudo chmod 755 /var/www/html/monsite

Autorisez les sftpusers à modifier les fichiers de monsite

sudo chown -R root:sftpusers /var/www/html/monsite/*
sudo chmod -R g+rw /var/www/html/monsite/*

Créer leurs répertoires respectif :

sudo mkdir /var/www/html/monsite/dev1
sudo chown dev1:sftpusers /var/www/html/monsite/dev1
sudo chmod 700 /var/www/html/monsite/dev1
sudo mkdir /var/www/html/monsite/dev2
sudo chown dev2:sftpusers /var/www/html/monsite/dev2
sudo chmod 700 /var/www/html/monsite/dev2

On va maintenant configurer le SFTP :

sudo nano /etc/ssh/sshd_config

Trouver la ligne suivante :

Subsystem       sftp    /usr/lib/openssh/sftp-server

Puis ajouter ceci à la suite :

Match Group sftpusers
  ChrootDirectory /var/www/html/monsite
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

Pour enregistrer et quitter (CTRL + S et CTRL + X)
Redémarrer SSH :

sudo systemctl restart ssh

Ouvrez WinSCP et ajoutez une nouvelle connexion SFTP :

  • Nom d'hôte : IP de votre VM
  • Port : 22
  • User : dev1 ou dev2
  • MDP : celui choisi par vous

apache

apache

Étape 5 - Configuration de la base de données

Connectez vous à la base de donnée :

mariadb -u root -p

Création de la base de donnée "cesibdd" :

CREATE DATABASE cesibdd;

Créez l'utilisateur dibdd (remplacer mot_de_passe par le votre) :

CREATE USER 'dibdd'@'localhost' IDENTIFIED BY 'mot_de_passe';

Lui accorder le maximum de privilège :

GRANT ALL PRIVILEGES ON cesibdd.* TO 'dibdd'@'localhost';
FLUSH PRIVILEGES;

Quittez :

EXIT;

Étape 6 - Installation de Wordpress et d'un vhost

Installer unzip :

sudo apt update && sudo apt install unzip -y

Placez vous dans le dossier Apache :

cd /var/www/html/

Télécharger Wordpress :

sudo wget -O wordpress.zip https://wordpress.org/latest.zip

Dézipper le fichier wordpress.zip :

sudo unzip wordpress.zip

Installez l'extension php-mysql pour permette une connexion à la base de donnée et redémarrer le serveur apache :

sudo apt install php-mysql
sudo systemctl restart apache2

Configurons Wordpress :
Aller sur l'url de votre serveur /wordpress/ : http://192.168.87.128/wordpress/

apache

Rentrez le nom de la db cesibdd et comme nom d'utilisateur dibdd, et votre mot de passe créer précédemment dans le tuto :

apache

Poursuivez les étapes de configurations en rentrant vos paramètres et vous allez arriver sur cette page :
Il s'agit de la page de connexion du wordpress elle sera en /wp-admin/ de votre site soit pour nous :

http://192.168.87.128/wordpress/wp-admin/

apache

apache

Voilà félicitation vous avez réussi à installer Wordpress ! Vous pouvez modifier des pages comme vous le souhaiter avec le panneau d'administration wordpress.

Configuration vhost (nom de domaine local)

Installer Avahi et activer le :

sudo apt install avahi-daemon
sudo systemctl enable --now avahi-daemon
systemctl status avahi-daemon

Et voilà c'est tout, nos différents sites sont accessible via nom de la machine .local soit pour nous (vm-projet.local)

apache

vm-projet.local/monsite/

apache

vm-projet.local/wordpress/

apache

Étape 7 - Sauvegarde & Restauration d’un site Web

Le logigramme des scripts est disponible ici

Script DB Manager

Pour commencer créez et modifier un fichier db_manager.sh qui va nous permettre de sauvegarder / restaurer et supprimer la db du Wordpress :

sudo nano ./db_manager.sh

⚠️ Attention : vous devez rentrer vos informations ici de votre base de donnée

  • DB_NAME="cesibdd"
  • DB_USER="root"
  • DB_PASS="cesi"
    Rentrez le script suivant dedans :
#!/bin/bash

# Définition des variables
DB_NAME="cesibdd"
DB_USER="root"
DB_PASS="cesi"
DUMP_DIR="/tmp/db"
DUMP_FILE="$DUMP_DIR/backup.sql"

# Création du dossier si nécessaire
mkdir -p $DUMP_DIR

# Fonction de sauvegarde
backup_db() {
    echo "Sauvegarde de la base de données..."
    mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $DUMP_FILE

    if [ $? -eq 0 ]; then
        echo "Sauvegarde réussie : $DUMP_FILE"
    else
        echo "Erreur lors de la sauvegarde"
    fi
}

# Fonction de restauration
restore_db() {
    echo "Restauration de la base de données..."

    # Vérifier si le fichier de sauvegarde existe
    if [ -f "$DUMP_FILE" ]; then
        mysql -u $DB_USER -p$DB_PASS -e "DROP DATABASE IF EXISTS $DB_NAME; CREATE DATABASE $DB_NAME;"
        mysql -u $DB_USER -p$DB_PASS $DB_NAME < $DUMP_FILE

        if [ $? -eq 0 ]; then
            echo "Restauration réussie depuis $DUMP_FILE"
        else
            echo "Erreur lors de la restauration"
        fi
    else
        echo "Aucun fichier de sauvegarde trouvé !"
    fi
}

delete_db() {
        echo "Suppression de la base de données..."

        mysql -u $DB_USER -p$DB_PASS -e "DROP DATABASE IF EXISTS $DB_NAME;"

        if [ $? -eq 0 ]; then
                echo "Base de données supprimée avec succès"
        else
                echo "Erreur lors de la suppression"
        fi
}

# Menu interactif
echo "Que souhaitez-vous faire ?"
echo "1) Sauvegarder la base de données"
echo "2) Restaurer la base de données"
echo "3) Supprimer la base de données"
read -p "Entrez votre choix (1 ou 2 ou 3) : " choix

case $choix in
    1)
        backup_db
        ;;
    2)
        restore_db
        ;;
    3)  delete_db
        ;;
    *)
        echo "Choix invalide. Veuillez choisir 1, 2 ou 3."
        ;;
esac

Mettez à jour les droits du fichier :

sudo chmod +x ./db_manager.sh

Pour lancer le script :

./db_manager.sh

Vous aurez ensuite le choix entre 3 options (Sauvegarder, restaurer, supprimer)

Script CMS Manager

Pour commencer créez et modifier un fichier cms_manager.sh qui va nous permette de sauvegarder / restaurer et supprimer votre site Wordpress :

sudo nano ./cms_manager.sh

⚠️ Attention : vous devez rentrer vos informations ici de votre emplacement wordpress

  • CMS_DIR="/var/www/html/wordpress"
    Rentrez le script suivant dedans :
#!/bin/bash

# Définition des variables
CMS_DIR="/var/www/html/wordpress"
BACKUP_DIR="/tmp/cms"
BACKUP_FILE="$BACKUP_DIR/wordpress_backup.tar.gz"

# Création du dossier de sauvegarde si nécessaire
mkdir -p $BACKUP_DIR

# Fonction de sauvegarde
backup_cms() {
    echo "Sauvegarde des fichiers de WordPress..."
    sudo tar -czvf $BACKUP_FILE $CMS_DIR

    if [ $? -eq 0 ]; then
        echo "Sauvegarde réussie : $BACKUP_FILE"
    else
        echo "Erreur lors de la sauvegarde"
    fi
}

# Fonction de restauration
restore_cms() {
    echo "Restauration des fichiers de WordPress..."

    # Vérifier si le fichier de sauvegarde existe
    if [ -f "$BACKUP_FILE" ]; then
        sudo tar -xzvf $BACKUP_FILE -C /

        if [ $? -eq 0 ]; then
            echo "Restauration réussie depuis $BACKUP_FILE"
        else
            echo "Erreur lors de la restauration"
        fi
    else
        echo "Aucun fichier de sauvegarde trouvé !"
    fi
}

# Fonction de suppression
delete_cms() {
    echo "Suppression des fichiers de WordPress..."
    sudo rm -rf $CMS_DIR

    if [ $? -eq 0 ]; then
        echo "Fichiers supprimés avec succès"
    else
        echo "Erreur lors de la suppression"
    fi
}

# Menu interactif
echo "Que souhaitez-vous faire ?"
echo "1) Sauvegarder le site WordPress"
echo "2) Restaurer le site WordPress"
echo "3) Supprimer le site WordPress"
read -p "Entrez votre choix (1, 2 ou 3) : " choix

case $choix in
    1)
        backup_cms
        ;;
    2)
        restore_cms
        ;;
    3)
        delete_cms
        ;;
    *)
        echo "Choix invalide. Veuillez choisir 1, 2 ou 3."
        ;;
esac

Mettez à jour les droits du fichier :

sudo chmod +x ./cms_manager.sh

Pour lancer le script :

./cms_manager.sh

Vous aurez ensuite le choix entre 3 choix (Sauvegarder, restaurer, supprimer)

✅ Checklist du projet

🖥️ Installation de Debian 12

  • OS installé et bootable
  • IP fixe configurée (ping google.com OK)
  • Utilisateur root sécurisé + utilisateur non-root créé

🔒 SSH & Sécurité

  • SSH actif (sudo systemctl status sshd)
  • Connexion SSH avec mot de passe
  • Connexion SSH via clé publique
  • SFTP fonctionne pour dev1 et dev2

🌍 Services Web (Apache, PHP, MariaDB)

  • Apache installé (sudo systemctl status apache2)
  • Page Apache visible (http://192.168.X.X)
  • PHP installé (http://192.168.X.X/info.php)
  • MariaDB installé (sudo systemctl status mariadb)
  • Base cesibdd et utilisateur dibdd créés

🌐 Sites Web & Accès

  • monsite accessible (http://192.168.X.X/monsite/)
  • wordpress installé (http://192.168.X.X/wordpress/)
  • Wordpress connecté à la base cesibdd

🔄 Sauvegarde & Restauration

  • ./db_manager.sh fonctionne (sauvegarde/restauration DB)
  • ./cms_manager.sh fonctionne (sauvegarde/restauration site)

🎯 Si tout est ok, félication vous avez réussi le tutoriel

Logigramme des scripts de gestion :

Tableau des versions des logiciels :

Logiciels / OS Version
VMware Workstation Pro 17.6.2
Debian 12.8.0
Apache 2.4.62
PHP 8.2.26
MariaDB 10.11.6
Wodpress 6.7.2
WinSCP 6.3.7
Bitvise 9.42

About

Projet infrastructure CESI - Lucas Saillot et Louise Ducrocq

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors