========
= GLPI =
========

GLPI (acronyme de gestionnaire libre de parc informatique) est un logiciel libre de gestion des services informatiques (ITSM) et 
de gestion des services d'assistance (Issue Tracking System et ServiceDesk). Cette solution libre est éditée en PHP et distribuée sous licence GPL.


GLPI est une application web qui aide les entreprises à gérer leur système d’information.

Parmi ses caractéristiques, cette solution est capable de construire un inventaire de toutes les ressources de la société et 
de réaliser la gestion des tâches administratives et financières.

Les fonctionnalités de cette solution aident les Administrateurs IT à créer une base de données 
regroupant des ressources techniques et de gestion, ainsi qu’un historique des actions de maintenance.

La fonctionnalité de gestion d'assistance ou helpdesk fournit aux utilisateurs un service leur permettant de signaler 
des incidents ou de créer des demandes basées sur un actif ou non, ceci par la création d'un ticket d’assistance.

(https://fr.wikipedia.org/wiki/Gestion_libre_de_parc_informatique)


Pour une liste des fonctionnalités, voir  https://glpi-project.org/features

Il existe un wiki de documentation en Français à l'adresse  https://wiki.glpi-project.org/doku.php



Sur la machine GLPI, installation de GLPI avec NGINX, PHP7 et MariaDB
=====================================================================

Installation des paquets :
# apt install nginx mariadb-server php7.0-fpm php7.0-mysql
# apt install php7.0-curl php7.0-gd php7.0-cli php7.0-imap php7.0-ldap php7.0-apcu php7.0-xml php7.0-xmlrpc php7.0-mbstring php-cas 


Sécurisation de MariaDB :
# mysql_secure_installation
(indiquer un mot de passe 'root' et laisser les réponses par défaut pour le reste)


Création d'une base de donnée, d'un utilisateur et du mot de passe associé :
----------------------------------------------------------------------------

Se connecter au serveur de base de données MariaDB :

# mysql -u root -p

--> après avoir donné le mot de passe, à l'invite de commande mysql, coller chacune des lignes suivantes et appuyer sur 'Enter' :

create user postfo2019@localhost identified by 'postfo2019!';
create database glpi;
grant all privileges on glpi.* to postfo2019@localhost;
flush privileges;
quit;


Configuration de PHP7 :
-----------------------

Editer le fichier  /etc/php/7.0/fpm/pool.d/www.conf

Modifier la ligne 36 par :
listen = 127.0.0.1:9000


Éditer le fichier  /etc/php/7.0/fpm/php.ini :
Décommenter le ligne ligne 760 :
cgi.fix_pathinfo=0


Configuration de NGINX pour GLPI :
----------------------------------

Supprimer le bloc serveur du Virtual Host par défaut :
# rm /etc/nginx/sites-enabled/default

 
Créer le bloc serveur pour GLPI :
# nano /etc/nginx/sites-enabled/glpi

Dans ce fichier, coller le contenu suivant :

server {
            listen   80 default_server;
            root /var/www/html;
            index index.php;
            server_name localhost;
               
            location / {try_files $uri $uri/ index.php;}
            
            # Prise en charge PHP :
            location ~ \.php$  {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include /etc/nginx/fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_param SERVER_NAME $host;
                               }
       }


Relancer les services nginx et php-fpm :
# systemctl restart nginx
# systemctl restart php7.0-fpm

 

Installation de GLPI :
----------------------

Se placer dans l’arborescence du serveur web :
# cd /var/www/html/

Télécharger la dernière version de GLPI :
# wget https://github.com/glpi-project/glpi/releases/download/9.3.3/glpi-9.3.3.tgz
 
Décompresser l’archive :
# tar xzf glpi-9.3.3.tgz

Supprimer l’archive téléchargée :
# rm glpi-9.3.3.tgz


Définir les droits d'accès et le propriétaire du répertoire :
# chmod -R 755 /var/www/html/glpi/
# chown -R www-data:www-data /var/www/html/glpi/



Ouvrir un navigateur internet et saisir l’url du serveur web :  http://vmglpi.fij.name/glpi
-------------------------------------------------------------------------------------------

Suivre les étapes de configuration (ignorer si l'installateur indique que les dossiers 'config' et 'files' ne sont pas sécurisés) :

Sélectionner la langue, accepter les termes de la licence, cliquer sur 'Installer'.
Cliquer sur 'Continuer', saisir les informations concernant les accès à la base de données.
Cliquer sur 'Continuer' ...vous pouvez décocher la case "Envoyer les statistiques d’usage"...

Les identifiants par défaut pour se connecter à l’interface web d'administration de GLPI sont :  glpi/glpi

Par souci de sécurité :
- Changer les mots de passe pour les utilisateurs : glpi, post-only, tech et normal (onglet Administration > Users)
- Effacer le fichier  install/install.php
- Vérifier qu'nginx interdit l'accès aux pages :  http://vmglpi.fij.name/glpi/config  et  http://vmglpi.fij.name/glpi/files



L'installation et la configuration de base de GLPI sont maintenant terminées.



Les fonctionnalités d'inventaire :
==================================

Pour automatiser l'inventaire d'un parc informatique, le plugin "Fusion Inventory" est souvent utilisé.
Un agent est installé sur les machines à inventorier, cet agent est capable de communiquer avec le plugin du serveur GLPI et 
d'y construire une base de données du parc informatique.
L'agent permettra également le déploiement de logiciels sur les machines inventoriées.

Pour une liste détaillée des fonctionnalités, voir  http://fusioninventory.org/overview/



Installer le plugin Fusion Inventory sur le serveur :
-----------------------------------------------------
# wget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi9.3%2B1.2/fusioninventory-9.3+1.2.tar.gz
# tar xzf fusioninventory-9.3+1.2.tar.gz

Déplacer le dossier 'fusioninventory' dans le dossier 'plugins' de GLPI :
# mv fusioninventory/   glpi/plugins/

Effacer l'archive :
# rm  /var/www/html/fusioninventory-9.3+1.2.tar.gz

Installer et activer le plugin :
Dans le menu  Setup > Plugins, cliquer sur 'Install'.  Ensuite cliquer sur 'Activer le plugin'.



Installer l'agent sur des machines clientes :
---------------------------------------------

Pour installer l'agent sur FEDORA 28 (l'agent est disponible dans sa dernière version)
# dnf install fusioninventory-agent

Ensuite éditer le fichier  /etc/fusioninventory/agent.conf :

Décommenter et modifier la ligne indiquant l'adresse du serveur GLPI :
server = http://vmglpi.fij.name/glpi/plugins/fusioninventory/

Redémarrer le service :
# systemctl restart fusioninventory-agent

Pour forcer un inventaire immédiat :
# pkill -USR1 -f -P 1 fusioninventory-agent


Vérifier dans l'interface web de gestion de GLPI si la machine nouvellement inventoriée s'y trouve.
Menu Assets > Computers
Parcourir l'inventaire de la machine.

Il est possible d'installer l'agent sur une variété d'OS : Windows, Linux, OS X, BSD, Solaris, AIX, Android, ...
Voir  http://fusioninventory.org/documentation/agent/installation/



Pour une machine DEBIAN, voici la procédure d'installation de l'agent (essayer sur une des VMs existantes) :

Installer les dépendances :
# apt -y install dmidecode hwdata ucf hdparm perl libuniversal-require-perl libwww-perl libparse-edid-perl libproc-daemon-perl
# apt -y install libproc-pid-file-perl libfile-which-perl libxml-treepp-perl libyaml-perl libnet-cups-perl libnet-ip-perl
# apt -y install libdigest-sha-perl libsocket-getaddrinfo-perl libtext-template-perl

Télécharger la dernière version de l'agent :
# wget http://debian.fusioninventory.org/downloads/fusioninventory-agent_2.4-2_all.deb

Installer le paquet téléchargé :
# dpkg -i fusioninventory-agent_2.4-2_all.deb

Editer le fichier de configuration en y indiquant l'url du serveur :
# nano /etc/fusioninventory/agent.cfg

server = http://vmglpi.fij.name/glpi/plugins/fusioninventory/


Redémarrer l'agent et forcer l'inventaire immédiat :
# systemctl restart fusioninventory-agent
# pkill -USR1 -f -P 1 fusioninventory-agent



Exercice supplémentaire :
-------------------------

Utiliser le module 'Assistance - Helpdesk' de GLPI afin de créer et de gérer des tickets d'assistance :
voir  http://wiki.glpi-project.org/doku.php?id=fr:manuel:admin:0_index



Correction d’un warning affiché dans l’interface de gestion du serveur GLPI : « GLPI cron not running » :
---------------------------------------------------------------------------------------------------------
Cela indique qu’il faut créer une tâche planifiée pour GLPI :

# crontab -u www-data -e

Ajouter la ligne :
*/5 * * * * /usr/bin/php /var/www/html/glpi/front/cron.php &>/dev/null

Ceci crée une tâche planifiée pour l’utilisateur système ‘ngnx’ (le serveur HTTP) qui lance toutes les 5 minutes l’exécution du fichier « cron.php » de GLPI.