🏳️🌈♿️👩🎨🌱 En février, je remets 3% de mes ventes à des organismes qui favorisent la diversité, les arts et l'environnement 🏳️🌈♿️👩🎨🌱
Manuel d'alchimie du code
Entretien de Nextcloud: corbeille, PHP et cache
Quand faire l'entretien de Nextcloud ?
L'entretien de Nextcloud s'effectue habituellement sans enjeu en passant par l'interface web. Mais, une installation peut parfois devenir volumineuse. Elle peut aussi être affectée par les mises à jour de PHP. C'est donc important d'y revenir régulièrement en mode ligne de commandes.
Dans cet article, je détaille quelques enjeux qui peuvent se présenter lorsque l'on maintient des infrastructures qui comprennent des dizaines voir des centaines de milliers de fichiers. Aussi, je montre quelques défis qui peuvent se présenter pendant la mise à jour du système, particulièrement avec PHP.
Nextcloud a un outil de maintenance en ligne de commande nommé occ
. Il est situé dans le répertoire d'installation de Nextcloud. Il s'exécute avec un interpréteur PHP avec l'utilisateur dédié à Nextcloud sur le serveur.
Vider la corbeille
Il peut arriver, lorsque la corbeille devient très chargée, qu'il ne soit plus possible de la vider via l'interface graphique. Dans ce cas-ci, il est recommandé d'utiliser la ligne de commande pour effectuer une vidange manuelle. De plus, cette méthode permet d’accomplir le travail pour plusieurs comptes à la fois, ou même pour l'ensemble de l'installation.
Premièrement, on va se positionner dans le répertoire d'installation de Nextcloud, généralement /var/www/nextcloud
.
cd /var/www/nextcloud
Si votre installation est native, l'utilisateur sera www-data
. Si, par contre, vous utilisez Yunohost, votre utilisateur est nextcloud
, car il crée des utilisateurs pour chaque application.
nc_user=nextcloud # changer ici au besoin
Nous allons exécuter la commande suivante pour nettoyer le système de fichiers et la corbeille
sudo -u ${nc_user} php occ trashbin:cleanup --all-users
Limiter la durée de rétention des fichiers
On peut limiter la durée de rétention des fichiers. Pour ce faire, il faut modifier le fichier /var/www/nextcloud/config/config.php
À la fin du fichier, après la dernière ligne de paramètres, ajouter la ligne suivante:
'trashbin_retention_obligation' => '30, 35',
Maintenance automatique
Nextcloud inclus une routine PHP pour effectuer des tâches de maintenance automatique. Nous pouvons augmenter la fréquence d'exécution en ajoutant cette ligne de commande à la table de CRON de l'utilisateur root. Pour modifier, utiliser cette commande:
crontab -u www-data -e
Ajouter la ligne suivante:
*/15 * * * * php -f /var/www/nextcloud/cron.php
Activer le cache de PHP 7.3
Depuis la version 20, Nextcloud utilise le cache de PHP par défaut au lieu de Redis. Si les librairies de PHP ne sont pas bien configurées, vous aurez le message d'erreur suivant:
Memcache \OC\Memcache\APCu not available for local cache
J'ai fait mes recherches et je suis tombé sur le fil de discussion suivant: https://github.com/nextcloud/vm/issues/2039
J'ai fait le travail pour vous de démêler un peu tout ça pour ressortir les éléments importants. Voici donc la solution que je propose.
Pour corriger ce problème, sur Debian 10 (ou Yunohost), on corrige en ajoutant la ligne suivante.
apc.enable_cli=1
dans le fichier suivant:
/etc/php/7.3/mods-available/apcu.ini
Il faut ensuite réinitialiser le service php-fpm, qui fait l'interprétation de PHP lorsqu'on utilise le serveur web Nginx. Sur Debian, c'est comme suit
sudo systemctl restart php7.3-fpm.service
Dernière étape de l'entretien de Nextcloud: effectuer une correction de mise à jour
À la suite des modifications effectuées en passant par la ligne de commande pour corriger l'installation de PHP ou encore manipuler les fichiers de configuration de l'instance Nextcloud, je recommande une dernière étape. Nettoyer le cache des fichiers et faire une mise à jour manuelle. Celle-ci aura l'avantage de compléter une mise à jour démarrée précédemment, mais non complétée.
Pour nettoyer le cache des fichiers, la commande est similaire à celle utilisée précédemment pour vider la corbeille:
sudo -u ${nc_user} php occ files:scan --all sudo -u ${nc_user} php occ files:cleanup
On lance ensuite la mise à jour.
sudo -u nextcloud php updater/updater.phar
Mise à jour manuelle de Nextcloud
Celle-ci placera automatiquement l'instance Nextcloud en mode maintenance. Ensuite, elle installe la nouvelle version du logiciel, puis elle met à jour les entrées de la base de données. Lorsque la corbeille est encombrée ou qu’il y a des problèmes dans la configuration système de PHP, c'est souvent cette étape qui plante. Mais, lors de l'installation dans l'interface web, il n'est pas toujours possible d'attraper les messages d'erreur. On aura l'impression que la mise à jour a été un succès.
Conclusion
La maintenance de Nextcloud est une tâche qu'il est essentiel de maîtriser pour garder une installation en santé. Dans ce billet, nous avons vu comment vider une corbeille trop pleine, réactiver le cache de PHP et compléter une mise à jour manuellement.
Si tu désires avoir de l'aide pour entretenir ton instance de Nextcloud, j'offre un service de Consultation Express, d'une durée de 30 minutes à 1h30 !
réserve ta place maintenant !