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
ServerSignature Off #ServerSignature On
# 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
<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
# 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
# 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
# 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
# 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 [...]
# systemctl restart mysql
# 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;
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
RewriteBase / RewriteEngine On RewriteCond %{REQUEST_URI} !^/public RewriteRule ^(.*)$ public/index.php [QSA,L]