Wiki Tuto/HowTo - Nextcloud activer système de cache (memcache) avec redis

4
29
mar.
2017

Introduction

  • Le système de cache permet de stocker en mémoire RAM (ou en SWAP si trop de RAM utilisée) certaines informations régulièrement sollicitées, évitant ainsi de passer par la base de données (MySQL, PostGreSQL, SQLITE, etc) et augmentant les performances. Si vous utilisez un cache Redis sur une autre machine que le serveur web (par exemple en cluster), utilisez php-apcu pour stocker localement les scripts php précompilés et redis pour les informations qui doivent être partagées entre les serveurs.

Note : ce tuto devrait aussi fonctionner avec owncloud (à vérifier)

Mise en place

  1. Sur la machine qui va servir de serveur de cache, installez redis-server.
sudo apt-get install redis-server
  1. Sur votre serveur web, si ce n'est déjà fait, installez php-redis.
sudo apt install php-redis
  1. Sur votre serveur web, éditez le fichier de configuration de nextcloud/owncloud.
sudo nano /var/www/html/cloud/config/config.php
  1. Ajoutez les lignes suivantes avant ); qui se situe à la fin du fichier.
  • Si Redis est sur la même machine que Nextcloud :
'memcache.local' => '\OC\Memcache\Redis', /* contient les scripts php précompilés */
'filelocking.enabled' => 'true',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' =>
        array (
                'host' => 'localhost',
                'port' => 6379,
                'timeout' => 0,
                'dbindex' => 0,
                ),

  • Si Redis est sur une autre machine :
        /* GESTION CACHE */
'filelocking.enabled' => 'true',
'memcache.local' => '\OC\Memcache\APCu', /* contient les scripts php précompilés */
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => array(
     'host' => '10.8.66.42', /* l'adresse ip de votre serveur redis */
     'port' => 6379,
     'dbindex' => 0,
     'password' => 'tape_un_mot_de_passe_super_solide_si_non_on_va_te_pirater',
     'timeout' => 1.5,
      ),
  • Dans ce dernier cas de figure, sur vos serveurs web pensez à avoir déjà installé php-apcu (déjà fait si vous avez suivis mes tutos).
sudo apt-get install php-acpu
  1. Connectez-vous en tant qu'administrateur sur l'interface web de votre nextcloud/owncloud et rendez-vous dans l'espace d'administration. Si le message suivant n’apparaît pas, c'est que vous avez bien bossé :)
  • Aucun cache mémoire n'est configuré. Si possible, configurez un "memcache" pour améliorer les performances.

Informations supplémentaires

Si vous devez éditer le fichier de configuration de Redis

sudo nano /etc/redis/redis.conf

Afficher le PID de redis-server

sudo cat /var/run/redis/redis-server.pid

Foire Aux Questions

En utilisation mono-serveur de Redis, que se passe-t-il pour Nextcloud si le serveur Redis n'est pas joignable ?
  • Réponse : Nextcloud va retourner l'erreur suivante :
Internal Server Error

The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the server log.

Les communications entre les clients et le serveur Redis sont-elles chiffrées ?

  • # php-redis

    Posté par  . Évalué à 1 (+0/-0).

    Bonjour sur Debian 9, il faut installer php-redis pour que ça marche.
    De plus il y a pas un problème d'escape ici par exemple? :

    'memcache.local' => '\\OC\\Memcache\\Redis', /* contient les scripts php précompilés */

    • [^] # Re: php-redis

      Posté par  . Évalué à 1 (+0/-0). Dernière modification le 02 juin 2018 à 17:16.

      Bonjour sur Debian 9, il faut installer php-redis pour que ça marche.

      Ajouté. Merci du retour @fxeon.

      De plus il y a pas un problème d'escape ici par exemple? :
      'memcache.local' => '\OC\Memcache\Redis', /* contient les scripts php précompilés */

      Je viens de tester

        'memcache.local' => '\OC\Memcache\APCu',
        'memcache.locking' => '\OC\Memcache\Redis',
        'memcache.distributed' => '\OC\Memcache\Redis',
      

      et

        'memcache.local' => '\\OC\\Memcache\\APCu',
        'memcache.locking' => '\\OC\\Memcache\\Redis',
        'memcache.distributed' => '\\OC\\Memcache\\Redis',
      

      Les deux fonctionnent. Néanmoins, utiliser un seul \ permet d'économiser quelques bits :)

  • # Merci pour le fichier config.php

    Posté par  (site web personnel) . Évalué à 1 (+0/-0). Dernière modification le 21 août 2021 à 11:22.

    Bonjour,

    Merci pour le fichier config.php, car je ne trouvais pas comment le configurer pour connecter Nextcloud à Redis sur le même serveur.

    En réalité je ne sais pas si c'est bien configuré, cependant Nextcloud n'indique plus d'erreur. C'est déjà bien positif !

    Axel.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.