DEBIA
N
APACH
E WEB
SERVE
R
Table des matières
Tapez le niveau du chapitre (niveau 1) 1
Tapez le niveau du chapitre (niveau 2) 2
Tapez le titre du chapitre (niveau 3) 3
Tapez le niveau du chapitre (niveau 1) 4
Tapez le niveau du chapitre (niveau 2) 5
Tapez le titre du chapitre (niveau 3) 6
Sommaire :
Introduction
A- Installation de apache2
1. Mettre à jour la machine
2. Renommez la machine apache2
3. Installation du paquet apache2
4. Test de l’installation
1
5. Comprendre l’arborescence des fichier d’apache2 Localiser les
fichiers
(1)Explorer le fichier apache2.conf
(2) Le contexte directory
6. Les mods d'Apache2 et leur gestion le processus
a- Les trois mods apache2 mpm_event, mpm_worker et mpm_perfork
b- Activation et désactivation manuelle des mods/--
i- Activation et désactivation manuelle des mod mpm
ii- Activation et désactivation de mods mpm avec script
iii- Détermination du PID des processus
B- Création d’hôte virtuelle
1. Création du répertoire de base et de la page d’accueil
index.html
2. Création d’hôte virtuelle par nom
3. Création d’hôte virtuelle par adresse IP
4. Changement de ports
5. Utilisation du PHP dans le site
a- Implémentation du mod-PHP
b- b- Implémentation du FPM PHP
c- C- Sécurisation d’apache2
1. Sécurisation apache en masquant sa version et l’os utilisé.
2. Sécurisation par SSL
3. Sécurisation des répertoires
2
1. Utilisation des Virtuals host
2. Utilisation du fichier .htaccess
Introduction :
Apache est le nom de la fondation qui a développé́ le serveur Apache
httpd, elle a développé en premier le serveur web httpd mais aussi
d’autres projets à la suite.
Apache existe depuis plus de 20 ans c’est le serveur web le plus
utilisé au monde. Son principal concurrent est un autre logiciel libre
appelé Nginx .
Les parts de marché sont données par le site suivant :
https://fr.hostadvice.co:m/marketshare/
Le site officiel de apache2 est https://httpd.apache.org/
A- Installation de apache2
1. Mise à jour de la machine
2. Attribuer un nom à la machine
3. Installation du paquet apache2
3
4. Test de la connexion apache2
Afin de tester la connexion, sur votre machine physique tapez
l’adresse IP de votre machine apache dans un navigateur,
192.168.241.128 dans mon cas.
La page ci-dessous devra apparaitre.
4
5. L’arborescence des fichiers apache2
Nous allons utiliser la commande ci-dessous afin de voir ses
différents répertoires.
/usr/sbin/apache2 il s'agit ici de l'exécutable dans le répertoire sbin
nous avons des binaires système comme son nom l'indique
5
/usr/ lib/ apache2 lib pour bibliothèque
/etc/ apache2, est le répertoire où se trouve les fichiers de
configuration d’apache2 /usr/ share/apache2, des fichiers partagés
/usr/share/man/man8/apache2.8.gz la documentation, obtenu avec la
commande man
Le fichier apache2.conf nous donne une image de notre
arborescence et de la configuration d’apache2.
On affiche le contenu de notre répertoire
6- Les processus d'Apache et leur gestions le processus
6
a- Les trois mods apache2 mpm_event, mpm_worker et mpm_perfork
On utilise la commande ps aux | grep apach[e] pour afficher les
processus d’apache2 a (all user) pour afficher les processus de tout
le monde
u (user) pour montrer le propriétaire du processus
x montrer les processus qui ne sont pas attaché à un terminal
Les trois modules MPM (event, worker, prefork) déterminent
comment Apache gère les connexions. Il ne peut y avoir qu’un seul
module MPM actif à la fois.
Le modules MPM “event” est démarré par défaut à l’installation
d’apache2.
En activant soit le module event ou worker on remarque qu’il y’a 3
processus :
• Le premier processus qui tourne avec le compte root :
S = (interruptible sleep) le processus est en exécution et en attente
d’un événement
Il y a plusieurs threads à l'intérieur de ce processus psmaître
s = indique que le processus est master
• Les deux autres processus sont dans le même état mais avec un
statut qui est en l = (multi-threaded) ils tournent avec un compte
www-data pour des raisons de sécurité, le rôle de ces deux
processus répondra aux demandes des clients
7
En lançant le programme plusieurs fois, des processus enfant vont
répondre aux appels http des clients en même temps chaque
processus a plusieurs threads vont gérer les appels des clients
Apache va charger les nouveaux processus de façon à répondre à
une demande qui augmente en même temps chaque processus aura
plusieurs threads afin de répondre aux demandes client.
Si on a un seul processus comportant beaucoup de threads ça
peut être mal géré.
Si on a des processus qui sont single-threaded on doit en ouvrir
d’autres ce qui peut
causer une consommation excessive de mémoire Donc apache
utilise les deux méthodes, il s'agit d'une version hybride qui essaie
de gérer au mieux une demande croissante ou fluctuante de pages
web.
Au regard ce qui a été dit au-dessus apache peut utiliser 3 mods :
- Worker : Ce module permet à chaque processus fils
d’Apache de gérer plusieurs
connexions dans des “threads”. Ce mode est performant mais
avec des applications web qui ne gèrent pas bien ces threads
il peut se montrer moins efficace.
- Event : c’est le module le plus récent et le mieux optimisé.
C’est une amélioration de mpm_worker qui permet de mieux
gérer les connexions keepalive (voir apache.conf) qui
permettent de faire plusieurs requêtes HTTP à travers une
même connexion.
8
L’avantage de mpm_events la version améliorée de
mpm_worker c'est sa gestion du keepalive.
Un thread spécifique à la gestion du keepalive va permettre de
diminuer le nombre de threads qui vont rester en keepalive
c'est un des avantages de mpm_events qui permet une
optimisation en termes
D ’occupation de process D’occupation mémoire
- Prefork : Ce module crée un processus fils pour chaque nouvelle
connexion, il est fiable mais il est gourmand en mémoire donc en
termes de performance ce n’est pas l’Ideal.
Pour vérifier quel mode est chargé pour gérer le connexion clients
on va dans /etc/apache2/mods-enabled, on constate que le mod
mpm_event est démarrée par défaut
Pour arrêter un mode et en démarrer un autre on utilise les scripts
créer pour ce but ou manuellement en utilisant les liens
symboliques, dans cette démonstration je vais arrêter le module
mpm_event et démarrer le module mpm_perfork manuellement après
j’utilise les scripts crées à cet effet ce qui peut s’avérer plus simple
et pratique.
9
b- Activation et désactivation des mods mpm
i- Activation et désactivation manuelle des mod mpm
- Je supprime le module mpm_event
- Je redémarre le service apache2 et je vérifie que les
processus sont arrêter
Je crée les liens symboliques, je redémarre le service apache2
et je vérifie que les processus sont démarrés
ii- Activation et désactivation de mods mpm avec script
Maintenenant on va faire l’inverse en desactivant prefork et en
activant event mais en utilisant les scriptes, on remerquera que
c’est plus facile et pratique
10
iii- Détermination du pid (Process ID) des processus
Pour déterminer le pid des processus apache2 on peut utiliser les
trois (3) méthodes
B- Création du site
11
Un serveur peut héberger plusieurs sites web, on peut utiliser deux
méthodes pour atteindre ce but en utilisant les Virtuals hosts ou en
affectant une adresse IP par site web
1. Création du répertoire de base et de la page d’accueil
index.html
Je crée un répertoire Sitka (nom pris au hasard, vous pourrez bien
evidemment mettre ce que vous voulez), qui va héberger mes pages
web, en même temps je copie le fichier index.html du répertoire
html dans le répertoire Sitka.
Je modifie le titre de la page sur le navigateur afin que cela soit
Sitka Bamako.
Dans le terminal, j’ai utilisé l’éditeur nano afin de modifier le code
html de la page pour effectuer ce test.
2- Création de site par nom de domaine
1. a- Copier le fichier conf du site par défaut d’apache 000-
default.conf en sitka.conf
12
13