Configuration de la mémoire cache

Vous pouvez améliorer significativement les performances de votre serveur ownCloud en mettant en place de la mémoire cache, où les objets appelés fréquemment sont stockés en mémoire pour une récupération plus rapide. Il existe deux types de cache à utiliser : un cache PHP opcode, communément appelé opcache, et le cache de données de votre serveur Web. Si vous n’avez pas installé et activé un système de mémoire cache, vous verrez un avertissement sur votre page d’administration. Un système de mémoire cache n’est pas obligatoire et vous pouvez ignorer sans risque cet avertissement si vous le voulez.

Note

Si vous activez un cache distribué dans votre fichier config.php (memcache.distributed) au lieu d’un cache local (memcache.local), vous verrez encore cet avertissement.

Un opcache PHP stocke les scripts PHP compilés de sorte à ce qu’ils ne soient pas recompilés chaque fois qu’ils sont appelés. PHP fournit l’OPcache Zend dans son code de base depuis la version 5.5, de sorte que vous n’aurez pas à installer un opcache pour PHP 5.5 et versions suivantes.

Si vous utiliser PHP 5.4, qui est la plus ancienne version PHP gérée par ownCloud, vous pouvez installer Alternative PHP Cache (APC). C’est à la fois un opcache et un cache de données. APC n’a pas été mis à jour depuis 2012 et n’est plus maintenu, et PHP 5.4 est ancien et se traîne par rapport aux dernières versions. Si cela est possible, il est préférable d’utiliser la dernière version de PHP.

Le cache de données est fourni par Alternative PHP Cache, user (APCu) dans PHP 5.5+, Memcached ou Redis.

ownCloud peut gérer plusieurs services de cache mémoire, vous pouvez donc choisir celui qui convient le mieux à vos besoins. Les services de cache gérés sont les suivants :

  • APC
    Un cache local pour les systèmes utilisant PHP 5.4.
  • APCu, APCu 4.0.6 ou supérieur est nécessaire.
    Un cache local pour les systèmes utilisant PHP 5.5 et les versions suivantes.
  • Memcached
    Un système de cache distribué pour plusieurs installations d’ownCloud.
  • Redis, Le module PHP 2.2.6 ou supérieur est nécessaire.
    Un système de cache distribué.

Les systèmes de mémoire cache doivent être explicitement configurés à partir de la version 8.1 d’ownCloud. Vous devez installer et activer le système de cache désiré, puis ajouter l’entrée appropriée dans le fichier config.php (voir Paramètres de Config.php pour un aperçu de tous les paramètres de configuration possibles).

Vous pouvez utiliser à la fois un cache local et un cache distribué. Les systèmes de cache recommandés sont APCu et Redis. Après avoir installé et activé le système de cache désiré, vérifiez qu’il est actif en exécutant Informations et version de PHP.

APC

APC is only for systems running PHP 5.4 and older. The oldest supported PHP version in ownCloud is 5.4.

Note

RHEL 6 and CentOS 6 ship with PHP 5.3 and must be upgraded to PHP 5.4 to run ownCloud. See Installation de PHP 5.4 sous RHEL 6 et CentOS 6.

On Red Hat/CentOS/Fedora systems running PHP 5.4, install php-pecl-apc. On Debian/Ubuntu/Mint systems install php-apc. Then restart your Web server.

After restarting your Web server, add this line to your config.php file:

'memcache.local' => '\OC\Memcache\APC',

Refresh your ownCloud admin page, and the cache warning should disappear.

APCu

PHP 5.5 et supérieur contiennent Zend OPcache dans leur code de base, et sur la plupart des distributions Linux, il est activé par défaut. Cependant, il ne fournit pas de cache de données. APCu est un cache de données qui est disponible dans la plupart des distributions Linux. Pour les systèmes Red Hat/CentOS/Fedora utilisant PHP 5.5 et supérieur, installez le paquet php-pecl-apcu. Pour les systèmes Debian/Ubuntu/Mint installez php5-apcu. Sous Ubuntu 14.04LTS, la version de APCu est 4.0.2, qui est trop ancienne pour être utilisée avec ownCloud. ownCloud nécessite au minimum la version 4.0.6. Vous pouvez installer la version 4.0.7 à partir des rétro-portages d’Ubuntu avec cette commande:

apt-get install php5-apcu/trusty-backports

Puis, redémarrez votre serveur Web.

Après le redémarrage de votre serveur Web, ajoutez la ligne suivante dans le fichier config.php:

'memcache.local' => '\OC\Memcache\APCu',

Rechergez la page d’administration d’ownCloud : le message d’avertissement a disparu.

Memcached

Memcached est un vénérable système de cache pour les serveurs distribués et et fonctionne bien avec ownCloud à une exception près : il ne peut pas être utilisé avec le verrouillage de fichier transactionnel car il ne stocke pas les verrous, et les données peuvent disparaître du cache à tout moment (Redis est le meilleur système de cache pour cela).

Note

Assurez-vous d’installer le module PHP memcached et non memcache. ownCloud ne sait gèrer que le module PHP memcached.

Le paramétrage de Memcached est facile. Sous Debian/Ubuntu/Mint installez memcached et php5-memcached. L’installeur démarrera automatiquement memcached et le configurera pour être lancé au démarrage.

Sous Red Hat/CentOS/Fedora installez memcached et php-pecl-memcached. Il ne sera pas démarré automatiquement, vous devrez donc utiliser le gestionnaire de services pour démarrer memcached et pour le lancer au démarrage en tant que démon.

Vous pouvez vérifier que Memcached est en cours d’exécution avec la commande ps ax:

ps ax | grep memcached
19563 ? Sl 0:02 /usr/bin/memcached -m 64 -p 11211 -u memcache -l
127.0.0.1

Redémarrez votre serveur Web et ajoutez les entrées appropriées dans le fichier config.php, puis recharger la page d’administration d’ownCloud. L’exemple suivant utilise APCu comme cache local, Memcached comme cache distribué et liste tous les serveurs du pool partagé avec leur numéro de port:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
     array('localhost', 11211),
     array('server1.example.com', 11211),
     array('server2.example.com', 11211),
     ),

Redis

Redis est un excellent système de cache moderne à utiliser pour le cache distribué et le cache local pour le verrouillage de fichier transactionnel car il garantit que les objets sont disponibles aussi longtemps que nécessaire.

Le module PHP Redis doit être au minimum en version 2.2.6. Si vous utilisez une distribution Linux qui ne fournit pas de versions gérées de ce module ou qui ne fournit pas du tout Redis, veuillez consulter Aide supplémentaire pour l’installation de Redis.

Sous Debian/Ubuntu/Mint installez redis-server et php5-redis. L’installeur lancera automatiquement redis-server et le configurera pour être lancé au démarrage.

Sous CentOS et Fedora installez redis et php-pecl-redis. Il ne sera pas démarré automatiquement, vous devrez donc utiliser le gestionnaire de services pour démarrer redis, et pour le lancer au démarrage en tant que démon.

Vous pouvez vérifier que Memcached est en cours d’exécution avec la commande ps ax:

ps ax | grep redis
22203 ? Ssl    0:00 /usr/bin/redis-server 127.0.0.1:6379

Redémarrez votre serveur Web et ajoutez les entrées appropriées dans le fichier config.php, puis recharger la page d’administration d’ownCloud. L’exemple suivant utilise Redis comme cache local:

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
      ),

Pour de meilleures performances, utilisez Redis pour le verrouillage de fichiers en ejoutant ceci:

'memcache.locking' => '\OC\Memcache\Redis',

Si vous voulez vvous connecter à Redis configuré pour écouter sur un socket Unix (ce qui est recommandé si Redis fonctionne sur le même serveur qu’ownCloud), utilisez cet exemple de configuration de config.php:

'memcache.local' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '/var/run/redis/redis.sock',
     'port' => 0,
      ),

Redis est très paramétrable ; consultez la documentation de Redis pour en apprendre plus.

Emplacement du répertoire de cache

Par défaut, le répertoire de cache se situe dans data/$user/cache$user est l’utilisateur courant. Vous pouvez utiliser la directive 'cache_path' dans le fichier config.php (voir Paramètres de Config.php) pour sélectionner un emplacement différent.

Recommandations en fonction du type de déploiement

Serveur domestique ou de petite taille

Utilisez uniquement APCu:

'memcache.local' => '\OC\Memcache\APCu',

Petite organisation, un seul serveur

Utilisez APCu pour le cache local et Redis pour le verrouillage de fichiers:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
 'redis' => array(
      'host' => 'localhost',
      'port' => 6379,
       ),

Grande organisation, cluster de serveurs

Utilisez Redis pour tout sauf le cache local. Utilisez l’adresse IP ou le nom d’hôte du serveur pour qu’il soit accessible pour les autres hôtes

'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\APCu',
'redis' => array(
     'host' => 'server1',  //exemple de nom d'hôte
     'host' => '12.34.56.78',  //exemple d'adresse IP
     'port' => 6379,
      ),

Aide supplémentaire pour l’installation de Redis

Si vous utilisez une version de Mint ou d’Ubuntu qui ne fournit pas la version requise de php5-redis, essayez alors this Redis guide on Tech and Me polur une installation complète de Redis sous Ubuntu 14.04 en utilisant PECL. Ces instructions sont adaptables pour toute distribution qui ne fournit pas de paquet ayant la version requise ou qui ne founit pas du tout Redis, comme SUSE Linux Enterprise Server ou Red Hat Enterprise Linux.

Le module PHP Redis doit être au minimum en version 2.2.6.

Consulter https://pecl.php.net/package/redis

Sous Debian/Mint/Ubuntu, utilisez apt-cache pour voir la version de php5-redis disponible ou la version du paquet installé:

apt-cache policy php5-redis

Sous CentOS et Fedora, la commande yum affiche les informations de version disponible et installée:

yum search php-pecl-redis
Toute la documentation est sous licence Creative Commons Attribution 3.0 Unported license — Traduction : Cédric Corazza.