Aller au contenu

Installer GLPI sur Ubuntu#

Pour cette installation, nous avons besoin de

  • Un serveur Linux Ubuntu 22.04 LTS
  • Un serveur Web - Apache
  • Un interpréteur de code - PHP
  • Une plateforme de gestion de serveur de base de données - MariaDB dans ce cas.

Nous séparons ce processus en 6 étapes :

  1. Installation des composants
  2. Configuration de la base de données
  3. Préparation des fichiers et dossiers pour l'installation de GLPI
  4. Donner les permissions correctes aux dossiers et fichiers sur linux pour installer GLPI
  5. Configuration du serveur web et de PHP
  6. Démarrer l'installation web

1 - Installation des composants#

Avant de commencer, assurez-vous que votre serveur est à jour

apt update && apt upgrade

Attention

Si votre pare-feu est activé, vous devez autoriser les connexions ssh, http et https à ce serveur. En fonction de votre politique de sécurité.

Pour cet article, nous utilisons Apache 2, le serveur MariaDB, PHP et ses extensions respectives. Si votre système d'exploitation et vos dépôts sont mis à jour, les dernières versions stables des extensions sont déjà celles qui ont été téléchargées.

apt install -y apache2 php php-{apcu,cli,common,curl,gd,imap,ldap,mysql,xmlrpc,xml,mbstring,bcmath,intl,zip,redis,bz2} libapache2-mod-php php-soap php-cas
apt install -y mariadb-server

Après l'installation de tous les composants, nous devons suivre les étapes 2 à 6.

2 - Configuration de la base de données#

MariaDB, par défaut, est fourni sans mot de passe par défaut pour l'utilisateur root et avec quelques paramètres par défaut qui doivent être correctement configurés.

Installation sécurisée de MariaDB#

mysql_secure_installation

Recommandation minimale

  • Changer le mot de passe de la racine
  • Supprimer les utilisateurs anonymes
  • Interdire la connexion à distance de la racine
  • Supprimer la base de données de test
  • Recharger les tables de privilèges De plus, puisque GLPI est un outil ITSM global qui peut être utilisé par des personnes du monde entier en même temps, vous aimeriez activer la possibilité pour l'utilisateur du service de base de données GLPI de lire les informations de fuseau horaire de votre base de données mysql par défaut.
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql

Créer un utilisateur et une base de données dédiés à GLPI#

mysql -uroot -pmysql
CREATE DATABASE glpi ;
CREATE USER 'glpi'@'localhost' IDENTIFIED BY 'yourstrongpassword' ;
ACCORDER TOUS LES PRIVILEGES SUR glpi.* A 'glpi'@'localhost' ;
GRANT SELECT ON `mysql`.`time_zone_name` TO 'glpi'@'localhost' ;
FLUSH PRIVILEGES ;

Danger

Choisissez un mot de passe sécurisé. C'est l'utilisateur que GLPI utilise pour accéder à la base de données de GLPI et y enregistrer des informations.

3 - Préparation des fichiers pour l'installation de GLPI#

Après avoir installé les composants et créé une première base de données et un utilisateur de service pour recevoir les dossiers de GLPI, vous allez télécharger la dernière version *.tgz de GLPI et la stocker dans le dossier racine principal d'Apache.

Information

Vous pouvez toujours trouver la dernière version stable sur https://glpi-project.org/download

cd /var/www/html
wget https://github.com/glpi-project/glpi/releases/download/10.0.12/glpi-10.0.12.tgz
tar -xvzf glpi-10.0.12.tgz

Hiérarchie du système de fichiers Décomposition standard#

Dans ce scénario, nous stockons les informations de GLPI dans différents dossiers et suivons le FHS où, habituellement.

  • /etc/glpi : pour les fichiers de configuration de GLPI (config_db.php, config_db_slave.php) ;
  • /var/www/html/glpi : pour le code source de GLPI (en lecture seule), servi par Apache ;
  • /var/lib/glpi : pour les fichiers variables de GLPI (session, documents téléchargés, cache, cron, plugins, ...) ;
  • /var/log/glpi : pour les fichiers de log de GLPI.

Pour s'assurer que GLPI trouvera ces fichiers, nous devons indiquer dans deux fichiers différents où se trouvent ces dossiers sur le système :

Le fichier Downstream#

Le fichier downstream.php est chargé d'indiquer à l'application GLPI où se trouve le répertoire GLPI_CONFIG_DIR - le répertoire de configuration de GLPI. Rappelez-vous que nous devons indiquer /etc/glpi comme nouveau dossier pour les fichiers de configuration. GLPI comprend qu'un fichier appelé downstream.php dans le dossier inc contient ces instructions.

  • Créer ce fichier
vim /var/www/html/glpi/inc/downstream.php
  • Déclarez le nouveau dossier du fichier de configuration - vous pouvez insérer ce contenu dans le fichier que vous avez créé
<?php
define('GLPI_CONFIG_DIR', '/etc/glpi/') ;
if (file_exists(GLPI_CONFIG_DIR . '/local_define.php')) {
require_once GLPI_CONFIG_DIR . '/local_define.php' ;
}
  • Maintenant vous pouvez déplacer les dossiers de leur répertoire actuel vers les nouveaux répertoires :
mv /var/www/html/glpi/config /etc/glpi
mv /var/www/html/glpi/files /var/lib/glpi
mv /var/lib/glpi/_log /var/log/glpi

Après avoir déclaré le nouveau GLPI_CONFIG_DIR avec le fichier downstream.php, naviguez vers ce nouveau répertoire /etc/glpi et créez un nouveau fichier appelé local_define.php. Ce fichier est chargé d'indiquer à GLPI où sont stockés les autres répertoires.

Nous allons changer le dossier documents ( files ) et le dossier logs ( files/_log ) vers leur nouveau répertoire.

  • Créer le fichier
vim /etc/glpi/local_define.php
  • Collez ce qui suit dans ce fichier
<?php
define('GLPI_VAR_DIR', '/var/lib/glpi') ;
define('GLPI_DOC_DIR', GLPI_VAR_DIR) ;
define('GLPI_CRON_DIR', GLPI_VAR_DIR . '/_cron') ;
define('GLPI_DUMP_DIR', GLPI_VAR_DIR . '/_dumps') ;
define('GLPI_GRAPH_DIR', GLPI_VAR_DIR . '/_graphs') ;
define('GLPI_LOCK_DIR', GLPI_VAR_DIR . '/_lock') ;
define('GLPI_PICTURE_DIR', GLPI_VAR_DIR . '/_pictures') ;
define('GLPI_PLUGIN_DOC_DIR', GLPI_VAR_DIR . '/_plugins') ;
define('GLPI_RSS_DIR', GLPI_VAR_DIR . '/_rss') ;
define('GLPI_SESSION_DIR', GLPI_VAR_DIR . '/_sessions') ;
define('GLPI_TMP_DIR', GLPI_VAR_DIR . '/_tmp') ;
define('GLPI_UPLOAD_DIR', GLPI_VAR_DIR . '/_uploads') ;
define('GLPI_CACHE_DIR', GLPI_VAR_DIR . '/_cache') ;
define('GLPI_LOG_DIR', '/var/log/glpi') ;

4 - Permissions sur les dossiers et les fichiers#

Voici une suggestion de permissions pour votre installation GLPI

chown root:root /var/www/html/glpi/ -R
chown www-data:www-data /etc/glpi -R
chown www-data:www-data /var/lib/glpi -R
chown www-data:www-data /var/log/glpi -R
chown www-data:www-data /var/www/html/glpi/marketplace -Rf
find /var/www/html/glpi/ -type f -exec chmod 0644 {} \ ;
find /var/www/html/glpi/ -type d -exec chmod 0755 {}
find /etc/glpi -type f -exec chmod 0644 {}
find /etc/glpi -type d -exec chmod 0755 {} \ ;
find /var/lib/glpi -type f -exec chmod 0644 {} \ ;
find /var/lib/glpi -type d -exec chmod 0755 {} \ ;
find /var/log/glpi -type f -exec chmod 0644 {} \ ;
find /var/log/glpi -type d -exec chmod 0755 {} \ ;

5 - Configurer le serveur Web#

Pour que GLPI fonctionne correctement, sans avoir besoin d'URLs complexes, nous vous recommandons d'utiliser un nom DNS pour votre serveur et de créer un Hôte Virtuel pour transférer toutes les requêtes venant à votre instance et recherchant cette entrée DNS précédemment créée vers le chemin correct dans votre configuration Apache. Plus d'informations sur la configuration du serveur web peuvent être trouvées ici

Comment créer un VirtualHost dédié à GLPI ?#

  • Créer un fichier sur /etc/apache2/sites-available/glpi.conf
/etc/apache2/sites-available/glpi.conf

Information

Si nécessaire, vous pouvez changer le nom du fichier pour qu'il corresponde aux standards de votre serveur web.

  • Dans ce fichier, vous ajouterez le contenu suivant :
# Début de la configuration du VirtualHost pour le port 80


<VirtualHost *:80>
    ServerName yourglpi.yourdomain.com
    # Spécifiez le nom d'hôte du serveur
    DocumentRoot /var/www/html/glpi/public
    # Le répertoire où se trouvent les fichiers du site web
    # Début d'une directive Directory pour le répertoire du site web    <Directory /var/www/html/glpi/public>
        Require all granted        # Autorise tous les accès à ce répertoire
        RewriteEngine On
        # Activer le moteur de réécriture Apache
        # S'assurer que les en-têtes d'autorisation sont transmis à PHP.
        # Certaines configurations d'Apache peuvent les filtrer et interrompre l'utilisation de l'API, CalDAV, ...
        RewriteCond %{HTTP:Authorization} ^(.+)$
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        # Redirige toutes les requêtes vers le routeur GLPI, sauf si le fichier existe.
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>
    # Fin de la directive Directory pour /var/www/glpi/public
</VirtualHost>

# Fin de la configuration du VirtualHost pour le port 80

Information

The variables can be changed to your standards, file locations or folder names

  • ServerName if you have a public URL, you can type it here
  • DocumentRoot if you will store GLPI in a different page, change it too.

After the Virtual Host file is created you should disable the default apache site configuration, enable the rewrite module and reload the new vhost file.

a2dissite 000-default.conf # Disable default apache site
a2enmod rewrite # enable the rewrite module
a2ensite glpi.conf # enable the new apache virtual host settings for your glpi instance
systemctl restart apache2

Set up the PHP.ini file#

Information

We recommend to use always the latest supported PHP release for better performance.

For GLPI to work properly it is recommended to change the following parameters on your php.ini file

  • Open the php.ini file
vim /etc/php/8.1/apache2/php.ini

Change the following parameters

  • upload_max_filesize = 20M Maximum size for uploaded files is set to 20 megabytes.
  • post_max_size = 20M Maximum size for POST data (e.g., form submissions) is also set to 20 megabytes.
  • max_execution_time = 60 Maximum execution time for a PHP script is set to 60 seconds.
  • max_input_vars = 5000 Maximum number of input variables (e.g., form fields) a script can accept is 5000.
  • memory_limit = 256M The maximum amount of memory a single PHP script can use is 256 megabytes.
  • session.cookie_httponly = On Sets the "HttpOnly" attribute for session cookies
  • date.timezone = America/Sao_Paulo Fixe le fuseau horaire par défaut de PHP au vôtre.

Pour ajouter votre fuseau horaire, veuillez vous référer à la liste officielle des fuseaux horaires supportés par PHP

6 - Démarrer l'installation Web#

Une fois l'installation et la configuration des dépendances terminées, l'installation peut se poursuivre sur un navigateur web ayant accès à ce même serveur. Ouvrez un navigateur Web et tapez l'enregistrement DNS que vous avez créé pour ce serveur.


Dernière mise à jour: 14/02/2024