Déploiement et mise en production de services informatiques
Validation du bon fonctionnement des services avant mise en production.
Mise en production de services informatiques sur différentes plateformes.
Formation et accompagnement des utilisateurs lors de la mise en place de nouveaux services.
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.
É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)"
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.