30
Déc
30

Installation de GLPI sous CentOS 7

GLPI (Gestionnaire Libre de Parc Informatique) est une solution libre de gestion de parc informatique. Il s’agit d’une application Web écrite en PHP où les différents éléments (matériel, logiciels, licences, contrats, interventions, …) constituant votre parc peuvent être organisés et gérés.

Dans cette documentation, nous allons installer la dernière version stable de GLPI (0.90.1) sur une distribution CentOS 7 de manière fonctionnelle. Cette procédure d’installation ne sera donc ni optimisée, ni sécurisée. Nous aurons besoin d’un serveur Web (Apache/HTTPD), d’une base de données de type MySQL (MariaDB remplace MySQL sous CentOS 7) et de PHP.

A noter qu’un paquet glpi est également disponible dans le dépôt EPEL (Extra Packages for Enterprise Linux). Nous n’utiliserons pas ce dépôt.

Ces opérations sont à réaliser en tant qu’utilisateur root.

– Désactivez SELinux de façon permanente à travers son fichier de configuration : vi /etc/selinux/config

SELINUX=disabled

– La prise en compte de ce changement nécessite un redémarrage de la machine : reboot

GLPI requiert l’installation d’extensions PHP (CType, FileInfo, GD, JSON, Mbstring, MySQLi, Session, Zlib). Certaines extensions sont incluses directement dans le paquet php et d’autres doivent être installées explicitement. Dans le cas où vous souhaiteriez mettre en place une méthode d’authentification externe, d’autres extensions PHP seront à prévoir. Dans notre exemple, nous utiliserons une base locale de comptes pour l’authentification.

– Installez les paquets suivants (serveur Apache/HTTPD, PHP, extensions PHP, serveur MariaDB et l’utilitaire wget) : yum install httpd php php-mysql php-gd php-mbstring mariadb-server wget

– Lancez le serveur MariaDB au démarrage de la machine : systemctl enable mariadb
– Lancez le serveur MariaDB : systemctl start mariadb

– Exécutez l’utilitaire mysql_secure_installation pour sécuriser l’installation de MariaDB : mysql_secure_installation

> Enter current password for root (enter for none):
> OK, successfully used password, moving on...
> Set root password? [Y/n] Y
> New password:
> Re-enter new password:
> Remove anonymous users? [Y/n] Y
> Disallow root login remotely? [Y/n] Y
> Remove test database and access to it? [Y/n] Y
> Reload privilege tables now? [Y/n] Y

Pour commencer, l’utilitaire mysql_secure_installation nous demande le mot de passe actuel de l’utilisateur root (celui de MariaDB). Ce mot de passe est vide par défaut. Ensuite, plusieurs questions vous sont posées pour sécuriser l’installation de MariaDB : affecter un mot de passe à l’utilisateur root, supprimer les connexions anonymes, désactiver la possibilité à l’utilisateur root de se connecter à distance, supprimer la base de données prédéfinie test et recharger les privilèges des tables.

GLPI nécessite la création d’une base de données spécifique à son utilisation.

– Lancez l’invite de commandes de MariaDB/MySQL : mysql -u root -p

> Enter password:
> MariaDB [(none)]> CREATE DATABASE glpidb;
> MariaDB [(none)]> GRANT ALL PRIVILEGES ON `glpidb` .* TO 'glpiuser'@'localhost' IDENTIFIED BY 'MotDePasse';
> MariaDB [(none)]> quit

Le mot de passe de l’utilisateur root est demandé. Il s’agit d’entrer le mot de passe que vous avez choisi précédemment. La première commande SQL créé la base de données glpidb. La deuxième commande créé et associe l’utilisateur glpiuser avec cette base de données en lui octroyant les autorisations adéquates. Vous êtes bien entendu encouragé à modifier le mot de passe de l’utilisateur glpiuser.

Nous allons maintenant configurer le serveur Web pour les besoins de GLPI.

– Éditez le fichier de configuration de PHP afin de préciser le fuseau horaire : vi /etc/php.ini

[Date]
date.timezone = "Europe/Paris"

Lors de l’installation de GLPI, le script d’installation vérifie que les répertoires config et files ne soient pas accessibles.

– Créez le fichier de configuration pour interdire l’accès aux répertoires config et files : vi /etc/httpd/conf.d/glpi.conf

<Directory "/var/www/html/glpi/config">
    AllowOverride None
    Require all denied
</Directory>

<Directory "/var/www/html/glpi/files">
    AllowOverride None
    Require all denied
</Directory>

– Lancez le serveur Apache/HTTPD au démarrage de la machine : systemctl enable httpd
– Lancez immédiatement le serveur Apache/HTTPD : systemctl start httpd

CentOS 7  introduit le concept de zone réseau avec le pare-feu firewalld. Ce qui permet d’appliquer des règles en fonction de la zone réseau sur lequel on se trouve. Par défaut, la zone réseau est nommée public. Nous allons autoriser le service http pour la zone public de manière permanente et recharger les règles.

firewall-cmd –permanent –zone=public –add-service=http
firewall-cmd –reload

Nous allons passer à l’installation de GLPI.

– Placez-vous dans le répertoire suivant : cd /usr/local/src/
– Téléchargez la dernière version stable de GLPI (0.90.1 lors de l’écriture cette documentation) à l’aide de l’utilitaire wget : wget https://github.com/glpi-project/glpi/releases/download/0.90.1/glpi-0.90.1.tar.gz
– Décompressez l’archive de GLPI à la racine des documents du serveur Web : tar -xzvf glpi-0.90.1.tar.gz -C /var/www/html/
– Modifiez le propriétaire de manière récursive sur le répertoire de GLPI : chown -R apache:apache /var/www/html/glpi/

A l’aide de votre navigateur Web, vous devez entrer l’adresse du serveur Web suivi de glpi (http://xxx.xxx.xxx.xxx/glpi/). Un assistant vous guide dans l’installation de GLPI.

Sélectionnez la langue française dans la liste déroulante.

glpi_install1

Acceptez la licence d’utilisation.

glpi_install2

Une nouvelle installation complète doit être choisie.

glpi_install3

Plusieurs tests sont effectués pour vérifier si les extensions PHP et la configuration sont conformes aux besoins de GLPI.

glpi_install4

Indiquez les paramètres de connexion à la base de données.

glpi_install5

Sélectionner la base de données existante glpidb.

glpi_install6

Les différentes tables sont alors créées dans cette base de données.

glpi_install7

L’assistant vous indique les comptes utilisateurs prédéfinis.

glpi_install8

– Supprimez le script d’installation de GLPI : rm -f /var/www/html/glpi/install/install.php

Vous pouvez maintenant vous authentifier à l’interface Web de GLPI avec l’utilisateur glpi dont le mot de passe par défaut est aussi glpi.

glpi_install9

Depuis le menu Administration, et le sous-menu Utilisateurs, vous pouvez modifier les mots de passe  attribués aux utilisateurs prédéfinis (glpi, post-only, tech et normal).

30 commentaires :
  1. Pierrick 10 Fév, 2016

    Merci pour le tuto
    pour mon installation j’ai utilisé les commandes:
    use glpidb;
    grant all privileges to `glpi`@`localhot` identified by `password`;
    *******************************
    firewall-cmd –permanent –zone=public –add-service=http

  2. Pierrick 10 Fév, 2016

    en fait on voit pas les – – dans la commande firewall

  3. Zoltan 26 Fév, 2016

    Merci beaucoup.
    Il me manquait juste la partie conf « /etc/httpd/conf.d/glpi.conf » (erreur de droits .htaccess sur l’install GLPI)

  4. rodolphe 24 Mar, 2016

    Merci.

  5. Dylan 24 Mai, 2016

    Bonjour,

    Quand je tape votre commande : yum install httpd php php-mysql php-gd php-mbstring mariadb-server wget

    J’obtiens le message d’erreur suivant : Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
    https://lcm-proxy.lbg.office.****/pulp/repos/****_Office_FR/Prod/CV_CentOS_Linux_7_Server/custom/Atomic_EL7/base_-_x86_64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 – Not Found
    Trying other mirror.
    To address this issue please refer to the below knowledge base article

    https://access.redhat.com/articles/1320623

    If above article doesn’t help to resolve this issue please create a bug on https://bugs.centos.org/

    One of the configured repositories failed (base – x86_64),
    and yum doesn’t have enough cached data to continue. At this point the only
    safe thing yum can do is fail. There are a few ways to work « fix » this:

    1. Contact the upstream for the repository and get them to fix the problem.

    2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).

    3. Disable the repository, so yum won’t use it by default. Yum will then
    just ignore the repository until you permanently enable it again or use
    –enablerepo for temporary usage:

    yum-config-manager –disable ****_Office_FR_Atomic_EL7_base_-_x86_64

    4. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    compromise:

    Une idée afin de me débloquer ?

    La commande « yum » ne veut installer aucun paquet.

  6. Yoann 24 Mai, 2016

    Bonjour,

    C’est difficile à dire. Il serait nécessaire de vérifier la configuration réseau et vos dépôts. Vous pouvez exécuter la commande « yum clean all » pour effacer et reconstruire le cache de YUM.

    Cordialement.

  7. Dylan 25 Mai, 2016

    Bonjour,

    Merci tout d’abord pour la réponse plus que rapide.

    J’ai exécuté la commande « yum clean all ».

    J’ai obtenu : [root@test-glpi ~]# yum clean all
    Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
    Cleaning repos: ****************** (information que je dois cacher)

    Cleaning up everything

    J’ai alors repris votre commande, et cela me met toujours le même message d’erreur.

    Je ne vois vraiment pas ou est le problème.

  8. Dylan 25 Mai, 2016

    Re-bonjour Yoann,

    Mon problème a été réglé, je poursuis l’installation, en espérant que tout se passe bien.

    Merci encore pour votre aide.

    Cordialement,

    Dylan

  9. Dylan 25 Mai, 2016

    Bonjour,

    A l’étape de « sudo systemctl enable httpd »

    J’obtiens le message d’erreur suivant : « Job for httpd.service failed because the control process exited with error code ».

    Une idée pour me débloquer de ce message ?

    Merci d’avance,

    Dylan

  10. Yoann 25 Mai, 2016

    Bonjour,

    Vous avez certainement des erreurs dans les fichiers de configuration de Apache/HTTPD. Il est nécessaire de jeter un œil dans les logs.

    Cordialement.

  11. Dylan 25 Mai, 2016

    Re-bonjour,

    Excusez moi mais je début totalement dans ce domaine,
    je ne connais pas la commande pour vérifier ce fichier.

    Pouvez-vous m’aider ?

    Cordialement,

    Dylan.

  12. Dylan 25 Mai, 2016

    Problème réglé !

    J’avance encore un peu, merci encore !

    Dylan

  13. Dylan 25 Mai, 2016

    Bonjour Yoann,
    Encore un petit (dernier?) problème.
    Sur votre 4ème capture d’écran, au moment de la validation, tout apparait en vert comme « OK ».
    Sur mon installation a partir de « test d’écriture du fichier de configuration », aucun n’est validé avec comme message d’erreur :  » Le dossier n’a pas pu être crée. Controle des droits sur le répertoire : /var/www/html/glpi/config

    Que faire ?

    Merci d’avance,

    Dylan

  14. Yoann 25 Mai, 2016

    L’utilisateur d’Apache/HTTPD doit pouvoir créer des fichiers et des répertoires dans le répertoire /var/www/html/glpi/.

    – chown -R apache:apache /var/www/html/glpi/

  15. Dylan 25 Mai, 2016

    Est ce que après l’exécution de cette commande, quelque chose doit se passer ?

    Si je l’exécute en « sudo » rien ne se passe,
    Si je l’exécute avec un user, une liste de commande s’enchaine avec au bout de chaque ligne : Operation not permitted

  16. Dylan 25 Mai, 2016

    Problème résolu, j’ai vu sur un autre forum qu’il fallait rajouter les lignes suivantes :

    chcon -R -t httpd_sys_script_rw_t -u system_u /var/www/html/glpi/config
    chcon -R -t httpd_sys_script_rw_t -u system_u /var/www/html/glpi/files

    setsebool -P httpd_can_network_connect on
    setsebool -P httpd_can_network_connect_db on
    setsebool -P httpd_can_sendmail on

  17. Yoann 25 Mai, 2016

    « Désactivez SELinux de façon permanente à travers son fichier de configuration ».

  18. Dylan 26 Mai, 2016

    Bonjour Yoann,

    Avez-vous déjà procéder à l’installation de OCS Inventory sur CentOS ?

    Merci d’avance,

    Dylan

  19. Tuxmika 28 Août, 2016

    Je lis partout qu’il faut faire un chmod 777 sur les dossiers files et config.qu’en penses tu?y a t’il un autre moyen que le h taccess pour interdire l’accès à ces dossiers?

  20. Yoann 29 Août, 2016

    Bonjour,

    Il est nécessaire que l’utilisateur faisant tourner le serveur Web, possède les droits d’écriture sur certains fichiers et répertoires (d’où la commande chown -R apache:apache /var/www/html/glpi/).
    L’assistant d’installation effectue d’ailleurs différents tests dans ce sens. Il n’y a pas besoin de faire de chmod 777.

    Dans cette documentation, l’accès aux répertoires « config » et « files » est retreint à travers le fichier de configuration /etc/httpd/conf.d/glpi.conf. Il n’y a pas de .htaccess.

    Cordialement.

  21. tuxmika 29 Août, 2016

    j’ai configuré un vhost comme ceci et c’est bon

    ServerName leglpi.tux.mika
    DocumentRoot /var/www/html/glpi

    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require all granted

    ServerSignature off
    ErrorLog /var/log/http.log
    CustomLog /var/log/access.log combined

  22. Sanders 12 Sep, 2016

    Bonjour Dylan

    Comment as tu resolu ce probleme :

    « Job for httpd.service failed because the control process exited with error code ».

    Anderson

  23. Sanders 12 Sep, 2016

    A l aideeeee Yoann !!!!

    systemctl start httpd me done cette erreur :

    « Job for httpd.service failed because the control process exited with error code »

    A l’aiddeeee !!

  24. Yoann 12 Sep, 2016

    Bonjour,

    Ce message indique une erreur dans les fichiers de configuration de Apache/HTTPD. Vous devez regarder les fichiers de log pour en connaitre la cause.

    Cordialement.

  25. Tuxmika 13 Sep, 2016

    @sanders tu peux vérifier ta conf apache avec la commande apachectl configtest

  26. olahouze 24 Oct, 2016

    Merci pour ce super tuto.

    Pour info, sur centos 7 il faut ajouter ces commandes pour configurer SELinux plus finement sans le désactiver totalement:

    chcon -R -t httpd_sys_script_rw_t -u system_u /var/www/html/glpi
    setsebool -P httpd_can_network_connect on
    setsebool -P httpd_can_network_connect_db on
    setsebool -P httpd_can_sendmail on

  27. Ezéchiel 28 Oct, 2016

    Hello Yoan,
    merci pour ce tutoriel. Je perdait du temps à cause de SELinux qui était resté actif.

    Chapeau !!!

  28. SamSH 22 Mar, 2017

    Bonjour ! s’il vous plait dans l’étape: mysql_secure_installation
    quand je rentre le mot de passe que jai cree pour le root il s’affiche un msg :Access denied for user
    j’essai de faire ENTREr mais le message s’affiche encore ! 🙁

  29. Fay 1 Avr, 2020

    Bonjour,

    avant tout merci pour ce tuto, il m’a beaucoup aidé!

    je rencontre un problème sur une installation avec CENTOS 7 et du mariadb, j’ai ce message d’erreur:
    L’accès web au répertoire des fichiers est protégé
    L’accès web au dossier « files » ne devrait pas être autorisé
    Vérifier le fichier .htaccess et la configuration du serveur web

    j’ai vérifié les droits, je n’ai pas de .htaccess, que faut-il pour débloquer cette étape svp?

    merci à tous

  30. Yoann 1 Avr, 2020

    Bonjour,

    Comme indiqué dans cette documentation :

    Lors de l’installation de GLPI, le script d’installation vérifie que les répertoires config et files ne soient pas accessibles.

    C’est ce le rôle du fichier de configuration /etc/httpd/conf.d/glpi.conf qui est créé.

    Cordialement.




Le thème Celadon pour WordPress a été créé par Themes Boutique