Nous allons voir dans cet article quelques notions pour pousser Apache plus loin, utilisation de l’url rewriting, commande spéciale, modules divers et variés. C’est tout ce que j’ai appris ces dernières années et qui pourraient vous servir (enfin ce que j’ai noté…). Pour cette première partie, nous allons voir le module EXPIRES et quelques commandes Apache 2

Les modules

Comme vous le savez, vous pouvez rajouter des modules à Apache, c’est à dire des fonctions spéciales, vous pouvez les activer et les désactiver à votre guise. Je vais vous parler ici de quelques modules qui me semblent cruciaux pour alléger la charge de votre serveur et servir les requêtes le plus rapidement possible. Nous allons commencer par un module primordial : expires

Dans /etc/apache2 vous trouvez deux dossiers : mods-available et mods-enabled. Le premier contient la liste des modules disponibles (installés) et le deuxième la liste des modules activés. En effet vous pouvez très bien installer un module sans l’utiliser (sans l’activer). Pour enclencher un module, vous pouvez soit faire un lien symbolique (ln -s) dans le mods-enabled vers mods-available ou utiliser une commande spéciale : a2enmod nomdumodule

Par exemple :


a2enmod expires
a2dismod expires

La première commande active le module, la deuxième le désactive.

Que fait ce module ? Il permet de dire à votre navigateur qu’il n’a pas besoin de recharger un objet (image, html, swf etc…) suivant un temps imparti. Le résultat est énorme car non seulement il accélère le téléchargement coté client mais soulage aussi la bande passante, ainsi que la charge de votre serveur. Voici quelques commandes à rajouter dans votre VirtualHost par exemple


ExpiresActive On
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/x-flv "access plus 1 month"
ExpiresByType text/css A604800
ExpiresByType image/gif A604800
ExpiresByType image/jpeg A604800
ExpiresByType image/png A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800

Dans la première ligne, nous activons la fonction expires avec On (Off pour désactiver). ExpiresByType permet de définir un temps d’accès par mime-type. Donc par exemple pour les vidéos mp4 (le mime est video/mp4) on définit le temps imparti comme étant le dernier accès plus un mois. C’est à dire que le client va charger cette vidéo la première fois mais pendant 1 mois, le navigateur ne la rechargera plus s’il a dans le cache !

Un autre modèle d’écriture plus compact est par exemple A604800. Donc A pour Access suivi d’un nombre de seconde (604800 = 7 jours car chaque jour contient 86400 secondes). Vous pouvez aussi utiliser une directive universelle ExpiresDefault qui donnera par défaut un temps imparti pour tous les mime-types

Attention : car si vous modifiez la vidéo en gardant le même nom, les clients auront encore l’ancienne version en cache. Pour rendre le changement effectif, vous devez changer le nom de la video sur le serveur et donc sur toutes les urls qui contient ce lien…

Quelques trucs avec Apache 2

Quelques commandes utiles avec Apache 2. Pour savoir par exemple quels sont les modules effectivement en marche dans Apache 2, voici une commande listant les modules en marchent :

apache2ctl -M

Une commande qui permet aussi de savoir comment sont occupés les « slot » Apache que vous avez défini par ServerStart (s’il n’est pas dépassé). Très utile lorsque votre serveur est surchargé et que vous ne comprenez pas pourquoi, regardez d’abord avec cette commande :

apache2ctl status

Si la commande retourne une erreur, regardez si le module status est installé (a2enmod status), si c’est le cas consultez le paramètre du module dans /etc/apache2/mods-enabled/status.conf

Vous devez avoir une ligne : Allow from 127.0.0.1 pour permettre l’accès depuis l’ordinateur local. (vous avez surement mis HostnameLookups dans apache2.conf à OFF ce qui est plutôt logique…)

Cette commande retourne donc un tableau de caractères :

. indique un slot Apache libre
_ indique un slot en attente de connexion (donc un processus Apache en attente)
K indique que le slot est en Keepalive, c’est le paramètre que vous avez défini dans apache2.conf
C indique un slot en cours de fermeture de connexion

Si votre tableau est totalement rempli cela peut être mauvais signe, trop de processus sont ouverts, soit votre paramètre n’est pas bon (ServerLimit, ServerStart…)

Une petite astuce bien pratique, pour voir en temps réel toutes les secondes par exemple :

watch -n 1 apache2ctl status

permet de voir toute les 1 seconde la commande apache2ctl status…