Procédure d'installation de GLPI

I. Présentation

Dans ce document vous trouverez comment installer pas-à-pas de GLPI sur Debian 12, en mettant en place un LEMP (Linux, Nginx, MariaDB Server).

GLPI est un logiciel libre de gestion de parc informatique permettant d'avoir une solution de ticketing gratuite pour le support informatique, de gérer l'inventaire des équipements, notamment les ordinateurs et les téléphones, de gérer ses contrats, ses licences, ses consommables, ses baies serveurs, etc.... Créé en 2003, GLPI est une solution populaire utilisée par des milliers d'entreprises.

II. Prérequis de GLPI

Avant d'évoquer l'installation, parlons des prérequis. GLPI a besoin d'un serveur Web, de PHP et d'une base de données pour fonctionner. Sous Linux, ceci correspond à un socle LEMP. Il supporte plusieurs serveurs Web : Apache2, Nginx, lighttpd et IIS.

Pour le reste voici ce dont vous devez savoir : 

Il y aura également plusieurs extensions PHP à installer pour que GLPI puisse fonctionner.

La dernière version de GLPI à l'heure où j'écris ces lignes, à savoir GLPI 10.0.14, ajoute le support de PHP 8.3 et MySQL 8.1.

Pour cette démonstration, nous allons utiliser une machine sous Debian 12 et nous allons installer dessus Nginx, PHP 8.3 ainsi que MariaDB.

Si vous avez besoin de précisions supplémentaires, vous pouvez consulter la documentation officielle : 

III. Préparer le serveur pour installer GLPI

Commençons par l'installation par une mise à jour des paquets sur la machine Debian 12. Pensez également à lui attribuer une adresse IP et à effectuer la configuration du système.

sudo apt-get update && sudo apt-get upgrade

A. Installer le socle LEMP

La première grande étape consiste à installer les paquets du socle LEMP : Linux Nginx MariaDB PHP. Sous Debian 12, qui est la dernière version stable de Debian, PHP 8.2 est distribué par défaut dans les dépôts officiels.

Commençons par installer ces trois paquets : 

sudo apt-get install nginx php mariadb-server

Supprimer Apache2 avec cette commande : 

sudo apt-get remove apache2

Puis, nous allons installer toutes les extensions nécessaires au bon fonctionnement de GLPI.

sudo apt-get install php-xml php-common php-json php-mysql php-mbstring php-curl php-gd php-intl php-zip php-bz2 php-imap php-apcu

Ces commandes vont permettre de récupérer les versions de ces extensions pour PHP 8.2.

Si vous envisagez d'associer GLPI avec un annuaire LDAP comme l'Active Directory, vous devez installer l'extension LDAP de PHP. Sinon, ce n'est pas nécessaire et vous pouvez le faire par la suite, si besoin.

sudo apt-get install php-ldap

Nous venons d'installer Nginx, MariaDB, PHP et un ensemble d'extensions.

B. Préparer une base de données pour GLPI

Nous allons préparer MariaDB pour qu'il puisse héberger la base de données de GLPI. La première action à effectuer, c'est d'exécuter la commande ci-dessous pour effectuer le minimum syndical en matière de sécurisation de MariaDB.

sudo mysql_secure_installation

Vous serez invité à changer le mot de passe root, mais aussi à supprimer les utilisateurs anonymes, désactiver l'accès root à distance, etc.... Tout est bien expliqué. Voici un exemple sur mon serveur pour vous guider : 

image.png

Ensuite, nous allons créer une base de données dédiée pour GLPI et celle-ci sera accessible par un utilisateur dédié. Hors de question d'utiliser le compte root de MariaDB : une base de données = un utilisateur.

Connectez vous à votre instance MariaDB :

sudo mysql -u root -p

Saisissez le mot de passe root de MariaDB, que vous venez de définir à l'étape précédente (si inchangé comme sur mon exemple mot de passe root par défaut).

Puis nous allons exécuter les requêtes SQL ci-dessous pour créer la base de données "db_glpi" ainsi que l'utilisateur "glpi_admin" avec le mot de passe "MotDePasseRobuste" (vous pouvez changer et mettre à votre guise tout ce qu'il y a entre guillemets). Cet utilisateur aura tous les droits sur cette base de données (et uniquement sur celle-ci).

CREATE DATABASE db_glpi;
GRANT ALL PRIVILEGES ON db_glpi.* TO glpi_adm@localhost IDENTIFIED BY "MotDePasseRobuste";
FLUSH PRIVILEGES;
EXIT

Voilà, la base de données prête.

C. Télécharger GLPI et préparer son installation

La prochaine étape consiste à télécharger l'archive ".tgz" qui contient les sources d'installation de GLPI. A partir du GitHub de GLPI, récupérez le lien vers la dernière version. Ici, c'est la version GLPI 10.0.14 qui est installée.

L'archive sera téléchargée dans le répertoire "/tmp" :

cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.14/glpi-10.0.14.tgz

Puis, nous allons exécuter la commande ci-dessous pour décompresser l'archive .tgz dans le répertoire "/var/www/", ce qui donnera le chemin d'accès "/var/www/glpi" pour GLPI

sudo tar -xzvf glpi-10.0.14.tgz -C /var/www/

Nous allons définir l'utilisateur "www-data" correspondant à Nginx, en tant que propriétaire sur les fichiers GLPI.

sudo chown www-data /var/www/glpi/ -R

Ensuite, nous allons devoir créer plusieurs dossiers et sortir des données de la racine Web (/var/www/glpi) de manière à les stocker dans les nouveaux dossiers que nous allons créer. Ceci va permettre de faire une installation sécurisée de GLPI, qui suit les recommandations de l'éditeur.

Commencez par créer le répertoire "/etc/glpi" qui va recevoir les fichiers de configuration de GLPI. Nous donnons des autorisations à www-data sur ce répertoire car il a besoin de pouvoir y accéder.

sudo mkdir /etc/glpi
sudo chown www-data /etc/glpi/

Puis, nous allons déplacer le répertoire "config" de GLPI vers ce nouveau dossier : 

sudo mv /var/www/glpi/config /etc/glpi

Répétons la même opération avec la création du répertoire "/var/lib/glpi" : 

sudo mkdir /var/lib/glpi
sudo chown www-data /var/lib/glpi/

Dans lequel nous déplaçons également le dossier "files" qui contient la majorité des fichiers de GLPI : CSS, plugins, etc.

sudo mv /var/www/glpi/files /var/lib/glpi

Terminons par la création du répertoire "/var/log/glpi" destiné à stocker les journaux de GLPI. Toujours sur le même principe : 

sudo mkdir /var/log/glpi
sudo chown www-data /var/log/glpi

Nous n'avons rien à déplacer dans ce répertoire.

Nous devons configurer GLPI pour qu'il sache où aller chercher les données.

Autrement dit, nous allons déclarer les nouveaux répertoires fraichement créés.

Nous allons créer ce premier fichier : 

sudo nano /var/www/glpi/inc/downstream.php

Afin d'ajouter le contenu ci-dessous qui indique le chemin vers le répertoire de configuration

<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
  require_once GLPI_CONFIG_DIR . '/local_define.php' ;
}

Ensuite, nous allons créer ce second fichier : 

sudo nano /etc/glpi/local_define.php

Afin d'ajuster le contenu ci-dessous permettant de déclarer deux variables permettant de préciser les chemins vers les répertoires "files" et "log" que l'on a préparé précédemment.

<?php
define('GLPI_VAR_DIR', '/var/lib/glpi/files');
define('GLPI_LOG_DIR', '/var/log/glpi');

Voilà cette étape est terminée.

D. Préparer la configuration Nginx

Passons à la configuration du serveur web Nginx. Nous allons créer un nouveau fichier de configuration. Dans mon cas, le fichier s'appelle "glpi.conf".

sudo nano /etc/nginx/sites-available/glpi.conf

Ce qui donne la configuration suivante (selon le modèle officiel de la documentation) : 

server {
    listen 80;
    listen [::]:80;

    server_name 192.168.1.69;

    root /var/www/glpi/public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ ^/index\.php$ {
        # the following line needs to be adapted, as it changes depending on OS distributions and PHP versions
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Exemple de ma configuration : 

image.png

Quand la configuration est prête, enregistrez le fichier.

Puis, nous allons activer ce nouveau site dans Nginx

sudo ln -s /etc/nginx/sites-available/glpi.conf /etc/nginx/sites-enabled/

Il ne reste plus qu'à redémarrer le service Nginx : 

sudo systemctl restart nginx

E. Utilisation de PHP8.2-FPM avec Nginx

Pour utiliser PHP en tant que moteur de scripts avec Nginx, nous allons utiliser PHP-FPM.

Il est recommandé d'utiliser PHP-FPM car il est plus performant et se présente comme un service indépendant.

Nous allons commencer par installer PHP8.2-FPM avec la commande suivante : 

sudo apt-get install php8.2-fpm

Pour configurer PHP-FPM pour Nginx, nous n'allons pas éditer le fichier "/etc/php/8.2/nginx/php.ini" mais plutôt ce fichier : 

sudo nano /etc/php/8.2/fpm/php.ini

Dans ce fichier, recherchez l'option "session.cookie_httponly" et indiquez la valeur "on" pour l'activer, afin de protéger les cookies de GLPI.

; Whether or not to add the httpOnly flag to the cookie, which makes it
; inaccessible to browser scripting languages such as JavaScript.
; https://php.net/session.cookie-httponly
session.cookie_httponly = on

Enregistrez le fichier quand c'est fait. Par la suite, vous pourriez être amené effectuer d'autres modifications, notamment pour augmenter la taille des uploads sur GLPI, etc.

Pour appliquer les modifications, nous devons redémarrer PHP-FPM : 

sudo systemctl restart php8.2-fpm.service

Voilà, tout est prêt ! Il ne reste plus qu'à installer GLPI !

IV. Installation de GLPI

Pour effectuer l'installation de GLPI, nous devons utiliser un navigateur Web afin d'accéder à l'adresse du GLPI. Il s'agit de l'adresse déclarée dans le fichier de configuration Nginx (ServerName).

Si vous avez suivi toutes les étapes correctement, vous devriez arriver sur cette page. Nous allons commencer par choisir la langue.

image.png

Puisqu'il s'agit d'une nouvelle installation, nous cliquons sur "Installer".

image.png

Etape important : GLPI vérifie la configuration de notre serveur pour déterminer si tous les prérequis sont respectés. Tout est bon, donc nous pouvons continuer.

image.png

A l'étape suivante, nous devons renseigner les informations pour se connecter à la base de données. Nous indiquons "localhost" en tant que serveur SQL puisque MariaDB est installé en local, sur le même serveur que GLPI. Puis, nous indiquons notre utilisateur "glpi_adm" et le mot de passe associé.

image.png

Après avoir cliqué sur "Continuer", nous devons choisir la base de données "db23_glpi" créée précédemment.

image.png

Poursuivez....

image.png

Suivez les dernières étapes qui n'ont pas de réel impact. Le plus dur est fait !

image.png

Félicitations, vous venez d'installer GLPI ! Comme le précise la dernière étape, le compte administrateur par défaut est "glpi/glpi" !

image.png

Nous allons donc nous connecter avec le compte "glpi" et le mot de passe "glpi".

image.png

Bienvenue sur votre nouveau serveur GLPI !

image.png

V. Conclusion

En suivant ce tutoriel pas à pas, vous devez être en mesure d'installer GLPI sur un serveur Debian 12 ! À quelques détails près, cette procédure peut s'appliquer à d'autres systèmes et versions.


Révision #1
Créé 29 mai 2024 09:57:39 par Clément Ménier
Mis à jour 29 mai 2024 09:57:39 par Clément Ménier