Disclaimer

Ce tutoriel n'a pas pour prétention d'être LE tuto a suivre par excellence, et peut présenter des erreurs et/ou incohérences. Il vous est donc fourni tel quel en insistant sur le fait que vous suivrez ce tuto à vos risques et périls, car il peut engendrer des soucis de compatibilité avec des fichiers que vous auriez déjà utilisé sur un autre serveur Web, notamment au niveau des droits :)

Voici donc ma manière de procéder lors de l'installation d'un serveur LAMP.

Vous noterez que je sépare bien souvent les paquets lors des commandes aptitude install. Ceci a été fait pour une aisance de lecture, les paquets pouvant bien évidemment être installés tous en même temps dans un même bloc.

Pré-requis

Nous partons du postulat que vous avez en possession un serveur Debian Lenny fonctionnant parfaitement avec un compte ayant les droits d'accès de niveau super-utilisateur. Vous avez également la possibilité de vous connecter directement à la machine en console ou bien par le biais de SSH pour exécuter les commandes que nous trouverons ci-dessous.

Compte tenu de la masse de fichiers à modifier et de paquets à installer, passez directement en root.

Nous allons commencer par mettre à jour la liste des paquets ainsi que votre distribution

root@> aptitude update
root@> aptitude dist-upgrade

Nous allons également installer VIM, évolution de VI, un éiteur de texte plutôt utile, ainsi que APG, générateur de mots de passe.

root@> aptitude install vim
root@> aptitude install apg

Voila, tout est prêt pour commencer l'installation !

APACHE 2

Installation

Pour installer Apache2, saisissez les commandes suivantes :

root@> aptitude install apache2-mpm-itk
root@> aptitude install libwww-perl

Nous choisissons la version ITK d'Apache2, notamment pour sa gestion des droits de fichiers et la possibilité d'affecter un utilisateur particulier au processus Apache (plutôt que de tout faire tourner en tant qu'utilisateur www-data). Pour plus d'information : http://mpm-itk.sesse.net

Là votre serveur Web Apache2 est installé. Mais rien n'est encore configuré (sans blagues !)

Configuration

Nous allons donc commencer la configuration

root@> a2enmod rewrite
root@> echo #AddDefaultCharset UTF-8 > /etc/apache2/conf.d/charset

Tapez maintenant la commande :

root@> apg -a 1 -M n -m 4 -x 4

Cette commande vous donnera une suite aléatoire de 4 chiffres à conserver tout au long de ce tutoriel et qui remplacera les XXXX que vous rencontrerez.

Ouvrez le fichier /etc/apache2/apache2.conf, puis cherchez et remplacez ou ajoutez le cas échéant les lignes suivantes :

ServerTokens Prod
ServerAdmin [vous]@[votre_domaine].[extension]

<IfModule mpm_itk_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          250
    MaxRequestsPerChild   0
</IfModule>

Sauvez le fichier, puis éditez le fichier /etc/apache2/envvars et modifiez-le pour qu'il ressemble à :

# envvars - default environment variables for apache2ctl

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid
umask 007

Votre Apache est quasiment configuré et il nous reste la dernière partie qui est la plus importante ; la sécurisation. Pour cela, nous allons installer le module Apache2 mod-security (original hein ?)

Commencez par ajouter le dépôt Debian Backports pour mod-security dans votre fichier /etc/apt/sources.list :

deb http://backports.debian.org/debian-backports squeeze-backports main

Ensuite, on oblige aptitude à utiliser ce dépôt pour installer mod-security en éditant/créant le fichier /etc/apt/preferences:

Package: libapache-mod-security
Pin: release a=lenny-backports
Pin-Priority: 999

On installe maintenant le jeu de clés GPG pour se connecter au dépôt:

root@> aptitude update
root@> aptitude install debian-backports-keyring

Puis on installe le module :

root@> aptitude update
root@> aptitude install libapache-mod-security

Ouvrez/créez le fichier /etc/apache2/conf.d/mod-security2.conf et modifiez/ajoutez les lignes suivantes :

<IfModule mod_security2.c>

# enable mod_security 
SecRuleEngine On
# access to request bodies
SecRequestBodyAccess On
#SecRequestBodyLimit 134217728
#SecRequestBodyInMemoryLimit 131072
# access to response bodies
SecResponseBodyAccess On
#SecResponseBodyLimit 524288
SecResponseBodyMimeType (null) text/html text/plain text/xml
#SecServerSignature "Apache/2.2.0 (Fedora)"

SecUploadDir /tmp
SecUploadKeepFiles Off

# default action
SecDefaultAction "log,auditlog,deny,status:406,phase:2,t:none"

SecAuditEngine RelevantOnly
#SecAuditLogRelevantStatus "^[45]"
# use only one log file
SecAuditLogType Serial
# audit log file
SecAuditLog /var/log/apache2/modsec_audit.log
# what is logged
SecAuditLogParts "ABIFHZ"

#SecArgumentSeparator "&"
SecCookieFormat 0
SecDebugLog /var/log/apache2/modsec_debug.log
SecDebugLogLevel        0

SecDataDir /tmp
SecTmpDir /tmp

#########
# RULES
#########

# File name
SecRule REQUEST_FILENAME "modsecuritytest1"
# Complete URI
SecRule REQUEST_URI "modsecuritytest2"
SecRule REQUEST_FILENAME "(?:n(?:map|et|c)|w(?:guest|sh)|cmd(?:32)?|telnet|rcmd|ftp)\.exe"

</IfModule>

ErrorDocument 406 http://SERVERNAME/406.html

PHP 5

Installation

Pour installer PHP5, tapez la commande suivante :

root@> aptitude install php5 php5-gd php5-imap 
root@> aptitude install php5-ldap php5-mcrypt 
root@> aptitude install php5-mhash php5-mysql 
root@> aptitude install php5-pgsql php-gettext

Simple et efficace...

Configuration

Ouvrez le fichier /etc/php5/apache2/php.ini et modifiez les valeurs suivantes ;

short_open_tags = Off
disable_functions = exec, shell-exec, system, passthru, putenv, popen
expose_php = Off
display_errors = Off
log_errors = On
allow_url_fopen = Off

Voilà, c'est tout pour PHP5. Maintenant, il faut un outil pour voir si votre serveur Web mérite de tourner ;)

Munin

Installation

Comme d'habitude, l'installation se fait avec aptitude

root@> aptitude install munin

Configuration

Pour commencer, éditez le fichier /etc/apache2/mods-available/status.conf pour le remplacer par :

<IfModule mod_status.c>
    <Location /server-status-XXXX> 
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
ExtendedStatus On
</IfModule>

Sauvez votre fichier et ouvrez le fichier /etc/munin/plugin-conf.d/munin-node puis ajoutez en fin de fichier la ligne

[apache_*]
# (XXXX = suite de chiffres générés plus haut)
env.url http://127.0.0.1:%d/server-status-XXXX?auto
# (changer si vous mettez votre apache sur un autre port)
env.port 80

Si vous utilisez un noyau GRSEC (visible avec la commande uname -a) ajoutez en fin du fichier /etc/munin/plugin-conf.d/munin-node

[processes]
user root

Sauvez le fichier, et créez les liens symboliques suivants :

root@> cd /etc/munin/plugins
root@/etc/munin/plugins> ln -s /usr/share/munin/plugins/apache_accesses
root@/etc/munin/plugins> ln -s /usr/share/munin/plugins/apache_processes
root@/etc/munin/plugins> ln -s /usr/share/munin/plugins/apache_volume

Redémarrez enfin Munin et Apache par la commande :

root@> /etc/init.d/munin-node restart
root@> /etc/init.d/apache2 restart

Voila, c'est configuré... Pour tester que cela fonctionne :

root@> sudo -u munin munin-run apache_accesses

Ceci doit vous renvoyer une valeur du type :

accesses80.value 19372070

Si la commande vous renvoie U, vous avez un soucis d'accès à la page serveur-status-XXXX.

Vérifiez alors que vous avez bien ouvert les ports sur votre serveur Web en local. Vérifiez aussi que le répertoire par défaut (ici /var/www) autorise bien tout le monde a lire et exécuter (755 étant sans doute le plus approprié)

Pour terminer, il nous faut une page qui nous permettra d'accéder rapidement à tous nos outils, car on se souviendra sans doute pas des XXXX rajoutés lors de l'installation.

Pour cela, créez/éditez le fichier /var/www/index.html et placez-y le code suivant :

[html]
<html>
<head>
<title>Hosting</title>
</head>
<body>

<h1>Accès rapide</h1>

<ul>
<li><a href="/munin/">Stats système</a></li>
<li><a href="/phpmyadmin-XXXX/">Acces PhpMyAdmin</a></li>
<li><a href="/cgi-XXXX/awstats.pl">Stats web</a></li>
<!-- 
<li><a href="/cgi-XXXX/awstats.pl?config=toto">Stats web du site TOTO.com</a></li>
-->
<li><a href="/info.php">Infos PHP</a></li>
</ul>

<p>
Powered by <a href="http://www.evolix.fr/">Evolix</a>

</body>
</html>

Puis, créez le fichier /var/www/info.php avec le contenu suivant :

  1. <?php
  2. phpinfo();
  3. ?>

Vous noublierez pas de donner les droits de lecture (je conseille les droits 750) sur les fichiers contenus dans /var/www/

Ouvrez un navigateur à l'adresse : http://votre_site_ou_adresse_IP/

Vous devriez avoir une page HTML toute simple, avec des liens qui ne fonctionneront pas pour le moment (nous installerons les services plus tard). Testez le lien "Infos PHP". Si tout se passe bien, vous aurez un grand tableau. C'est que PHP fonctionne :).

AwStats

Installation

Pour installer Awstats, saisissez la commande :

root@> aptitude install awstats

Toujours aussi dur hein ? Mais là, on va bien moins rire avec la configuration

Configuration

Pour commencer, on va déplacer la configuration d'origine dans un autre fichier afin de pouvoir créer de multiples configurations qui se baseront sur la configuration d'origine.

root@> cd /etc/awstats
root@/etc/awstats> mv awstats.conf awstats.conf.local

Ensuite, créez le fichier /etc/awstats/awstats.conf et placez-y le contenu suivant :

Include "/etc/awstats/awstats.conf.local"
LogFile="/var/log/apache2/access.log"
SiteDomain="votre.site.web.SANS.le.HTTP"
DirData="/var/lib/awstats/"
ShowHostsStats=0
ShowOriginStats=0
ShowPagesStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowHTTPErrorsStats=0

Ce fichier de configuration représentera les statistiques de votre serveur GLOBAL. Nous verrons plus tard comment créer des fichiers de configuration par sous-domaine.

Une fois fait, nous allons quelque peu modifier le fichier /etc/awstats/awstats.conf.local :

LogFormat=1
AllowFullYearView=3
WarningMessages=1
ErrorMessages="An error occured. Contact your Administrator"
DNSLookup=0
#Include "/etc/awstats/awstats.conf.local"

Bien. Seul soucis que j'ai rencontré lors de toutes mes installations, Awstats ne configure pas lui-même Apache2 pour lui faire comprendre qu'il a des images. Créez le fichier /etc/apache2/conf.d/awstats-icon.conf et mettez-y le contenu suivant :

Alias /awstats-icon/ /usr/share/awstats/icon/
<Directory /usr/share/awstats/icon/>
Order deny,allow
Allow from all
</Directory>

Awstats ne fonctionne pas tout seul, il s'agit d'un simple script Perl. Pour le lancer, vous avez besoin de dire a Apache que le CGI est activé :

root@> cd /etc/apache2/mods-enabled
root@> ln -s /etc/apache2/mods-available/cgi.load cgi.load

Enfin, pour lancer régulièrement AwStats, éditez la crontab /etc/cron.d/awstats et placez-y la ligne suivante :

0 * * * * root umask 033; [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.conf -a -r /var/log/apache2/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=awstats -update >/dev/null

Pour les personnes qui ne sont pas habituées avec les cron, je vous conseille de faire un petit tour sur cette page (notamment pour la compréhension de 10 * * * *).

Sauvez la contab (comme un fichier avec VI). Votre AwStats se lancera aux moments que vous aurez défini (dans mon exemples toutes les heures). Seulement, il n'y a rien pour visualiser les résultats. Il va donc falloir ajouter un alias dans votre configuration d'Apache2 (/etc/apache2/sites-avaiable/default) :

# CGI
ScriptAlias /cgi-XXXX/ /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
        Options ExecCGI -MultiViews
        AllowOverride None

        AuthName "Restricted"
        AuthUserFile /var/www/.htpasswdXXXX
        AuthGroupFile /dev/null
        AuthType Basic
        require valid-user

        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
        Allow from [votre_IP]
        Satisfy any
</Directory>

Vous voyez que pour vous conecter, on demande une authentification par mot de passe (avec le fichier .htpasswdXXXX). Il vous faudra le créer en saisissant la commande :

root@> htpasswd -c /var/www/.htpasswdXXXX [utilisateur]

Là, le script vous demande de taper et de confirmer un mot de passe, qui sera crypté dans le fichier.

Maintenant, redémarrez Apache2 :

root@> /etc/init.d/apache2 restart

Si aucune erreur n'apparaît, c'est que vous êtes très bien parti pour faire afficher votre première page !

Rendez-vous sur la page de liens mise en place lors de l'installation d'Apache et cliquez sur le lien "Stats web" et croisez les doigts.

Logiquement, on doit vous demander un login et un mot de passe (ceux saisis dans la commande "htpasswd". Renseignez-les et appréciez le spectacle (ou pas :-D).

Vous pouvez faire des stats séparées site par site. Imaginons que vous ayez un site toto.com (dont les fichiers seront dans /home/toto/www/, les logs dans /home/toto/log/ et les données AwStats stockées dans /home/toto/awstats/). Créez le fichier /etc/awstats/awstats.toto.conf qui sera :

Include "/etc/awstats/awstats.conf.local"
LogFile="/home/toto/log/access.log"
SiteDomain="www.toto.com"
DirData="/home/toto/awstats"

Une fois fait, vous devrez ajouter dans la crontab :

5 * * * * root umask 033; [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.toto.conf -a -r /home/toto/log/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=toto -update >/dev/null

Bien, si vous n'avez pas d'erreur, continuons par l'application de MySQL pour gérer une base de données.

L'add-on GeoIP

Cet aadd-on permet de voir de quel pays/ville les visiteurs proviennent. Il permet notamment de s'affranchir du paramètre DNSLookup qui est extrêmement gourmand en ressources (de part ses multiples requêtes Reverse DNS)

Voici comment procéder:

root@> aptitude install libgeo-ip-perl geoip-bin libgeoip1

Une fois fait, nous allons créer un script qui nous permettra de télécharger et/ou mettre à jour les bases de données de GeoIP, car aucun processus automatique n'est prévu.

J'ai pour ma part choisi de le mettre à jour toutes les semaines. Au cours de mes lectures sur le net, il est souvent préconisé de le mettre à jour tous les mois.

Voici donc le script en question :

  1. #!/bin/bash
  2.  
  3. cd /usr/share/GeoIP
  4.  
  5. # GeoIP API
  6. wget --quiet http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
  7. if [ $? -eq 0 ]
  8. then
  9. rm GeoIP.dat
  10. gunzip GeoIP.dat.gz
  11. else
  12. rm GeoIP.dat.gz
  13. fi
  14.  
  15. # GeoIP Cities
  16. wget --quiet http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
  17. if [ $? -eq 0 ]
  18. then
  19. rm GeoLiteCity.dat
  20. gunzip GeoLiteCity.dat.gz
  21. else
  22. rm GeoLiteCity.dat.gz
  23. fi
  24.  
  25. # GeoIP Organisations
  26. wget --quiet http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
  27. if [ $? -eq 0 ]
  28. then
  29. rm GeoIPASNum.dat
  30. gunzip GeoIPASNum.dat.gz
  31. else
  32. rm GeoIPASNum.dat.gz
  33. fi

C'est tout bête, mais placé dans /etc/cron.weekly sous le nom de votre choix (chez moi updateGeoIP), il fera le boulot tout seul. On va le lancer à la main une fois pour installer le tout (bah oui, rien n'est présent!) :

root@> chmod +x /etc/cron.weekly/updateGeoIP
root@> /etc/cron.weekly/updateGeoIP

Le script ne doit renvoyer aucun output... Si tout se passe bien, vous devriez avoir trois fichiers dans /usr/share/GeoIP :

  • GeoIPASNum.dat
  • GeoIP.dat
  • GeoLiteCity.dat

Une fois fait, ouvrez le fichier /etc/awstats/awstats.conf.local et localisez la ligne commentée :

  1. #LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"

Remplacez-la par :

  1. LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"
  2. LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoLiteCity.dat"
  3. LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoIPASNum.dat"

Vous pourrez commenter la troisième ligne si celle-ci ne vous interresse pas (savoir a qui appartient la plage IP en terme de provider).

AwStats sur des sites à très fortes visites

Il se peut que vous ayez des soucis quand vous essayez de faire tourner AwStats avec d'importants volumes de log (on parle la de millions de lignes de logs quotidiens).

Si comme moi (nan, pas sur ce blog...), aux alentours du 15 du mois, AwStats prend de plus en plus de temps et de RAM, et que vous souhaitez rendre AwStats plus rapide, vous pouvez, au sacrifice des unique IP, accélérer grandement la vitesse d'exécution de votre AwStats en lancant juste avant le parsing des logs ce script :

  1. #!/bin/bash
  2.  
  3. #Logs de la veille
  4. MaDate=`awk 'BEGIN{ printf("%s\n", strftime("%m%Y", systime()-86400)) }'`
  5.  
  6. #Logs du jour
  7. #MaDate=`date +%m%Y`
  8.  
  9. for fichier in `ls /var/lib/awstats/awstats${MaDate}.*.txt`
  10. do
  11. sed -i '/^BEGIN_VISITOR/,/^END_VISITOR/d' $fichier
  12. done

Il ne vous reste plus qu'a décommenter la ligne qui vous convient pour la variable MaDate et le tour est joué !

Merci a jfroot pour le conseil !

Et voilà !

MySQL 5 & PHPMyAdmin

Installation

Comme d'habitude, il est très difficile d'installer ce genre d'application.... Cependant, lors des différentes demandes de mot de passe (de mémoire 5 ou 6 fois) pour le compte "root", n'en saisissez pas !!! En effet, le compte root sera a terme supprimé dans notre tuto, il est donc inutile de le sécuriser.

root@> aptitude install mysql-server phpmyadmin mytop

Une fois fait, nous allons tout de suite rajouter une petite couche sécurité.

Configuration

Commencez par taper la commande :

root@> apg -p [uneSeriEdeCaRacTèResComMeVousVoul€z]

Cette commande vous enverra une liste de 6 mots de passe différents, choisissez-en un que nous identifierons par MDP dans le reste du tutoriel.

Effectuez maintenant les opérations suivantes :

root@> mysql
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO mysqladmin@localhost IDENTIFIED BY 'MDP' WITH GRANT OPTION;
mysql> delete from user where user='root';
mysql> flush privileges;
mysql> \q

Comme vous venez de le voir, vous avez supprimé les droits de l'utilisateur root et ajouté un super-utilisateur nommé mysqladmin avec un mot de passe assez hardu.

Comme je suis persuadé que vous aurez un mal fou à le retenir, créez le fichier /root/.my.cnf (attention au POINT avant my) et placez-y les lignes suivantes :

[client]
user=mysqladmin
password=MDP

Créez également un fichier /root/.mytop dans lequel vous saisirez les commandes suivantes :

user = mysqladmin
pass = MDP
db = mysql

Cela vous permettra de vous connecter à MySQL et a MyTop sans taper votre mot de passe, mais uniquement en console en ayant effectué un sudo su.

Une fois fait, ajouter l'accès à PhpMyAdmin. Editez le fichier /etc/apache2/sites-avaiable/default et ajoutez le contenu suivant :

Alias /phpmyadmin-XXXX /usr/share/phpmyadmin/

Sauvez le fichier et rechargez Apache2 :

root@> /etc/init.d/apache2 force-reload

Et voila! En vous rendant à l'adresse : http://www.domaine.tld/phpmyadmin-XXXX vous pourrez administrer votre base de données en vous identifiant avec l'utilisateur mysqladmin et le mot de passe MDP.

Passons ensuite au dernier élément qui vous permettra de mettre en place votre premier site : ProFTPd

Squid

Installation

Toujours pareil :

root@> aptitude install squid

Configuration

Pour la configuration, voici le fichier squid.conf que je conseille :

# ports
http_port 8888 transparent
icp_port 0

# ACL
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl INTERNE src ADRESSE_IP/32 127.0.0.0/8
acl Safe_ports port 80          # http
acl SSL_ports port 443 563

acl WHITELIST url_regex "/etc/squid/whitelist.conf"

http_access deny !WHITELIST
http_access allow INTERNE
http_access deny all

access_log /var/log/squid/access.log squid

Il vous suffit de remplacer ADRESSE_IP par l'adresse IP de votre serveur.

Créez ensuite un fichier /etc/squid/whitelist.conf et rajoutez les adresses web externes auxquelles votre serveur aura le droit de se connecter (généralement des adresses de webservices ou de dépôts de paquets). Exemples :

http://.*.facebook.com/.*
http://.*.twitter.com/.*
http://rss.laposte.net/.*

Et redémarrer Squid après avoir modifié la whitelist

root@> /etc/init.d/squid restart

ProFTPd

Installation

Je suis sur que vous avez déjà deviné que cela allait se passer de la sorte :

root@> aptitude install proftpd

Si si, j'vous jure.

A la question fatidique "inetd ou standalone?" répondez "standalone", Si vous ne savez pas pourquoi... Moi non plus 8-) Non pour faire bref, le fait de choisir "standalone" permet une plus grande souplesse pour le redémarrage du service.

Configuration

Ouvrez le fichier de configuration et cherchez les lignes suivantes (ou ajoutez-les le cas échéant):

ServerName  "[Votre Nom/Site] FTP Server"
ServerType  standalone

PassivePorts 60000 61000

UseReverseDNS off
IdentLookups off

#restrictions en kB/s
#up
#TransferRate APPE,STOR 100
#down
#TransferRate RETR 100


<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>

DefaultRoot                  ~
RequireValidShell            on
UseFtpUsers                  off
ServerIdent                  on       "FTP Server Ready"
AccessGrantMsg                        "Hey, bienvenue %u sur le serveur FTP de [Votre Nom/Site] !"
Umask                         027  027

Une fois fait, relancez ProFTPd :

root@> /etc/init.d/proftpd restart

Et voila, vous pouvez vous connecter sur votre FTP à l'adresse : ftp://www.domaine.tld:21/

Vous disposez maintenant de votre serveur Web installé et configuré pour un site dont les fichiers seront a déposer dans /var/www/.

Dans un futur très proche, je rédigerai un tutoriel sur la manière de rajouter un site pouvant être totalement autonome sur la même plateforme que nous venons d'installer.

Si vous avez des remarques, questions, corrections à apporter au sujet, n'hésitez pas à me contacter !

Bonne journée !