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