 
Présentation Apache
PS - V 1.3  — ps 2022/04/15 00:30
 
Le protocole HTTP - Rappels
http : Hyper Text Transfer Protocol : Protocole de transfert des fichiers HTML.
C'est le protocole utilisé pour le WWW. Il utilise une connexion fiable TCP sur le port 80 ou 443 pour la version sécurisée HTTPS..
-  Le Web  statique-  : page  HTML-  au sens propre (fichier  .html- )  
-  Le Web dynamique : pages générées au vol par des programmes (CGI, php, perl, python, ASP, Java, …)  à partir de données fournies par le client ou par le système  
 
Le protocole HTTP - Commandes -1
Le protocole HTTP - Commandes - 2
-  OPTIONS  : Cette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général.  
-  CONNECT  : Cette méthode permet d'utiliser un proxy comme un tunnel de communication.  
-  TRACE : Cette méthode demande au serveur de retourner ce qu'il a reçu, dans le but de tester et effectuer un diagnostic sur la connexion.  
-  PUT : Cette méthode permet de remplacer ou d'ajouter une ressource sur le serveur.  
-  DELETE : Cette méthode permet de supprimer une ressource du serveur.  
 
Le protocole HTTP - Codes de retour
-  1xx: Information – Requête reçue, le traitement suit. 
-  2xx: Succès  
-  3xx: Redirection – Action à suivre 
-  4xx: Erreur client – (404, 403, …) Mauvaise requête ou erreur de syntaxe 
-  5xx: Erreur serveur  
 
Les serveurs Web - Etat des lieux
En décembre 2015, les parts de marché étaient les suivantes (source Netcraft) pour 760 M de serveurs Web:
	
	
		| Serveur | Pourcentage | 
	
	
		| Apache | 37 % | 
	
		| Microsoft IIS | 27 % | 
	
		| Nginx | 17 % | 
	
		| Google Web Server | 2 % | 
 
Apache - Présentation
Il offre toutes les fonctionnalités que l'on peut attendre d'un serveur Web :
-  Rapidité : Apache peut servir 500 connexions par seconde en moyenne ;  
-  très modulaire 
-  Interfaçage avec PHP, Perl, Python et Ruby pour la construction de sites web dynamiques ;  
-  Gestion du protocole HTTP/1.1 et HTTP/2; 
-  Exécution des scripts CGI ;  
-  permet les domaines virtuels sur une même machine (hébergeurs);  
-  assure le fonctionnement en tant que mandataire (serveur Proxy) ;  
-  Sites Web sécurisés par SSL.. 
-  Utilisation de Server-Side Include (SSI) pour construire un site Web cohérent ;  
 
Apache s'installe sur les plate-formes suivantes :
-  tous les Unix (BSD, LInux, Solaris , AIX, HP-UX, Irix, …) 
-  Microsoft Windows XP/7/8/10… etc 
- 
- 
 
Apache - Historique
-  La programmation d'Apache est centralisée par The Apache Group.  
-  premières versions élaborées à partir du NCSA httpd, en 1995 (seule implémentation d'un serveur Web) 
-  nom : de la prononciation anglaise d'Apache, « eupatchi », semblable à celle de « a patchy », c'est à dire « couvert de rustines » 
-  succès rapide, devient dès 1996 le plus employé sur Internet. 
-  à l'heure actuelle, version stable : 2.4 (Debian Wheezy : 2.2.16, Jessie : 2.4) de nombreux serveurs encore en production avec les versions 1.3.xx ou 2.0 . 
 
Apache - Les concurrents
-  Microsoft IIS :  le serveur de base de Microsoft (architecture .net et ASP) 
-  NGINX : rapide, plus en plus utilisé - fonctionnement asynchrone - proxy-inverse 
-  Lighthttpd : empreinte mémoire très légère 
-  caddy pour le développent et les tests … 
 
Apache - Les modules
la commande apt list 'libapache2-mod*'|wc -l donne 78 noms de paquets !
Il permettent :
-  l'authentification,  
-  la gestion de contenu,  
-  les accès aux différents langages (php, mod_perl, python …) 
-  les accès aux annuaires (LDAP, …) 
-  proxy-cache (direct ou inverse) 
-  la gestion des logs dans des bases SQL… 
-  … 
 
Apache - Installation
Sur Debian : aptitude install apache2
 
Apache - Les modules usuels
On installe habituellement les modules suivants :
 
Apache - Lancement/démarrage
systemctl <start|stop|restart|reload|status> apache2
ou bien
apache2ctl start|stop|restart|reload|status
 
Apache - La configuration
Organisation des répertoires
-   DocumentRoot  /repertoire indique le répertoire racine du serveur, où sont stockés les documents par défaut (/var/www/apache2-default sur Debian) 
-   UserDir  repertoire-  permet d'autoriser les utilisateurs disposant d'un compte sur la machine à publier des fichiers. Il suffit qu'ils créent un dossier de ce nom dans leur répertoire personnel pour le rendre accessible par l' URL http://machine/~utilisateur/
 
-   DirectoryIndex fichier1 fichier2… contient le(s) nom(s) de fichier que le serveur doit considérer comme des « pages d'accueil » et qu'il doit afficher lorsqu'un navigateur demande le contenu d'un répertoire .  
 
Configuration des accès
-  Redirect fichier url permet de rediriger les requêtes HTTP.  
-  Alias origine destination permet d'inclure le contenu de répertoires se trouvant en dehors de la racine utilisée par le serveur ou de simplifier leur accès 
-  ErrorDocument numero fichier permet de faire afficher un fichier spécifique pour chaque type d'erreur. Cela permet de personnaliser les fichiers d'erreurs standards. 
 
Apache - La configuration Debian/Ubuntu
-  le fichier de configuration principal est /etc/apache2/apache.conf. contient les paramètres généraux et communs à tous les serveurs et plusieurs “Include” vers les autres fichiers. 
-  le fichier de configuration /etc/apache2/ports.conf contient la liste des ports en écoute. 
-  les fichiers concernant les modules sont dans le répertoire /etc/apache2/mods-available/ 
-  on active/désactive un module avec la commande a2enmod/a2dismod <module> en n'oubliant pas de relancer apache   
 
La configuration Debian/Ubuntu - Les sites
-  de la même manière que pour les modules, on peut activer/désactiver des sites avec a2ensite/a2dissite <site>  
-  un site est caractérisé par un fichier situé dans /etc/apache2/sites-available, lors de son activation , un lien symbolique est créé dans /etc/apache2/sites-enabled   
-  ce type de configuration permet d'activer/désactiver facilement des sites sans changer le fichier de configuration principal 
-  on pourra se baser sur le fichier /etc/apache2/sites-availables/default pour en créer un nouveau 
 
Apache - Les sites virtuels
Apache permet de mettre en oeuvre des sites virtuels permettant d'héberger plusieurs sites sur un même  serveur web y compris avec une seule adresse IP
NameVirtualHost www.domaine1.fr
<VirtualHost *:80>
  ServerAdmin webmestre@domaine1.fr
  DocumentRoot /var/www/domaine1.fr/
  ServerName www.domaine1.fr
  ErrorLog /var/log/apache2/domaine1.fr/error.log
  TransferLog /var/log/apache2/domaine1.fr/access.log
</VirtualHost>
 
Apache - Le contrôle d'accès
Il permet de restreindre l'accès au site à des machines ou à des blocs d'adresse grâce aux directives allow et deny. On pourra utiliser la directiveall, des adresses, des noms de machine ou de domaine et des blocs d'adresse.
<Directory /var/www/mydomain>
Order deny,Allow
Deny from all
Allow from 192.168.0.0
Allow from mondomaine.fr
</Directory>
 
Apache - Authentification
Apache permet d'authentifier les utilisateurs avec plusieurs méthodes :
 
Apache - Authentification - 2
On insère le bloc suivant dans le bloc <directory> … </directory> à protéger :
AuthUserFile /chemin/fichiermdp # fichier de mot de passe
AuthName Zone reservee     # 
AuthType Basic
require valid-user # tout utilisateur reference est autorise
Pour créer ce fichier, on utilise en ligne de commande, l'outil htpasswd -c /chemin/fichiermdp user
 
Apache - La délégation d'administration
Apache permet de déléguer l'administration aux utilisateurs grâce à la directive Allow Override qui autorise la redéfinition de directives locales à un répertoire dans un fichier .htaccess situé dans ce dernier :
-  None : les fichiers .htaccess sont ignorés 
-  All : tout type de redéfinition est autorisé dans le .htaccess 
-  AuthConfig : autorise l’authentification d’utilisateurs  
-  FileInfo : autorise les directives liées aux types de documents  
-  Indexes : autorise l’indexation des répertoires 
-  Limit : autorise les directives de gestion d’accès 
-  ExecCGI : autorise les programmes CGI 
-  FollowSymLinks : autorise le suivi des liens symboliques rencontrés dans le répertoire 
-  Options : autorise les directives se rapportant aux fonctionnalités des répertoires 
 
Apache - La sécurité
La sécurité d'un serveur Apache implique de ne laisser à Apache que les droit minimaux pour effectuer sa tâche.
-  Le répertoire de configuration /etc/apache2 et ses sous-répertoire ne doivent être accessibles qu'en lecture au démon Apache.  
-  le répertoires de base des sites web /var/www/…* doivent être accessibles en lecture au démon Apache mais l'écriture doit être limitée aux seuls répertoires qui en ont besoin (répertoires de configuration, caches, données) 
 
Apache - Les logs
 Pour Debian/Ubuntu, il sont situés dans /var/log/apache2
77.206.107.114 - - [12/Nov/2013:21:48:27 +0100] "GET /doku/lib/exe/indexer.php?id=diiage_premiere_annee&1384289306 HTTP/1.1" 200 486 "http://82.225.173.248/doku
/doku.php?id=diiage_premiere_annee" "Mozilla/5.0 (X11; Linux i686; rv:25.0) Gecko/20100101 Firefox/25.0 Iceweasel/25.0"
77.206.107.114 - - [12/Nov/2013:21:48:39 +0100] "POST /doku/doku.php HTTP/1.1" 200 12922 "http://82.225.173.248/doku/doku.php?id=diiage_premiere_annee" "Mozilla
/5.0 (X11; Linux i686; rv:25.0) Gecko/20100101 Firefox/25.0 Iceweasel/25.0"
[Mon Nov 11 06:08:41 2013] [error] [client 178.74.49.41] Invalid method in request \x80w\x01\x03\x01
[Mon Nov 11 06:08:41 2013] [error] [client 178.74.49.41] File does not exist: /var/www/HNAP1, referer: http://82.225.173.248/
[Mon Nov 11 07:17:19 2013] [error] [client 211.137.235.145] File does not exist: /var/www/manager
http://82.225.173.248/
[Tue Nov 12 08:45:41 2013] [error] [client 10.5.0.46] File does not exist: /var/www/favicon.ico
 
Apache - Statistiques
De nombreux outils existent pour analyser les logs apache et produire des pages de statistiques :
 
Apache - Outils
Apache - les liens