GLPI

Introduction

GLPI est une application de gestion des services IT (ITSM) qui permet aux entreprises de suivre et de gérer leurs actifs informatiques, de gérer les tickets de support, et de centraliser les informations sur l’infrastructure IT.

En tant que solution open-source, GLPI est flexible et personnalisable, répondant ainsi aux besoins spécifiques des organisations de toutes tailles.

Prérequis

  • Machine linux sous Debian 12
  • Service Apache2
  • Service PHP 8.2 (PHP-FPM)
  • Service MariaDB Server (10.2 minimum)

Installation

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

Installation des paquets :

sudo apt-get install apache2 php mariadb-server

Nous allons aussi installer 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

Base de Données

Avant d’héberger la base de donnée de GLPI, nous allons effectuer cette commande pour effectuer le minimum en matière de sécurisation de MariaDB :

sudo mysql_secure_installation

Sécuriser Mariadb

Maintenant nous pouvons créer une base de données dédiée pour GLPI et celle-ci sera accessible par un utilisateur dédié.

sudo mysql -u root -p

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

GLPI

cd /tmp
wget https://github.com/glpi-project/glpi/releases/download/10.0.15/glpi-10.0.15.tgz
sudo tar -xzvf glpi-10.0.15.tgz -C /var/www/
sudo chown www-data /var/www/glpi/ -R

faire une installation sécurisée de GLPI, qui suit les recommandations de l’éditeur, nous allons créer plusieurs dossiers qui stockerons les données de la Racine web (/var/www/glpi):

  • /etc/glpi
sudo mkdir /etc/glpi
sudo chown www-data /etc/glpi/
sudo mv /var/www/glpi/config /etc/glpi
  • /var/lib/glpi
sudo mkdir /var/lib/glpi
sudo chown www-data /var/lib/glpi/
sudo mv /var/www/glpi/files /var/lib/glpi
  • /var/log/glpi
sudo mkdir /var/log/glpi
sudo chown www-data /var/log/glpi

Configuration GLPI

Nous devons configurer GLPI pour qu’il sache où aller chercher les données. Nous allons donc créer un nouveau fichier permettant d’indiquer le chemin vers le répertoire de configuration :

sudo vim /var/www/glpi/inc/downstream.php
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/');
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
    require_once GLPI_CONFIG_DIR . '/local_define.php';
}

Le second fichier que nous allons créer va permettre de déclarer des variables, dans notre contexte il y a en aura deux :

  • files
  • log
sudo vim /etc/glpi/local_define.php
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi/files');
define('GLPI_LOG_DIR', '/var/log/glpi');

Configuration Apache2

Nous allons créer un nouveau fichier de configuration qui va permettre de configurer le VirtualHost dédié à GLPI :

sudo vim /etc/apache2/sites-available/glpi.innovalia.xyz.conf
<VirtualHost *:80>
    ServerName glpi.innovalia.xyz

    DocumentRoot /var/www/glpi/public

    <Directory /var/www/glpi/public>
        Require all granted

        RewriteEngine On

        # Redirect all requests to GLPI router, unless file exists.
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>

</VirtualHost>

Il faut activer ce nouveau site dans Apache2 et désactiver le site par défaut :

sudo a2ensite glpi.innovalia.xyz.conf
sudo a2dissite 000-default.conf

Nous allons aussi activer le module “rewrite” car on l’a utilisé dans le fichier de configuration du VirtualHost :

sudo a2enmod rewrite

Une fois tout cela effectué nous allons pouvoir redémarrer le service apache pour prendre en compte la configuration :

sudo systemctl restart apache2

Ajout de PHP8.2-FPM

PHP-FPM (PHP FastCGI Process Manager) gère les processus PHP séparément du serveur Web Apache, contrairement au module PHP classique pour Apache (libapache2-mod-php) où chaque processus Apache exécute PHP.

En utilisant PHP-FPM avec GLPI, nous pouvons optimiser les ressources et gérer plus de connexions simultanées, ce qui améliore les performances et l’efficacité du serveur.

Installation de PHP8.2-FPM :

sudo apt-get install php8.2-fpm

Nous allons activer deux modules dans Apache et la configuration de PHP-FPM, avant de recharger Apache2 :

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm
sudo systemctl reload apache2

Pour configurer PHP-FPM pour Apache2, nous allons éditer le fichier /etc/php/8.2/fpm/php.ini :

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

Nous allons rechercher l’option “session.cookie_httponly” et lui attribuer 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

Pour appliquer les modifications, nous devons redémarrer le service :

sudo systemctl restart php8.2-fpm.service

La dernière étape consiste à modifier notre VirtualHost pour préciser à Apache2 que PHP-FPM doit être utilisé pour les fichiers PHP :

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/"
</FilesMatch>

Voici le VirtualHost complet :

<VirtualHost *:80>
    ServerName glpi.innovalia.xyz

    DocumentRoot /var/www/glpi/public

    <Directory /var/www/glpi/public>
        Require all granted

        RewriteEngine On

        # Redirect all requests to GLPI router, unless file exists.
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>

    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost/"
    </FilesMatch>

</VirtualHost>

Il ne faut pas oublié de redémarrer le service après toute modifications :

sudo systemctl restart apache2

Interface web

La suite de la configuration ce fait sur l’interface web de GLPI. POur cela il suffit de ce rendre sur l’adresse ip 10.0.20.16. Il faudra choisir la langue puis cliquez sur installer. Nous allons renseigner les informations permettant de nous connecter à la base de données :

connexion base de données GLPI

Nous allons pouvoir choisir la base de donnée préalablement créé db24_glpi_innovaliapuis cliquer sur suivant.

Une fois l’installation terminé nous allons pouvoir nous connecter avec l’utilisateur glpi et le mot de passe glpi. La première chose qui nous sera demandé, est de changer le mot de passe de tout les comptes par défaut.

Important

Nous devons supprimer le fichier Supprimer le fichier install.php puisqu’il n’est plus nécessaire et représente le risque de relancer l’installation :

sudo rm /var/www/glpi/install/install.php