Apache : mise en cache avec memcached et socache pour WordPress
Au mois de janvier 2015, alors que je rencontrais des problèmes de DDoS, je vous faisais part de la nécessité de filtrer les accès à vos sites par Iptables, par les referer et par les remote host et aussi de bloquer les accès aux pages de commentaires pour certaines machines et certains pays. Sur Internet, le parasitisme est devenu le genre humain ! ;+)
En réalité, la vitesse d’affichage des pages de ce site est surtout due désormais à la mise en œuvre du module socache associé au gestionnaire de mise en mémoire memcached.
Installation de Memcached sous Fedora
A partir de la ligne de commande, installez les paquets memached et libmemcached qui sont dans les dépôts de base de la distribution à l’aide de la commande :
dnf install memcached libmemcached
Une fois installé, vous devez configurer memcached en éditant le fichier /etc/sysconfig/memcached où vous devrez déterminer la taille du cache. 128 Mo peuvent très largement suffire dans un 1er temps ! Dans l’exemple ci-dessous, j’ai également multiplié par le nombre de connexions :
PORT="11211" USER="memcached" MAXCONN="8192" CACHESIZE="128" OPTIONS="-l 127.0.0.1"
Vous devez ensuite démarrer memcached en tant que service :
systemctl enable memcached systemctl start memcached
Configuration Apache
Les directives que je vais ici vous présenter ne fonctionne qu’à partir d’Apache 2.4.5.
Vous devez d’abord activer trois modules dont dépendent les directives, en les dé-commentant dans le fichier /etc/httpd/conf.modules.d/00-base.conf :
LoadModule cache_module modules/mod_cache.so LoadModule cache_socache_module modules/mod_cache_socache.so LoadModule socache_memcache_module modules/mod_socache_memcache.so
Pour mes sites WordPress, j’ai ajouté un fichier /etc/httpd/conf.d/07-cache.conf à la configuration du serveur Apache 2.4.6 sous CentOS dont je vous livre le contenu que j’ai ajouté à mes différents fichiers virtual host. La directive CacheEnable ne s’applique pas hélas à un bloc Files ou FilesMatch. Il faudrait utiliser le module mod_file_cache, qui, hélas, n’est toujours pas présent sur Fedora 2è du fait de son caractère expérimental.
<IfModule mod_cache_socache.c> CacheSocache memcache:127.0.0.1:11211 CacheSocacheMaxSize 8388608 CacheSocacheMaxTime 86400 CacheSocacheMinTime 14400 CacheSocacheReadSize 0 CacheSocacheReadTime 0 <LocationMatch "/(graphics?|icons?|im(g|ages?))$"> CacheEnable socache </LocationMatch> <LocationMatch "/(css|styles?)$"> CacheEnable socache </LocationMatch> <LocationMatch "/(js|scripts?)$"> CacheEnable socache </LocationMatch> <LocationMatch "/uploads/"> CacheEnable socache </LocationMatch> <LocationMatch "/[^/]*fonts?[^/]*/$"> CacheEnable socache </LocationMatch> <LocationMatch "/feed/?(atom/?)?$"> CacheEnable socache </LocationMatch> </IfModule>
J’ai laissé volontairement les deux manières de gérer le cache dans la configuration d’Apache. N’oubliez de recharger la configuration afin que les modifications effectuées soient prises en charge :
systemctl reload httpd
Vérification de la mise en cache
Vous pouvez vérifier la présence d’objets partagés présents dans le gestionnaire de mise en cache memcached à l’aide des commandes suivantes :
memcached-tool 127.0.0.1:11211 memcached-tool 127.0.0.1:11211 stats memcached-tool 127.0.0.1:11211 dump memcached-tool 127.0.0.1:11211 display