Installer GLPI sur Ubuntu

Pour cette installation, nous avons besoin

  • D'un serveur Linux Ubuntu 22.04 LTS

  • D'un serveur web - Apache

  • D'un interpréteur de code - PHP

  • D'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 installer GLPI

  4. Donner les bonnes permissions de dossier et fichiers sur linux pour installer GLPI

  5. Configuration du serveur web et PHP

  6. Démarrage de l'installation web

1 - Installation des composants

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

apt update && apt upgrade

Pour ce post, nous utilisons Apache 2, MariaDB Server, PHP et ses extensions respectives. Si votre système d'exploitation et vos dépôts sont mis à jour, la dernière version stable des extensions est déjà celle téléchargée.

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 que tous les composants soient installés, 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 défini pour l'utilisateur root et avec quelques paramètres par défaut qui doivent être correctement configurés.


Sécuriser l'Installation MariaDB

mysql_secure_installation

Recommandation minimale

  • Changer le mot de passe root

  • Supprimer les utilisateurs anonymes

  • Interdire la connexion root à distance

  • 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 depuis 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';
GRANT ALL PRIVILEGES ON glpi.* TO 'glpi'@'localhost';
GRANT SELECT ON `mysql`.`time_zone_name` TO 'glpi'@'localhost';
FLUSH PRIVILEGES;

3 - Préparation des fichiers pour Installer 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 GLPI, vous téléchargerez la version *.tgz la plus récente de GLPI et la stockerez dans le dossier racine principal d'apache.

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

Répartition de la Hiérarchie du Système de Fichiers

Dans ce scénario nous stockons les informations GLPI dans différents dossiers et suivant la FHS où, généralement.

  • /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 uploadé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ù ces dossiers sont sur le système :


Le fichier Downstream

Le fichier downstream.php est responsable d'instruire l'application GLPI où le GLPI_CONFIG_DIR - le répertoire de configuration de GLPI - est stocké. Rappelez-vous, nous devons indiquer /etc/glpi comme le nouveau dossier pour les fichiers de configuration. GLPI comprend qu'un fichier appelé downstream.php à l'intérieur du dossier inc a ces instructions.

  • Créer le fichier downstream.php

vim /var/www/html/glpi/inc/downstream.php
  • Déclarer le nouveau dossier de fichier de configuration - vous pouvez insérer ce contenu dans ce 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 downstream.php, naviguez vers ce nouveau répertoire /etc/glpi et créez un nouveau fichier appelé local_define.php. Ce fichier est responsable d'instruire GLPI où les autres répertoires sont stockés.

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

  • Créer le fichier local_define.php

vim /etc/glpi/local_define.php
  • Collez le suivant dans ce fichier

<?php
define('GLPI_VAR_DIR', '/var/lib/glpi');
define('GLPI_DOC_DIR', GLPI_VAR_DIR);
define('GLPI_CACHE_DIR', GLPI_VAR_DIR . '/_cache');
define('GLPI_CRON_DIR', GLPI_VAR_DIR . '/_cron');
define('GLPI_GRAPH_DIR', GLPI_VAR_DIR . '/_graphs');
define('GLPI_LOCAL_I18N_DIR', GLPI_VAR_DIR . '/_locales');
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_INVENTORY_DIR', GLPI_VAR_DIR . '/_inventories');
define('GLPI_THEMES_DIR', GLPI_VAR_DIR . '/_themes');
define('GLPI_LOG_DIR', '/var/log/glpi');

4 - Permissions de Dossier et Fichier

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 en douceur, sans avoir besoin d'URLs complexes, nous recommandons d'utiliser un nom DNS pour votre serveur et de créer un Virtual Host pour rediriger toutes les requêtes venant vers votre instance cherchant cette entrée DNS précédemment créée vers le bon chemin dans votre configuration Apache. Plus d'informations sur la configuration du serveur web peuvent être trouvées ici


How to create a VirtualHost dedicated to GLPI?

  • Create a file on /etc/apache2/sites-available/glpi.conf

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

If you need, you can change the file name to your webserver standards.

  • In this file, you will add the following content:

# Start of the VirtualHost configuration for port 80

<VirtualHost *:80>
    ServerName yourglpi.yourdomain.com
    # Specify the server's hostname
    DocumentRoot /var/www/html/glpi/public
    # The directory where the website's files are located
    # Start of a Directory directive for the website's directory
    <Directory /var/www/html/glpi/public>
        Require all granted
        # Allow all access to this directory
        RewriteEngine On
        # Enable the Apache rewrite engine
        # Ensure authorization headers are passed to PHP.
        # Some Apache configurations may filter them and break usage of API, CalDAV, ...
        RewriteCond %{HTTP:Authorization} ^(.+)$
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        # Redirect all requests to GLPI router, unless the file exists.
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </Directory>
    # End of the Directory directive for /var/www/glpi/public
</VirtualHost>

# End of the VirtualHost configuration for port 80

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

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 Sets the default timezone for PHP to yours.

To add your timezone, please refer to the official list of supported timezones for PHP

6 - Start Web Installation

Once the installation and configuration of dependencies are done, the installation can continue on a web browser with access to this same server. Open a Web browser and type the DNS record you have created for this server.

Last updated

Was this helpful?