Chapitre 2 - Installation de GLPI
Installation du serveur, de la base de données, de PHP et d’Apache.
- Installation d’Apache, PHP et MariaDB
- Base de données et fuseaux horaires
- Téléchargement et organisation des répertoires
- Configuration de PHP et Apache
- Finalisation de l’installation et comptes par défaut
Installation d’Apache, PHP et MariaDB
3.1 Installer Apache, MariaDB et PHP
sudo apt install -y \
apache2 mariadb-server cron \
libapache2-mod-php8.2 \
php8.2 php8.2-cli php8.2-common php8.2-opcache \
php8.2-mysql php8.2-curl php8.2-gd php8.2-intl \
php8.2-bcmath php8.2-mbstring php8.2-xml \
php8.2-zip php8.2-bz2 php8.2-ldap php8.2-apcu \
curl wget ca-certificates tar unzip ldap-utils netcat-openbsd
Activer et démarrer les services :
sudo systemctl enable --now apache2 mariadb
sudo systemctl status apache2 mariadb --no-pager
Contrôler PHP :
php -v
php -m | sort
Les modules importants doivent inclure au minimum bcmath, curl, dom, fileinfo, gd, intl, mbstring, mysqli, openssl, session, xml et zlib.
3.2 Sécuriser MariaDB
sudo mariadb-secure-installation
Recommandations :
- supprimer les utilisateurs anonymes ;
- interdire la connexion distante de
root; - supprimer la base de test ;
- recharger les privilèges.
Sur Debian, le compte MariaDB root utilise généralement l’authentification locale par socket. Il n’est pas obligatoire de lui attribuer un mot de passe si l’accès administrateur se fait avec sudo mariadb.
Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.
Base de données et fuseaux horaires
3.3 Créer la base GLPI
Ouvrir MariaDB :
sudo mariadb
Exécuter les requêtes suivantes en remplaçant le mot de passe :
CREATE DATABASE glpi
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER 'glpi'@'localhost'
IDENTIFIED BY 'MOT_DE_PASSE_BDD_TRES_LONG';
GRANT ALL PRIVILEGES ON glpi.* TO 'glpi'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Tester le compte :
mariadb -u glpi -p -e "SHOW DATABASES;"
Le compte doit voir la base glpi.
3.4 Charger les fuseaux horaires dans MariaDB
Cette étape permet à GLPI de proposer correctement les fuseaux horaires :
sudo mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mariadb mysql
sudo systemctl restart mariadb
Vérification :
sudo mariadb mysql -e \
"SELECT Name FROM time_zone_name WHERE Name='Europe/Paris';"
Avec GLPI 11, il ne faut pas accorder au compte applicatif des droits globaux sur les tables système MariaDB.
Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.
Téléchargement et organisation des répertoires
3.5 Télécharger GLPI
Toujours télécharger l’archive officielle glpi-VERSION.tgz. Les archives GitHub nommées Source code ne contiennent pas toutes les dépendances nécessaires et ne doivent pas être utilisées.
cd /tmp
GLPI_VERSION="11.0.8"
wget "https://github.com/glpi-project/glpi/releases/download/${GLPI_VERSION}/glpi-${GLPI_VERSION}.tgz"
tar -xzf "glpi-${GLPI_VERSION}.tgz"
sudo mv glpi /var/www/glpi
Vérifier la présence des fichiers :
ls -la /var/www/glpi
ls -la /var/www/glpi/public
3.6 Séparer le code, la configuration et les données
Créer les répertoires persistants :
sudo mkdir -p \
/etc/glpi \
/var/lib/glpi/files \
/var/lib/glpi/marketplace \
/var/log/glpi
Copier les données initiales :
sudo cp -a /var/www/glpi/config/. /etc/glpi/
sudo cp -a /var/www/glpi/files/. /var/lib/glpi/files/
Créer /var/www/glpi/inc/downstream.php :
sudo tee /var/www/glpi/inc/downstream.php >/dev/null <<'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';
}
PHP
Créer /etc/glpi/local_define.php :
sudo tee /etc/glpi/local_define.php >/dev/null <<'PHP'
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi/files');
define('GLPI_LOG_DIR', '/var/log/glpi');
define('GLPI_MARKETPLACE_DIR', '/var/lib/glpi/marketplace');
PHP
Appliquer les permissions :
sudo chown -R root:root /var/www/glpi
sudo find /var/www/glpi -type d -exec chmod 0755 {} \;
sudo find /var/www/glpi -type f -exec chmod 0644 {} \;
sudo chown -R www-data:www-data \
/etc/glpi \
/var/lib/glpi \
/var/log/glpi
sudo find /etc/glpi /var/lib/glpi /var/log/glpi \
-type d -exec chmod 0750 {} \;
sudo find /etc/glpi /var/lib/glpi /var/log/glpi \
-type f -exec chmod 0640 {} \;
Le code de GLPI est en lecture seule pour Apache. Les répertoires contenant la configuration, les documents, le cache, les journaux et la Marketplace restent accessibles en écriture à www-data.
Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.
Configuration de PHP et Apache
3.7 Configurer PHP
Créer /etc/php/8.2/apache2/conf.d/99-glpi.ini :
sudo tee /etc/php/8.2/apache2/conf.d/99-glpi.ini >/dev/null <<'INI'
date.timezone = Europe/Paris
memory_limit = 512M
max_execution_time = 600
max_input_vars = 5000
post_max_size = 64M
upload_max_filesize = 64M
session.cookie_httponly = On
session.cookie_samesite = Lax
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
INI
Lorsque l’instance est accessible uniquement en HTTPS, ajouter :
session.cookie_secure = On
Redémarrer Apache :
sudo systemctl restart apache2
Contrôler les valeurs chargées :
php -i | grep -E \
'date.timezone|memory_limit|upload_max_filesize|post_max_size'
3.8 Configurer le VirtualHost Apache
Créer /etc/apache2/sites-available/glpi.conf :
<VirtualHost *:80>
ServerName glpi.dreamsaphir.fr
DocumentRoot /var/www/glpi/public
<Directory /var/www/glpi/public>
Options FollowSymLinks
AllowOverride None
Require all granted
RewriteEngine On
# Transmettre l'en-tête Authorization à GLPI.
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Envoyer les requêtes vers le routeur GLPI,
# sauf lorsqu'un fichier existe réellement.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
ErrorLog ${APACHE_LOG_DIR}/glpi-error.log
CustomLog ${APACHE_LOG_DIR}/glpi-access.log combined
</VirtualHost>
Activer le site et la réécriture :
sudo a2enmod rewrite
sudo a2ensite glpi.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
Le résultat de apache2ctl configtest doit être :
Syntax OK
Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.
Finalisation de l’installation et comptes par défaut
3.9 Vérifier les prérequis GLPI
Toujours lancer les commandes de la console GLPI avec le compte du serveur Web afin d’éviter la création de fichiers appartenant à root :
cd /var/www/glpi
sudo -u www-data php bin/console glpi:system:check_requirements
Corriger toutes les erreurs obligatoires avant de poursuivre.
3.10 Terminer l’installation depuis le navigateur
Ouvrir :
http://glpi.dreamsaphir.fr
Puis :
- choisir le français ;
- accepter la licence ;
- sélectionner Installer ;
- saisir le serveur MariaDB
localhost; - saisir l’utilisateur
glpiet son mot de passe ; - sélectionner la base
glpi; - terminer l’installation.
Installation alternative en ligne de commande
cd /var/www/glpi
sudo -u www-data php bin/console db:install \
--default-language=fr_FR \
--db-host=localhost \
--db-name=glpi \
--db-user=glpi \
--db-password
L’option --db-password sans valeur demande le mot de passe de façon interactive et évite de l’enregistrer dans l’historique du shell.
3.11 Comptes créés par défaut
| Identifiant | Mot de passe initial | Profil |
|---|---|---|
glpi |
glpi |
Super-Admin |
tech |
tech |
Technicien |
normal |
normal |
Utilisateur |
post-only |
postonly |
Libre-service |
Immédiatement après la première connexion :
- créer un compte administrateur nominatif ;
- tester ce nouveau compte ;
- changer le mot de passe du compte
glpiet le désactiver si possible ; - supprimer ou désactiver les comptes
tech,normaletpost-onlys’ils ne sont pas utilisés ; - activer l’authentification multifacteur pour les comptes privilégiés.
Il peut être utile de conserver un compte administrateur local de secours, avec un mot de passe long conservé dans un coffre-fort et utilisé uniquement en cas de panne de l’annuaire.
Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.