Retour aux compétences

Bloc 5 : Mettre à Disposition des Utilisateurs un Service Informatique

Déploiement et mise en production de services informatiques

Réaliser les tests d'intégration et d'acceptation

Validation du bon fonctionnement des services avant mise en production.

Déployer un service

Mise en production de services informatiques sur différentes plateformes.

Accompagner les utilisateurs

Formation et accompagnement des utilisateurs lors de la mise en place de nouveaux services.

Stage Efrei

Déploiement complet de GLPI sur Azure

Contexte

Dans le cadre de mon stage, j'ai déployé une infrastructure GLPI complète sur un serveur Azure (VM Debian/Ubuntu, IP : 51.103.220.166). Ce déploiement comprenait l'installation automatisée de GLPI, la mise en place d'un agent d'inventaire, ainsi qu'un système de sauvegarde et restauration automatisé vers Google Drive.

Démarche suivie

Étape 1 — Installation automatisée de GLPI (install-glpi.sh)

Script Bash complet automatisant l'installation de la pile LAMP (Apache, PHP 8.3, MariaDB) et GLPI 10.0.20, avec détection automatique de l'IP du serveur, configuration du VirtualHost Apache et sécurisation des cookies PHP.

#!/bin/bash
set -e   # Arrêt du script en cas d'erreur

# Étape 1 : Récupération de l'adresse IP de la machine
SERVER_IP=$(hostname -I | awk '{print $1}')
echo "L'adresse IP détectée est : $SERVER_IP"

# Étape 2 : Mise à jour système + installation Apache
apt update -y
apt install apache2 -y

# Étape 3 : Ajout du dépôt PHP 8.3 (sury.org) et installation PHP
apt install -y lsb-release ca-certificates apt-transport-https curl
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
dpkg -i /tmp/debsuryorg-archive-keyring.deb
sh -c 'echo "deb [...] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt update -y
apt install -y php8.3 php8.3-xml php8.3-dom php8.3-gd php8.3-intl \
  php8.3-mysql php8.3-zip php8.3-curl php8.3-mbstring
apt install -y php8.3-bz2 php8.3-phar php8.3-exif php8.3-ldap openssl php8.3-opcache

# Étape 4 : Installation et sécurisation de MariaDB
apt install mariadb-server -y
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'MotDePasseGLPIFort'; FLUSH PRIVILEGES;"

# Étape 5 : Téléchargement et extraction de GLPI 10.0.20
wget https://github.com/glpi-project/glpi/releases/download/10.0.20/glpi-10.0.20.tgz
tar -xvzf glpi-10.0.20.tgz
mv glpi /var/www/

# Étape 6 : Configuration du VirtualHost Apache
a2enmod rewrite
cat <<EOF > /etc/apache2/sites-available/glpi.conf
<VirtualHost *:80>
  ServerName glpi.localhost
  ServerAlias $SERVER_IP
  DocumentRoot /var/www/glpi/public
  <Directory /var/www/glpi/public>
    Require all granted
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
  </Directory>
</VirtualHost>
EOF
a2ensite glpi.conf

# Étape 7 : Permissions et sécurisation des cookies PHP
chown www-data:www-data /var/www/glpi/config/
chown -R www-data:www-data /var/www/glpi/files/
chown www-data:www-data /var/www/glpi/marketplace
sed -i 's/.*session.cookie_httponly.*/session.cookie_httponly = On/' /etc/php/8.3/apache2/php.ini

# Étape 8 : Redémarrage Apache + message final
systemctl restart apache2
echo "=== Installation terminée ! ==="
echo "Rendez-vous sur http://$SERVER_IP pour finaliser via l'interface web."

Étape 2 — Sauvegarde automatique vers Google Drive (glpi-backup.sh)

Script de sauvegarde automatique créant un dump SQL de la base de données et une archive des fichiers GLPI, puis les transférant vers Google Drive via rclone. Les fichiers de plus de 7 jours sont automatiquement supprimés.

#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
SOURCE_FILES="/var/www/glpi"
BACKUP_DIR="/home/glpi_backup"
DB_NAME="glpi"
CLOUD_REMOTE="google_drive"
CLOUD_BUCKET="BackupsGLPI"

mkdir -p "$BACKUP_DIR"

# Étape 1 : Dump SQL de la base de données GLPI
echo "Début du dump SQL..."
mysqldump --databases "$DB_NAME" > "$BACKUP_DIR/glpi_db_$DATE.sql"

# Étape 2 : Archive compressée des fichiers GLPI
echo "Début de la compression des fichiers..."
tar -czf "$BACKUP_DIR/glpi_files_$DATE.tar.gz" "$SOURCE_FILES"

# Étape 3 : Envoi des fichiers vers Google Drive via rclone
echo "Envoi vers le cloud..."
rclone copy "$BACKUP_DIR/glpi_db_$DATE.sql" "$CLOUD_REMOTE:$CLOUD_BUCKET"
rclone copy "$BACKUP_DIR/glpi_files_$DATE.tar.gz" "$CLOUD_REMOTE:$CLOUD_BUCKET"

# Étape 4 : Purge des sauvegardes locales de plus de 7 jours
find "$BACKUP_DIR" -type f -mtime +7 -delete
echo "Backup terminé avec succès pour le $DATE"

Étape 3 — Restauration depuis Google Drive (glpi-restorebackup.sh)

En cas de panne ou de perte de données, ce script récupère automatiquement la dernière sauvegarde disponible sur Google Drive, restaure la base de données et les fichiers GLPI.

#!/bin/bash
SOURCE_FILES="/var/www/glpi"
BACKUP_DIR="/home/glpi_restore_tmp"
DB_NAME="glpi"
CLOUD_REMOTE="google_drive"
CLOUD_BUCKET="BackupsGLPI"

mkdir -p "$BACKUP_DIR"

# Étape 1 : Récupération des noms des derniers fichiers sur le Cloud
echo "--- Récupération des noms des derniers fichiers sur le Cloud ---"
LAST_SQL=$(rclone lsf "$CLOUD_REMOTE:$CLOUD_BUCKET" | grep 'glpi_db_' | sort -r | head -n 1)
LAST_FILES=$(rclone lsf "$CLOUD_REMOTE:$CLOUD_BUCKET" | grep 'glpi_files_' | sort -r | head -n 1)

if [ -z "$LAST_SQL" ] || [ -z "$LAST_FILES" ]; then
  echo "Erreur : Impossible de trouver les sauvegardes sur le cloud."
  exit 1
fi

# Étape 2 : Téléchargement de la dernière sauvegarde
echo "Téléchargement de $LAST_SQL et $LAST_FILES..."
rclone copy "$CLOUD_REMOTE:$CLOUD_BUCKET/$LAST_SQL" "$BACKUP_DIR"
rclone copy "$CLOUD_REMOTE:$CLOUD_BUCKET/$LAST_FILES" "$BACKUP_DIR"

# Étape 3 : Restauration de la base de données
echo "--- Restauration de la base de données ---"
mysql "$DB_NAME" < "$BACKUP_DIR/$LAST_SQL"
echo "Base de données restaurée."

# Étape 4 : Restauration des fichiers GLPI
echo "--- Restauration des fichiers ---"
tar -xzf "$BACKUP_DIR/$LAST_FILES" -C /

# Étape 5 : Nettoyage du dossier temporaire
echo "--- Nettoyage ---"
rm -rf "$BACKUP_DIR"
echo "Restauration terminée avec succès à partir des fichiers du $(date)"

Conclusion

Cette réalisation m'a permis de déployer de bout en bout un service ITSM complet en environnement cloud. J'ai acquis des compétences solides en administration Linux, configuration Apache/PHP/MariaDB, et automatisation des sauvegardes. Le service est opérationnel, accessible publiquement et sécurisé avec des sauvegardes automatiques vers Google Drive.

Technologies et outils maîtrisés

Déploiement GLPI Microsoft Azure Linux VM Bash Apache PHP 8.3 MariaDB rclone Google Drive Formation
Retour aux compétences Voir mes projets