16 octobre 2024

[Tuto] Installer GLPI 10 sous Debian

Le tuto du jour sur infotrucs.fr : configurer un serveur GLPI sur Debian 12 en CLI avec Apache 2, MariaDB, PHP et Certbot (via le CA Let’s Ecnrypt) pour créer et renouveler automatiquement le certificat SSL.

PREMIER AVERTISSEMENT : Lisez TOUT et dans l’ordre svp 🙂

Concernant PHP, nous activerons PHP-FPM qui offre une gestion plus fine des processus PHP. C’est utile sur les serveurs à forte charge. Ce n’est pas forcément nécessaire chez vous si vous avez 3 pelés qui utiliseront GLPI. A vous d’adapter au besoin, mais je trouve intéressant de voir comment l’implémenter. Pour en savoir plus : www.php.net/manual/fr/install.fpm.php

Le serveur sera sécurisé et toutes les requêtes en HTTP seront redirigées sur HTTPS. Suivez le tuto dans l’ordre. Le serveur web doit être configuré avant d’utiliser certbot. Un domaine publique est obligatoire pour utiliser certbot.

Le site sera accessible depuis internet via l’URL site.domaine.com. Vous devrez donc posséder un domaine publique et avoir créé votre enregistrement DNS redirigeant vers votre IP publique. De plus, un domaine publique est obligatoire pour utiliser certbot.

Personnellement, j’ai aussi un serveur DNS local, et une zone DNS nommée domaine.local. C’est pourquoi vous verrez cette extension dans ce document. A vous d’adpater bien sûr.

Vous devrez aussi avoir redirigé les ports TCP 80 et 443 vers votre serveur local.

Votre serveur doit alors avoir une IP statique.

Je ne détaillerais pas tellement toutes ces techniques qui, après tout, peuvent très bien être différentes pour vous. Mais dans mon cas ce sera comme ça.

Si vous avez déjà des VirtualHost Apache sur votre serveur, vous n’avez pas besoin d’y toucher, on va en rajouter un pour GLPI.

Si vous avez des problèmes de votre côté, vous pouvez bien sûr poser des questions dans les commentaires, mais s’il vous plait, prenez soin avant toute chose de suivre le tuto dans l’ordre. Pareil, si vous avez la version 13 de Debian, attendez-vous à quelque subtilité ! De mon côté, j’ai noté étape par étape en le faisant moi-même, et ça ne marchera pas si vous sautez des chapitres, bande de petits impatients XD

Je rajouterais que dans ce tuto, nous suivons les recommandations de la doc officielle de GLPI, certains fichiers seront déplacés dans /etc/xxxxx par mesure de sécurité. Ainsi que quelques considérations que vous verrez plus bas.

1.Modifier /etc/hosts

Tout d’abord, il faut ajouter correctement le nom d’hôte dans le fichier /etc/hosts. Si vous avez plusieurs sites web sur le même serveur, il se peut que vous en ayez déjà ajouté. Rajoutez donc une ligne pour glpi. Éditez le fichier et ajoutez la ligne suivante en la personnalisant :

ip_locale glpi.domaine.local glpi

2.Apache

Pour rappel, mon dossier de GLPI sera ici /usr/share/glpi . Adaptez si besoin. On va installer Apache et créer nos virtualhost.

2.1.Installation d’Apache

-Maj des paquets :

apt-get update && apt-get upgrade

-Installation d’apache :

apt-get install apache2

-Suppression de la page d’index par défaut :

rm /var/www/html/index.html

-Activation de modules :

a2enmod env dir mime rewrite headers ssl

-Activation et démarrage :

systemctl enable apache2 && systemctl restart apache2

2.2.Virtualhost *80

Suite à cette configuration l’utilisateur qui entrera l’URL en HTTP sera redirigé automatiquement vers HTTPS.

-Créer le fichier suivant puis entrer ce contenu (adapter le contenu en gras) :

nano /etc/apache2/sites-available/glpi.conf

<VirtualHost *:80>
DocumentRoot /usr/share/glpi/
ServerName glpi.domaine.com
Redirect permanent / glpi.domaine.com/

ErrorLog ${APACHE_LOG_DIR}/glpi.error.log
CustomLog ${APACHE_LOG_DIR}/glpi.access.log combined

<Directory /usr/share/glpi/>
Require all granted
Options +FollowSymLinks +MultiViews
AllowOverride ALL

</Directory>
</VirtualHost>

2.3.Virtualhost *443

 -Créer maintenant le fichier suivant puis entrer ce contenu (adapter le contenu en gras) :

nano /etc/apache2/sites-available/glpi-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
DocumentRoot /usr/share/glpi/public #Oui, j’ai bien rajouté public dans le chemin, c’est une préconisation de la doc officielle (ce dossier existe).
ServerName glpi.domaine.com

<Directory /usr/share/glpi/public>
Options +FollowSymLinks +MultiViews
AllowOverride ALL
Order allow,deny
Allow from all
Require all granted
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>

ErrorLog ${APACHE_LOG_DIR}/glpi.error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/glpi.ssl_access.log combined

</VirtualHost>
</IfModule>

-Activer nos deux fichiers de conf :

a2ensite glpi.conf glpi-ssl.conf

-Ne rechargez pas Apache tout de suite.

3.Certificat SSL

Créez maintenant votre certificat SSL. Je ne vais pas détailler la méthode ici, voyez cet article pour le créer et revenez ici ensuite.

-> Lors de l’exécution de certbot, sélectionnez bien glpi.domaine.local

-Une fois votre certificat créé, retournez éditer le fichier /etc/apache2/sites-available/glpi-ssl.conf et ajoutez les lignes suivantes concernant le certificat. Vous pouvez les mettre juste au dessus de </VirtualHost> comme suit :

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/glpi.domaine.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/glpi.domaine.local/privkey.pem

</VirtualHost>

4.PHP

Nous utiliserons l’extension php8.2-fpm qui offre une meilleure gestion des processus php.

4.1.Installer PHP

-Installer les paquets PHP :

apt-get install php php8.2-fpm php8.2-common php8.2-zip php8.2-xml php8.2-json php8.2-curl php8.2-gd php8.2-intl php8.2-mysqliphp8.2-bz2 php8.2-ldap

-Activer PHP-FPM :

a2enmod proxy_fcgi setenvif

a2enconf php8.2-fpm

Sauvegarder puis modifier le fichier /etc/php/8.2/fpm/php.ini et Ajoutez/Décommentez/Modifiez les lignes suivantes :

opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
session.cookie_secure=On
session.cookie_httponly=On
session.cookie_samesite=Lax

-Redémarrer PHP :

systemctl restart php8.2-fpm

-Ne redémarrez pas encore Apache ce n’est pas encore prêt.

4.2.Test de PHP-FPM

-Creer un fichier phpinfo.php à la racine par défaut de votre dossier apache :

nano /var/www/html/phpinfo.php

-Entrer ce code dedans puis l’enregistrer :

<?php
phpinfo();
?>

-Aller dans un navigateur et exécutez le fichier :

IP_locale/phpinfo.php

-Dans la page qui s’affiche, assurez-vous que fpm et ces modules sont activés :

Server API FPM/FastCGI

Loaded Configuration File /etc/php/8.2/fpm/php.ini

-Vous devez avoir un chapitre Zen OPCache avec marqué Up and Running.

-Vous devez avoir un chapitre zlib avec marqué Zlib support enabled.

-Vous pouvez désactiver le Virtualhost par défaut :

a2dissite 000-default.conf

-Vous pouvez supprimer le fichier phpinfo.php.

-Vous pouvez recharger Apache :

systemctl reload apache2.service

5.MariaDB

On va maintenant mettre en place la base de données associées à GLPI. Il s’agira de créer une base et un utilisateur avec privilèges. Inutile de préciser de choisir des identifiants forts !

5.1.Installer MariaDB

-Installer MariaDB :

apt-get install mariadb-server

5.2.Créer la base de données

-Entrer dans le prompt (en root) :

mariadb

-Créer la base de données et l’utilisateur :

CREATE DATABASE nom_de_la_bdd ;CREATE USER ‘nom_d’user‘@’localhost’ IDENTIFIED BY ‘mot_de_passe‘;

-Donner tous les privilèges à l’utilisateur sur notre base :

GRANT ALL PRIVILEGES ON nom_de_la_bdd . * TO ‘nom_d’user‘@’localhost’;

-Quitter le prompt avec exit.

5.3.Sécurisation de MariaDB

-Exécutez le script de sécurisation de MariaDB :

mysql_secure_installation

Enter current password for root : Tapez seulement Entrée.
Switch to unix_socket authentication : Normalement votre compte root a bien un mot de passe, donc tapez n puis Entrée.
Change the root password? : n
Remove anonymous users? : Y
Disallow root login remotely? : Le compte root ne devrait pouvoir se connecter que depuis localhost, entrez Y.
Remove test database and access to it? : Y
Reload privilege tables now? : Y

-Démarrer et activer MariaDB :

systemctl start mariadb && systemctl enable mariadb

6.Installation de GLPI

-Placez-vous dans le dossier où vous souhaiter installer le dossier racine de glpi. Pour moi ce sera ici :

cd /usr/share

Téléchargez GLPI. (Il vous faudra peut-être récupérer le lien de téléchargement chez GLPI si celui-ci a changé) :

wget github.com/glpi-project/glpi/releases/download/10.0.16/glpi-10.0.16.tgz

-Décompressez le fichier :

tar xzf glpi-10.0.16.tgz

-Vous avez maintenant un dossier /usr/share/glpi. Modifiez ses droits pour apache :

chown -R www-data:www-data /usr/share/glpi

-Vous pouvez supprimer l’archive téléchargée.

6.1.Sécurité

Pour des raisons de sécurité, nous allons déplacer des répertoires de glpi vers des répertoires personnalisés que vous pouvez adapter à votre manière.

-Créez le dossier suivant pour les fichiers de config :

mkdir /etc/glpi

-Créer le dossier suivant pour les fichiers utilisateurs :

mkdir /media/glpi

-Créer le dossier suivant pour les logs :

mkdir /var/log/glpi

-Créer maintenant ce fichier et entrez les valeurs suivantes :

nano /usr/share/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';
}

-Créez ensuite le fichier suivant et entrez ces valeurs :

nano /etc/glpi/local_define.php

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

-Déplacer les fichiers d’origine dans les nouveaux répertoires :

cp -a /usr/share/glpi/files/. /media/glpi/
cp -a /usr/share/glpi/config/. /etc/glpi/

-Donner les droits à apache sur ces dossiers et fichiers :

chown -R www-data:www-data {/etc/glpi,/media/glpi,/var/log/glpi}

chown www-data:www-data /usr/share/glpi/inc/downstream.php

chmod -R 740 {/etc/glpi,/media/glpi,/var/log/glpi}

chmod -R 740 /usr/share/glpi/inc/downstream.php

Histoire d’être sûr, activez et redémarrez tous les services :

systemctl enable apache2 php8.2-fpm mariadb

systemctl restart apache2 php8.2-fpm mariadb

6.2.Interface Web

Nous allons maintenant procéder à l’installation graphique de GLPI.

-Ouvrez un navigateur et entrez l’URL https://glpi.domaine.com

-Comme l’installation n’a encore jamais été faite, elle s’affiche. Choisissez la langue puis OK.

-La licence s’affiche -> Continuer.

-Cliquez sur Installer.

-Une liste de pré-requis s’affiche et vous constatez avec enchantement qu’il n’y a aucune erreur 🙂

-Cliquez sur Continuer.

-Dans la page suivante on va entrez les informations de base de données que l’on a choisies lors du chapitre sur MariaDB :

Serveur SQL : localhost
Utilisateur SQL : l’user créé
Mot de passe SQL : le mot de passe associé.

-Cliquez sur Suivant puis dans la page suivante : Test de connexion réussi. Sélectionnez alors la base de données que vous avez créée au chapitre sur MariaDB. Ça va mouliner un moment le temps de peupler la base.

-> Ok – La base a bien été initialisée. Cliquez sur Continuer. Ensuite, répondez à la question sur les statistiques d’usage puis Continuer. Et… encore Continuer, puis Utiliser GLPI ^^

-> Les identifiants par défauts sont les suivants :

  • glpi/glpi Compte Super-Admin

  • tech/tech Compte Technicien

  • normal/normal Compte « Normal »

  • post-only/postonly Compte « post-only »

-Allez vite créer un compte super-admin et supprimer les autres comptes.

6.3.Post-Installation

On va régler maintenant des petites choses maintenant que l’installation est finie.

-Supprimer le fichier suivant :

rm /usr/share/glpi/install/install.php

-Remettre les droits en lecture seule sur /etc/glpi :

chmod -R 550 /etc/glpi

-Créer le fichier suivant et y entrer ces directives pour sécuriser le dossier install :

nano /usr/share/glpi/install/.htaccess

<IfModule mod_authz_core.c>
    Require local
</IfModule>
<IfModule !mod_authz_core.c>
    order deny, allow
    deny from all
    allow from 127.0.0.1
    allow from ::1
</IfModule>
ErrorDocument 403 "<p><b>Restricted area.</b><br />Only local access allowed.<br />Check your configuration or contact your administrator.</p>"

6.4.Utilisation des fuseaux horaires

Si vous souhaitez gérer les fuseaux horaires au sein de GLPI, suivez ces instructions. CECI N’EST PAS OBLIGATOIRE.

-Dans le shell, entrez dans mariadb :

mariadb

-Donnez l’accès en lecture sur la table time_zone_name de la base mysql à votre utilisateur de base de données créé lors chapitre sur mariadb :

GRANT SELECT ON mysql.time_zone_name TO ‘nom_d’user_bdd‘@’localhost’;

-Activer la gestion des fuseaux horaires sur le système :

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -p -u root mysql

-> Le mot de passe root est demandé mais si vous êtes logué en root tapez juste Entrée.

-Entrez cette commande pour activer les fuseaux horaires dans GLPI :

php /usr/share/glpi/bin/console database:enable_timezones

-> Normalement cela affiche :

L’usage des fuseaux horaires a été activé.

7.Conclusion

Merci d’avoir passé un peu de temps sur infotrucs.fr. J’espère que cet article vous aura filé un coup de main ! N’hésitez pas à aller sur la page d’accueil si vous voulez expérimenter d’autres systèmes !

A bientôt !

Share

You may also like...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

5 × cinq =