Press "Enter" to skip to content

Linux – Debian 12 & GLPI

Last updated on 11/11/2023

DEBIAN 12 – GLPI 10.0.9

 

Présentation

Ce tutoriel est destiné aux utilisateurs Linux pour les sytèmes suivants : Debian 12. Il sera expliqué ici, comment configurer Apache2, créer et configurer une base de données afin de pouvoir installer et faire fonctionner GLPI version 10 avec liaison LDAP Windows (Active Directory).


disclaimer

Avant de poursuivre, il est nécessaire de prendre connaissance des indications ci-dessous:
Il est recommandé d’effectuer tous les tutoriels proposés par BlackHat-Out sur des serveurs de tests. Même si ces tutoriels sont mis en pratiques sur plusieurs OS, nous avons rencontrés différentes difficultés selon les systèmes. Toutes les manipulations proposées se feront en tant qu’administrateur et nous ne pourrons garantir ou être tenus responsables d’une quelconque manipulation rendant le système inopérant.


Prérequis

version & validation

Debian 12 : Tests sur ce système validé le…. Dans l’environnement suivant :
Raspbian : Non testé
Version PHP : 8.2

NB : Facultatif, suivre le Tutoriel « préparation de Debian 12 » pour les manipulations de ce tutoriel en SSH.

Status Tutoriel : En cours d’édition & de tests.


Niveau tutoriel

Habitué de Linux & des serveurs web.

Niveau requis

Savoir lire
Connaître le concept de DNS (l’histoire avec les domaines)
Connaître le concept de VirtualHost


Durée d'exécution

Lammers : ??h/??h
Novices : ?h/?h
Habitués de Linux: ??/?? minutes
Connais par cœur les configurations : ??/?? minutes


Rappel

Sources liste utilisées :

deb http://deb.debian.org/debian bookworm main contrib non-free
deb-src http://deb.debian.org/debian bookworm main contrib non-free

deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free
deb-src http://deb.debian.org/debian-security/ bookworm-security main contrib non-free

deb http://deb.debian.org/debian bookworm-updates main contrib non-free
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free

Préparation du serveur web

# apt install apache2 -y
# mkdir /var/www/[nom_du_virtualhost_voulu]
# chown -R www-data:www-data /var/www/[nom_du_virtualhost_voulu]
# ls -lath /var/www/
# mkdir /var/log/apache2/glpi
# mkdir /etc/ssl/glpi
# cd /etc/apache2/sites-available/
# a2dissite 000-default.conf
# a2enmod ssl
# a2enmod headers
# a2enmod rewrite

Modification du fichier de sécurité d’apache

# nano /etc/apache2/conf-available/security.conf 
Une fois dans le fichier de sécurité, on cherche à passer l’option « ServerSignature » en off.
ServerSignature Off 
#ServerSignature On
On redémarre apache pour l’application des nouveaux paramètres.
# systemctl restart apache2 

Configuration du VirtualHost

# nano /etc/apache2/sites-available/nom_virtualhost.conf
<VirtualHost *:80>

 #################
 # ACCES AU SITE #
 #################

 ServerName [NOM SERVEUR ou FQDN] (ex: localhost)
 ServerAlias [NOM COURT]
 ServerAdmin [xxxx@xxxx.xx]
 DocumentRoot [/var/www/glpi]

 #RewriteEngine On
 #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

 ##############
 # CONF BASIC #
 ##############

 #--GESTION DES DROITS--#
 <Directory /var/www/glpi/public>
    Options -Indexes
    Require all granted

    # Redirect all requests to GLPI router, unless file exists.
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
 </Directory>

 #--GESTION ERREURS--#
 ErrorDocument 404 /erreur.html

 #--LOGS--# 
 ErrorLog /var/log/apache2/glpi/errors.log
 LogLevel warn
 CustomLog /var/log/apache2/glpi/acces.log combined

</VirtualHost>

Activation du VirtualHost

#a2ensite glpi.conf

HTTPS (CertBot & AutoSigné)

Méthode Certbot :

# apt install snapd
# snap install core; sudo snap refresh core
# snap install --classic certbot
# ln -s /snap/bin/certbot /usr/bin/certbot
# certbot --apache

 

Méthode Auto-Signé :

# apt install openssl
# openssl genrsa -out /etc/ssl/glpi/ca_glpi.key [4096]
# openssl req -new -x509 -key /etc/ssl/glpi/ca_glpi.key -subj "/CN=[Nom afficher sur le certificat]" -out /etc/ssl/glpi/ca_glpi.pem
# nano /etc/apache2/sites-available/nom_virtualhost.conf
Modification du VirtualHost en conséquence:
<VirtualHost *:80>

 #################
 # ACCES AU SITE #
 #################

 ServerName localhost
 ServerAlias glpi
 ServerAdmin contact@blackhat-out.fr
 DocumentRoot /var/www/glpi/public

 RewriteEngine On
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

 ##############
 # CONF BASIC #
 ##############

 #--GESTION DES DROITS--#
 <Directory /var/www/glpi/public>
    Options -Indexes
    Require all granted
 </Directory>

 #--GESTION ERREURS--#
 ErrorDocument 404 /erreur.html

 #--LOGS--#
 ErrorLog /var/log/apache2/glpi/errors.log
 LogLevel warn
 CustomLog /var/log/apache2/glpi/acces.log combined

</VirtualHost>
<VirtualHost *:443>

 #################
 # ACCES AU SITE #
 #################

 ServerName localhost
 ServerAlias glpi
 ServerAdmin contact@blackhat-out.fr
 DocumentRoot /var/www/glpi/public

 RewriteEngine On
 # Redirect all requests to GLPI router, unless file exists.
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php [QSA,L]

 ##############
 # CONF BASIC #
 ##############

 #--GESTION DES DROITS--#
 <Directory /var/www/glpi/public/>
 Options -Indexes
 Require all granted
 </Directory>

 #--GESTION ERREURS--#
 ErrorDocument 404 /erreur.html

 #--LOGS--#
 ErrorLog /var/log/apache2/glpi/errors.log
 LogLevel warn
 CustomLog /var/log/apache2/glpi/acces.log combined


 ##############
 # CONF HTTPS #
 ##############

 SSLEngine on
 SSLCertificateFile /etc/ssl/glpi/glpi.pem
 SSLCertificateKeyFile /etc/ssl/glpi/glpi.key

 <IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
 </IfModule>

</VirtualHost>

Préparation PHP

Installation des dépendances :
# apt -y install lsb-release apt-transport-https ca-certificates
# wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
# echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php8.list
# apt update && apt upgrade -y
# apt install php8.2-dom php8.2-fileinfo filter libxml2 php-json php8.2-simplexml php8.2-xmlreader php8.2-xmlwriter php8.2-curl php8.2-gd php8.2-intl php8.2-mysql php8.2-bz2 php8.2-phar php8.2-zip php8.2-exif php8.2-ldap php8.2-opcache php8.2-mbstring -y
Modification du fichier de configuration de php :
# nano /etc/php/8.2/apache2/php.ini
[...] 
memory_limit = 512M 
upload_max_filesize = 2G 
max_execution_time = 360 
post_max_size = 200M 
output_buffering = Off 
date.timezone = Europe/Paris

; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
; https://wiki.php.net/rfc/strict_sessions
session.use_strict_mode = 1
; http://php.net/session.cookie-httponly
session.cookie_httponly = 1
; http://php.net/session.cookie-secure
session.cookie_secure = 1
[...]

Préparation SQL

Installation des dépendances:
# apt-get install mariadb-server apt-transport-https -y
# apt install gnupg2 && wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
# echo "deb https://packages.sury.org/php/ bookworm main" | tee /etc/apt/sources.list.d/ondrej.list
# apt update && apt upgrade -y 
# mysql_secure_installation
Modification du fichier de configuration my.cnf :
# nano /etc/mysql/my.cnf
[...]

[server]
skip-name-resolve
innodb_buffer_pool_size = 1G
innodb_io_capacity=4000
innodb_buffer_pool_instances = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 32M
innodb_max_dirty_pages_pct = 90
query_cache_type = 1
query_cache_limit = 2M
query_cache_min_res_unit = 2k
query_cache_size = 64M
tmp_table_size= 64M
max_heap_table_size= 64M
slow-query-log = 1
slow-query-log-file = /var/log/mysql/slow.log
long_query_time = 1

[client-server]
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
transaction_isolation = READ-COMMITTED
binlog_format = ROW
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=1

[...]
On redémarre le service mysql :
# systemctl restart mysql
On créer l’utilisateur pour l’administration de la base de données :
# mysql -u root -p
         > CREATE USER '[userdb]'@'localhost' IDENTIFIED BY '[PASSWORD]';
         > CREATE DATABASE IF NOT EXISTS [dbname] CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
         > GRANT ALL PRIVILEGES on [dbname.*] to '[userdb]'@'localhost';
         > GRANT SELECT ON `mysql`.`time_zone_name` TO '[userdb]'@'localhost';
         > FLUSH privileges;
         > exit;
Et enfin…

Installation de GLPI

# cd /var/www/
# wget https://github.com/glpi-project/glpi/releases/download/10.0.9/glpi-10.0.9.tgz
# tar xvzf glpi-10.0.9.tgz
# chown -R www-data:www-data glpi/
# cd glpi/
# nano .htaccess
Configuration du fichier .htaccess
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public
RewriteRule ^(.*)$ public/index.php [QSA,L]
Pour finaliser, se rendre sur  » https://IP_ou_FQDN_du_serveur/ « 
Laisser un commentaire

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