Service HTTP Apache
1. Présentation
Client
Serveur
(navigateur)
Apache
HTTP
IE httpd httpd.conf
http://www.suptem.ma Réseau
index.html img.gif
TCP/IP suptem.ma
Service HTTP Apache
1. Présentation
Apache 2 est le serveur HTTP le plus utilisé
actuellement sur les serveurs Web. Sa configuration
et sa flexibilité en font un serveur incontournable.
Lorsqu’un serveur Apache reçoit des requêtes, il
peut les redistribuer à des processus fils.
La configuration permet de lancer des processus de
manière anticipée et d’adapter dynamiquement ce
nombre en fonction de la charge.
Service HTTP Apache
1. Présentation
Apache est modulaire. Chaque module permet
d’ajouter des fonctionnalités au serveur.
Le module le plus connu est probablement celui gérant
le langage PHP, « mod_php ».
Chaque module s’ajoute via les fichiers de
configuration, et il n’y a même pas besoin de relancer
le serveur Apache.
Apache peut gérer plusieurs sites Web en même temps,
ayant chacun leur nom, à l’aide des hôtes virtuels.
Service HTTP Apache
2. Arrêt/Relance
Le service s’appelle httpd.
# service httpd start
# /etc/init.d/httpd start
Service HTTP Apache
3. Configuration
La configuration principale est stockée dans
/etc/httpd/conf/httpd.conf.
Elle contrôle les paramètres généraux du serveur Web, les
hôtes virtuels et les accès.
La configuration des différents modules est placée dans
/etc/httpd/conf.d.
Les modules sont présents dans /etc/httpd/modules/.
Par défaut la racine du serveur, celle où sont placées les pages
du site, est dans /var/www. Cette position dépend de la
directive DocumentRoot dans les fichiers de configuration.
Service HTTP Apache
4. Directives générales
Voici quelques directives du fichier httpd.conf les
plus importantes.
ServerRoot : répertoire contenant les fichiers du
serveur (configuration et modules). C’est généralement
/etc/httpd.
Listen : ports sur lesquels le serveur Apache écoute.
Par défaut 80 (443 en https). On peut en spécifier
plusieurs avec plusieurs directives Listen. Si le serveur
dispose de plusieurs adresses IP, on peut rajouter l’IP
au port associé : Listen 192.168.1.3:80.
Service HTTP Apache
4. Directives générales
User : utilisateur des processus Apache. On n’utilise
jamais root, mais un compte créé pour l’occasion,
généralement Apache.
Group : idem mais pour le groupe.
ServerAdmin : adresse de courrier électronique de
l’administrateur.
ServerName : nom d’hôte (et port) du serveur. Il ne
correspond pas forcément au nom d’hôte de la
machine. Par contre il doit être valide. ServerName
www.mondomaine.org
Service HTTP Apache
4. Directives générales
UseCanonicalName : si elle vaut on, Apache va
répondre en utilisant les informations de ServerName
et Port, et pas les informations envoyées par le client.
Par exemple, un http//192.168.1.3 se transforme en
http://www.mondomaine.org.
UserDir : nom d’un sous répertoire ou chaque
utilisateur peut placer ses fichiers HTML personnels.
Généralement public_html. On y accède avec
http://www.mondomaine.org/~login/page.html.
Service HTTP Apache
4. Directives générales
ErrorLog : fichier où sont placées les logs d’erreur du
serveur. /var/log/httpd/error_log.
CustomLog : fichier journal de Apache.
/var/log/httpd/access_log.
Timeout : durée pendant laquelle le serveur attend des
émissions/réceptions au cours d’une communication. Elle est
réglée sur 300 secondes.
KeepAlive : définit si le serveur peut exécuter plus d’une
requête par connexion. C’est à off par défaut mais si on
passe à on Apache peut générer rapidement des processus
enfants pour le soulager s’il est très chargé.
Service HTTP Apache
4. Directives générales
MaxKeepAliveRequests : nombre maximum de requêtes
par connexion persistante. Une valeur élevée peut
augmenter les performances du serveur. 100 par défaut.
KeepAliveTimeout : durée pendant laquelle le serveur
(généralement un processus fils) attend après avoir servi une
requête. Par défaut 15 secondes. Après les 15 secondes, la
demande sera réceptionnée par le serveur avec un Timeout.
StartServers : nombre de serveurs créés au démarrage. Par
défaut 8. Apache gérant ensuite dynamiquement le nombre
de serveurs fils, ce paramètre a peu d’importance car le
nombre va baisser ou augmenter rapidement.
Service HTTP Apache
5. Gestion des performances
MaxRequestPerChild : nombre de requêtes
pouvant être exécutées par un processus fils avant
de s’arrêter. Par défaut 4000. Ça permet une
occupation mémoire plus réduite en la libérant plus
rapidement.
MaxClients : limite du nombre total de requêtes
pouvant être traitées simultanément. Par défaut
150. La valeur limite le risque de saturation du
serveur.
Service HTTP Apache
5. Gestion des performances
MinSpareServers / MaxSpareServers : suivant la
charge de la machine, Apache peut lancer d’autres
processus serveurs pour s’adapter à la charge
actuelle. Par défaut, elles sont de 5 et 20. Ces deux
valeurs déterminent les nombres limites autorisés.
Si un serveur est peu chargé avec 15 processus,
Apache en supprimera mais en gardera toujours au
moins 5. Si le serveur devient chargé avec 10
processus, Apache en créera des supplémentaires à
concurrence de 20 maximum.
Service HTTP Apache
5. Gestion des performances
MinSpareThreads/MaxSpareThreads : chaque
serveur fils peut accepter un certain nombre de
requêtes simultanément. Pour cela il utilise les
threads. Ces deux valeurs sont fixées par défaut à
20 et 75
ThreadsPerChild : nombre de threads par défaut
au lancement d’un serveur fils. Par défaut 25.
Service HTTP Apache
6. Les répertoires, alias et emplacements
A) Directory
Les balises <Directory chemin> et </Directory>
permettent de regrouper des directives qui ne
s’appliqueront qu’au chemin (et à ses sous
répertoires) donnés.
<Directory /var/www/html/images>
Options +Indexes +FollowSymLinks
DirectoryIndex index.php index.html
Order allow, deny
Allow from All
</Directory>
<Directory /var/www/html/cgi-bin>
Options +ExecCGI
</Directory>
Service HTTP Apache
6. Les répertoires, alias et emplacements
La directive Options accepte les valeurs suivantes
précédées de + ou - et séparées par des espaces :
All : toutes les options;
Indexes : si jamais le répertoire ne contient pas de
fichier HTML par défaut (cf DirectoryIndex), le contenu
du répertoire est affiché sous forme de listing ;
ExecCGI : l’exécution de scripts CGI est autorisée ;
FollowSymLinks : le serveur suit les liens symboliques.
Service HTTP Apache
6. Les répertoires, alias et emplacements
La directive DirectoryIndex précise les fichiers
html ou cgi par défaut lors du chargement d’une
URL. DirectoryIndex index.php index.html
Au chargement, sans préciser le nom du fichier
html, le serveur tentera de charger index.php et, s’il
est absent, index.html. Dans le cas contraire, c’est
l’option Indexes qui détermine si le contenu doit
être visible sous forme de répertoire.
Service HTTP Apache
6. Les répertoires, alias et emplacements
La directive Allow indique quels clients seront
autorisés à accéder au répertoire. Ce peut être all,
un domaine, une IP, sous réseau, une paire
réseau/sous réseau, etc.
La directive Deny interdit l’accès et s’utilise de la
même manière.
L’ordre est déterminé par la directive Order.
Service HTTP Apache
6. Les répertoires, alias et emplacements
B) Alias
La directive Alias permet de créer un raccourci
entre l’arborescence logique du site Web et un
chemin du système de fichiers.
Alias /help "/usr/share/doc/html"
Dans ce cas, l’url http://www.monsite.org/help ne
cherchera pas dans le répertoire
/var/www/html/help mais dans
/usr/share/doc/html.
Service HTTP Apache
6. Les répertoires, alias et emplacements
Contrairement aux balises <Directory>, les balises
<Location> et </Location> permettent d’appliquer
des directives basées sur l’URL (et pas les
répertoires).
<Location /help>
Options +All -FollowSymLinks
Order deny, allow
Deny from all
Allow from .mondomaine.org
</Location>
Service HTTP Apache
7. Hôtes virtuels
Un serveur Apache est capable de gérer plusieurs sites
Web sur un même serveur. Il existe plusieurs méthodes.
La première se base sur les noms (plusieurs sites Web pour
un serveur) l’autre sur les adresses ip (une adresse IP pour
chaque site Web). Vous allez aborder la première version.
La directive NameVirtualHost spécifie l’adresse IP sur
laquelle le serveur va recevoir les requêtes d’accès aux
hôtes virtuels.
Les balises <VirtualHost> et </Virtualhost> permettent
de définir un hôte virtuel.
Service HTTP Apache
7. Hôtes virtuels
NameVirtualHost 192.168.1.3
<VirtualHost 192.168.1.3>
ServerName www2.mondomaine.org
ServerAdmin [email protected]
DocumentRoot /var/www/www2.mondomaine.org/
ErrorLog logs/www2_error_log
CustomLog logs/www2_access_log
</VirtualHost>
Quand on accède au serveur, Apache recherche d’abord une
correspondance entre le nom d’hôte spécifié par l’URL et chaque
ServerName des hôtes virtuels.
Si aucune correspondance exacte n’est trouvée, c’est le premier hôte
virtuel qui est choisi par défaut en faisant abstraction des paramètres
globaux.