Présentation
GLPI (Gestion Libre de Parc Informatique) est une solution open source de gestion de parc informatique et d'helpdesk conforme aux bonnes pratiques ITIL. Elle permet de centraliser la gestion des équipements, des tickets de support, des licences et des contrats au sein d'une seule interface web.
Cette procédure décrit l'installation de GLPI 11.0.6 sur Debian 12 (Bookworm) avec la stack Apache 2 + PHP 8.4-FPM + MariaDB, en appliquant la séparation des répertoires recommandée par le projet pour un déploiement sécurisé.
Fonctionnalités principales
- Gestion de tickets et helpdesk (conformité ITIL)
- Inventaire automatique du parc matériel et logiciel
- Gestion des actifs, licences et contrats
- Annuaire LDAP / Active Directory intégré
- Base de données de gestion de configuration (CMDB)
- Système de plugins extensible
Architecture technique
| Composant | Valeur |
|---|---|
| Système d'exploitation | Debian 12 (Bookworm) |
| Serveur web | Apache 2.4 |
| Moteur PHP | PHP 8.4-FPM |
| Base de données | MariaDB 10.11+ |
| Application | GLPI 11.0.6 |
| Accès | Interface web (HTTP/HTTPS) |
Séparation des répertoires (bonne pratique GLPI 11)
| Répertoire | Rôle |
|---|---|
/var/www/glpi/ | Code source de l'application (DocumentRoot = public/) |
/etc/glpi/ | Fichiers de configuration (hors webroot) |
/var/lib/glpi/ | Données persistantes (uploads, cache, sessions) |
/var/log/glpi/ | Journaux applicatifs |
Prérequis
Matériel minimum
| Ressource | Minimum | Recommandé |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 1 Go | 2 Go |
| Stockage | 8 Go | 20 Go |
Logiciels requis
- Debian 12 (Bookworm) — à jour
- Accès root ou sudo
- Connectivité Internet (téléchargement des paquets et de GLPI)
Installation pas à pas
Étape 1 : Mise à jour du système
apt update && apt upgrade -y
Étape 2 : Installation des dépendances
Installation d'Apache, MariaDB, PHP 8.4-FPM et de toutes les extensions PHP requises par GLPI 11 :
apt install -y apache2 mariadb-server \
php8.4-fpm \
php8.4-{curl,gd,intl,mysql,zip,bcmath,mbstring,xml,bz2,apcu,imap} \
wget tar
Extension LDAP (optionnelle, requise pour intégration Active Directory) :
apt install -y php8.4-ldap
Étape 3 : Sécurisation de MariaDB
Exécuter le script de sécurisation interactif fourni avec MariaDB :
mysql_secure_installation
Répondre aux questions du script :
- Switch to unix_socket authentication →
n - Change the root password →
ypuis saisir un mot de passe fort - Remove anonymous users →
y - Disallow root login remotely →
y - Remove test database →
y - Reload privilege tables →
y
Étape 4 : Création de la base de données
mysql -u root -p
CREATE DATABASE db25_glpi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'glpi_adm'@'localhost' IDENTIFIED BY 'MotDePasseRobuste!2025'; GRANT ALL PRIVILEGES ON db25_glpi.* TO 'glpi_adm'@'localhost'; FLUSH PRIVILEGES; EXIT;
MotDePasseRobuste!2025 par un mot de passe fort unique. Ne jamais utiliser root comme utilisateur applicatif.
Étape 5 : Téléchargement et extraction de GLPI
cd /tmp wget https://github.com/glpi-project/glpi/releases/download/11.0.6/glpi-11.0.6.tgz tar -xzvf glpi-11.0.6.tgz -C /var/www/ rm glpi-11.0.6.tgz
Appliquer les permissions correctes au code source :
chown -R www-data:www-data /var/www/glpi/ chmod -R 755 /var/www/glpi/
Étape 6 : Séparation des répertoires (bonne pratique)
Déplacer la configuration, les données et les logs en dehors du webroot afin qu'ils ne soient pas accessibles directement par Apache :
# Répertoire de configuration mkdir -p /etc/glpi mv /var/www/glpi/config /etc/glpi/config chown -R www-data:www-data /etc/glpi/ # Répertoire de données persistantes mkdir -p /var/lib/glpi mv /var/www/glpi/files /var/lib/glpi/files chown -R www-data:www-data /var/lib/glpi/ # Répertoire de logs mkdir -p /var/log/glpi chown -R www-data:www-data /var/log/glpi/
Étape 7 : Création du fichier downstream.php
Ce fichier indique à GLPI où trouver sa configuration (hors webroot) :
nano /var/www/glpi/inc/downstream.php
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/config/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
require_once GLPI_CONFIG_DIR . '/local_define.php';
}
Étape 8 : Création du fichier local_define.php
Ce fichier déclare les chemins des données et des logs :
nano /etc/glpi/config/local_define.php
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi/files');
define('GLPI_LOG_DIR', '/var/log/glpi');
chown -R www-data:www-data /etc/glpi/config/
Configuration Apache
Étape 9 : Création du VirtualHost
Avec GLPI 11, le DocumentRoot doit pointer sur le sous-répertoire public/ de l'application, pas sur la racine :
nano /etc/apache2/sites-available/glpi.conf
<VirtualHost *:80>
ServerName glpi.example.com
DocumentRoot /var/www/glpi/public
<Directory /var/www/glpi/public>
Require all granted
RewriteEngine On
# Transmettre le header Authorization à PHP-FPM
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Réécrire toutes les requêtes vers index.php (front controller)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
ErrorLog ${APACHE_LOG_DIR}/glpi_error.log
CustomLog ${APACHE_LOG_DIR}/glpi_access.log combined
</VirtualHost>
# Activer le site et les modules nécessaires a2ensite glpi.conf a2dissite 000-default.conf a2enmod rewrite # Activer le proxy PHP-FPM a2enmod proxy_fcgi setenvif a2enconf php8.4-fpm systemctl restart apache2
public/ ? GLPI 11 adopte le modèle « front controller » : seul le dossier public/ est exposé sur le web. Le reste du code (include, config, vendor) reste inaccessible depuis un navigateur, ce qui réduit la surface d'attaque.
Configuration PHP
Étape 10 : Ajustement de php.ini
nano /etc/php/8.4/fpm/php.ini
; Sécurité des sessions session.cookie_httponly = On session.cookie_samesite = Lax ; Limites adaptées à GLPI memory_limit = 256M max_execution_time = 300 upload_max_filesize = 100M post_max_size = 100M date.timezone = Europe/Paris
systemctl restart php8.4-fpm
Délégation PHP-FPM dans Apache (optionnel, dans le VirtualHost)
Si le handler PHP-FPM n'est pas appliqué globalement par la conf php8.4-fpm, ajouter dans le bloc <Directory> :
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
Installation via interface web
Ouvrir un navigateur et accéder à :
http://<ADRESSE_IP_SERVEUR>
Suivre l'assistant d'installation :
- Choix de la langue : Français
- Licence GPL : Accepter
- Type d'action : Installer
- Connexion à la base de données :
- Serveur SQL :
localhost - Utilisateur SQL :
glpi_adm - Mot de passe : le mot de passe défini à l'étape 4
- Serveur SQL :
- Sélection de la base :
db25_glpi - Initialisation : patienter pendant le chargement du schéma
- Fin d'installation : noter les comptes par défaut
Comptes par défaut (à changer immédiatement)
| Login | Mot de passe | Profil |
|---|---|---|
| glpi | glpi | Super-administrateur |
| tech | tech | Technicien |
| normal | normal | Utilisateur standard |
| post-only | postonly | Observateur (ticket) |
Vérifications
Vérification des services
systemctl status apache2 systemctl status php8.4-fpm systemctl status mariadb
Vérification de l'installation GLPI
- Se connecter avec le compte glpi / glpi
- Naviguer vers Configuration → Générale → Système : aucun avertissement rouge ne doit apparaître
- Créer un ticket de test : Assistance → Tickets → Créer
- Vérifier qu'il apparaît dans la liste des tickets ouverts
Vérification des logs
tail -f /var/log/glpi/php-errors.log tail -f /var/log/apache2/glpi_error.log
Sécurisation post-installation
Supprimer le script d'installation
rm -f /var/www/glpi/install/install.php
Durcir les permissions sur la configuration
chmod 600 /etc/glpi/config/config_db.php chown www-data:www-data /etc/glpi/config/config_db.php
Changer tous les mots de passe par défaut
Dans GLPI : Administration → Utilisateurs → modifier chaque compte par défaut (glpi, tech, normal, post-only).
Activer HTTPS (recommandé en production)
apt install -y certbot python3-certbot-apache certbot --apache -d glpi.example.com
Sauvegardes
Sauvegarde de la base de données
mysqldump -u glpi_adm -p db25_glpi > /root/backup_glpi_$(date +%Y%m%d_%H%M).sql
Sauvegarde des fichiers applicatifs
tar -czf /root/glpi_files_$(date +%Y%m%d_%H%M).tar.gz \
/var/www/glpi/ \
/etc/glpi/ \
/var/lib/glpi/
Script de sauvegarde automatique (cron quotidien)
nano /etc/cron.daily/backup-glpi
#!/bin/bash BACKUP_DIR="/var/backups/glpi" DATE=$(date +%Y%m%d_%H%M) mkdir -p "$BACKUP_DIR" # Base de données mysqldump -u glpi_adm -pMotDePasseRobuste!2025 db25_glpi \ > "$BACKUP_DIR/db_$DATE.sql" # Fichiers tar -czf "$BACKUP_DIR/files_$DATE.tar.gz" \ /var/lib/glpi/ /etc/glpi/ 2>/dev/null # Rotation : garder les 7 derniers jours find "$BACKUP_DIR" -type f -mtime +7 -delete
chmod +x /etc/cron.daily/backup-glpi
Conclusion
GLPI 11.0.6 est désormais installé et opérationnel sur Debian 12. Cette procédure met en œuvre les bonnes pratiques recommandées par le projet : séparation des répertoires hors webroot, PHP-FPM, front controller Apache, et sécurisation post-installation.
Prochaines étapes
- Intégration de l'annuaire Active Directory (voir procédure 08 — GLPI + AD)
- Déploiement de l'agent d'inventaire GLPI
- Configuration des règles métier et des SLA
- Mise en place de sauvegardes externalisées
Mots-clés pour l'oral BTS
- GLPI : solution ITSM open source, conformité ITIL
- PHP-FPM : exécution PHP haute performance via FastCGI
- Front controller : pattern d'architecture web (toutes les requêtes passent par
index.php) - Séparation webroot : config et données hors de portée du serveur web
- MariaDB utf8mb4 : encodage complet Unicode, support des emojis et caractères spéciaux