Il y a deux ans, j'ai publié une série d'articles sur la création d'un serveur web basé sur Debian 8 et le lancement du service Nextcloud 11. Quelques mois plus tard, un complément contenant des informations « différentielles » sur l'installation de Nextcloud 13 sur Debian 9 a été publié. À la fin de 2018, j'ai simplement mis à jour Debian et Nextcloud et je n'ai rencontré aucun problème inhabituel ou intéressant. La mise à jour à la fin de 2019 a été beaucoup plus intéressante et cela valait la peine d'en parler.

Cet article sera principalement utile à ceux qui, en suivant les instructions des quatre précédents articles, ont construit leur propre Nextcloud 13 sur Debian 9 (un salut à mes dix abonnés sur le sujet de Nextcloud, en particulier à ceux pour qui c'était la première expérience dans le monde de Linux). Ceux qui envisagent de créer un service à partir de zéro, je leur conseille de prendre comme base les quatre premiers articles de cette série en tenant compte des versions actuelles de Debian 10 et Nextcloud 17. Pour les utilisateurs expérimentés de Linux, l'article peut occuper une place entre « trivial et inutile » et « pas mal, un mémo tout-en-un ».
Table des matières
Navigation rapide dans le chapitre
Préface
Initialement, je voulais installer et configurer Nginx sur Debian 10, au-dessus duquel Nextcloud 17 actuel pourrait être installé sans problème. Mais je n'ai pas réussi à trouver le temps pour tout cela, donc cet article est un ensemble d'instructions pour la mise à jour de Nextcloud de la version 13 à la version 17 actuelle avec une préparation préalable du serveur web.
Tout d'abord, il est nécessaire d'expliquer pourquoi des changements radicaux sont requis du côté du serveur web. Notre serveur est basé sur Debian 9, qui est actuel et supporté. Il suffirait de mettre à jour le système d'exploitation et tous les composants du serveur web recevraient au moins des mises à jour de sécurité. Ce serait merveilleux si nous continuions à utiliser Nextcloud 13 ou si nous ne mettions à jour que vers la version 14. Mais Nextcloud 13 n'est plus supporté, et le support de la version 14 est "en fin de vie". À partir de la version 15, Nextcloud proposera de convertir la base de données en big int pour prendre en charge l'encodage sur quatre octets, et cela sera assez problématique avec MariaDB 10.1. Nextcloud 17 nécessite PHP 7.1-7.3, tandis que Debian 9 contient seulement la version 7.0 dans ses dépôts natifs. D'un point de vue fiabilité et prévisibilité, il aurait été plus logique de mettre à jour vers l'avant-dernière version de Nextcloud, mais après quelques années, j'ai tellement confiance en la fiabilité de ce service que je voulais passer à la dernière version et mettre à jour le serveur web en prévision de l'avenir. Par conséquent, pour mettre à jour vers Nextcloud 17, il est optimal de mettre à jour MariaDB vers la version stable actuelle 10.4 et PHP vers la version 7.2. Justement 7.2, et non la version actuelle 7.4. La raison en est que Nextcloud 13 nécessite PHP 5.6, 7.0 - 7.2, tandis que Nextcloud 17 nécessite PHP 7.1 - 7.3. Utiliser PHP 7.2 est pratique pour minimiser les actions liées à la mise à jour. Le serveur Apache ne nécessitera pas de mise à jour - il suffira d'installer les mises à jour de sécurité fournies par l'équipe de support de Debian. Cependant, pour les mises à jour de MariaDB et PHP, il faudra faire appel à des dépôts externes.
Lorsque je me suis familiarisé avec Nextcloud, je le mettais à jour manuellement : via la console, une commande spéciale mettait le site en mode maintenance, puis j'ai téléchargé et extrait manuellement l'archive de la nouvelle version du site, mis à jour les fichiers et lancé la procédure de mise à jour. Cette mise à jour donnait généralement les résultats escomptés, bien que je ne manquais pas de faire une sauvegarde du site, de la base de données et des données utilisateur. En revanche, la mise à jour automatique était parfois source de surprises. Mais c'était il y a longtemps, la stabilité du moteur a considérablement augmenté depuis, et cette fois-ci, j'ai effectué les mises à jour uniquement via l'interface Web. Cependant, je n'ai pas pu me soustraire à la ligne de commande. Lors d'une mise à jour itérative, diverses alertes et notifications apparaîtront dans le panneau de contrôle à chaque nouvelle version, que je devrai « supprimer » en exécutant des commandes dans la ligne de commande. On peut ne pas le faire — le service fonctionnera quand même. Bien que cette approche soit fondamentalement incorrecte, j'ai utilisé Nextcloud dans ce mode pendant 3 mois avant de m'attaquer spécifiquement aux questions soulevées.
Mise à jour de Debian
Nous arrêtons le serveur Web :
# service apache2 stop
Et nous mettons à jour :
# apt-get update
# apt-get dist-upgrade
Après la mise à jour, vous pouvez vérifier la version du système d'exploitation et effectuer un redémarrage pour vous assurer que tout démarre correctement après la mise à jour :
# cat /etc/debian_version
# reboot
Mise à jour de PHP vers la version 7.2
Nous arrêtons le serveur Web :
# service apache2 stop
Ajoutons le certificat et les clés PPA, le dépôt PHP :
# apt install ca-certificates apt-transport-https
# wget -q https://packages.sury.org/php/apt.gpg -O- | apt-key add -
# echo "deb https://packages.sury.org/php/ stretch main" | tee /etc/apt/sources.list.d/php.list
En supprimant l'ancienne version de PHP 7.0, phpmyadmin sera également supprimé, car nous allons nettoyer les « traces » des paquets supprimés en utilisant autoremove. Cela ne posera pas de problèmes particuliers, car il n'y avait pas de configurations spéciales pour phpmyadmin et le réinstaller ne posera aucune difficulté.
# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin
Installation des modules nécessaires pour Nextcloud 17 :
# apt-get install php7.2-mysql php7.2-curl php7.2-xml php7.2-gd php7.2-json php7.2-mbstring php7.2-zip php7.2-intl
# apt-get install php-memcached php-apcu php-redis php-imagick
[ a été écrit spécialement pour le site par l'auteur .
Le lien vers la source n'est pas obligatoire, mais il est fortement souhaitable de le mentionner ! ]
Vérifiez la version de PHP, démarrez le serveur Web et vérifiez si Nextcloud fonctionne :
# php -v
# service apache2 start
Mise à jour de MariaDB vers la version 10.4
Sur le site du projet, il y a une , où il faut indiquer votre système d'exploitation, sa version et choisir la version de la base de données. Après le choix, un code sera généré pour ajouter le dépôt.
Nous arrêtons le serveur Web :
# service apache2 stop
Ajoutons le dépôt et mettons à jour les paquets :
# apt-get install software-properties-common dirmngr
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
# add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirror.iweb.com/repo/10.4/debian stretch main'
# apt-get update
Lors de l'installation de MariaDB, le gestionnaire de paquets supprimera correctement la version précédente et installera la nouvelle, toutes les bases de données seront ainsi conservées. Cependant, il est bien sûr conseillé de faire une sauvegarde de la base Nextcloud.
Nous installons MariaDB et lançons la procédure de mise à jour :
# apt-get install mariadb-server
# mysql_upgrade u root -p
Après avoir saisi le mot de passe, MariaDB sera mise à jour et vous pourrez la configurer en suivant :
# mysql_secure_installation
Nous lançons le serveur web et vérifions le bon fonctionnement de Nextcloud :
# service apache2 start
Mise à jour de Nextcloud vers la version 17
Pour démarrer la mise à jour, vous devez vous connecter au service avec un compte administrateur, accéder aux paramètres et ouvrir « Paramètres généraux » dans la section administrative. Nextcloud affiche la version installée et la version disponible pour la mise à jour, que vous pouvez démarrer en cliquant sur le bouton « Ouvrir la fenêtre de mise à jour ». Après l'initiation, Nextcloud effectue une sauvegarde, télécharge et vérifie l'intégrité des fichiers de mise à jour, active le mode de maintenance et met à jour les fichiers. Ensuite, il posera la question « Garder le mode de maintenance actif » ? Il faut être attentif ici. Une réponse positive laissera le site en mode maintenance — on suppose que l'administrateur sait quoi faire ensuite et le fera manuellement. Sinon, Nextcloud fera tout lui-même, donc pour continuer, cliquez sur le bouton « Non ».
Les mises à jour sont effectuées de manière itérative. D'abord, Nextcloud 13.x sera mis à jour vers la dernière version de la branche 14.x. Après cela, vous devrez retourner au centre d'administration et relancer la mise à jour, cette fois de 14.x à 15.x. Et ainsi de suite jusqu'à atteindre la dernière version disponible. Après chaque mise à jour, la page « Paramètres généraux » dans la section administrative affichera une liste de suggestions et de problèmes rencontrés, ainsi que des recommandations pour les résoudre. Ci-dessous, nous allons discuter des actions à entreprendre après chaque mise à jour.
Avant la mise à jour
Pour les dernières versions de Nextcloud, il est recommandé d'activer PHP OPcache pour améliorer les performances. C'est étrange, car j'ai négligé ce point il y a quelques années, alors qu'OPcache a été introduit dans PHP 5. Dans /etc/php/7.2/apache2/php.ini, il faut décommenter et modifier les paramètres suivants :
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Mise à jour 13.x -> 14.x
Nous restaurons les index des tables :
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Mise à jour 14.x -> 15.x
Préparation de la base de données nextcloud pour l'activation de l'encodage à quatre octets :
# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit
Activation du support de l'encodage à quatre octets dans Nextcloud :
# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"
Conversion des tables :
# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
Récupération des index perdus des tables :
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Conversion des index des tables en bigint :
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Mise à jour 15.x -> 16.x
Récupération des index perdus des tables :
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Conversion des index des tables en bigint :
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Mise à jour 16.x -> 17.x
Aucune action supplémentaire requise.
Postface
Cette instruction a permis de mettre à jour la machine virtuelle avec Nextcloud 13. L'utilisation de la machine virtuelle permet de ne pas faire de sauvegardes des fichiers Nextcloud et de sa base de données, car en cas de problème, il suffit de restaurer le fichier de la machine virtuelle sauvegardé à l'avance et de recommencer. Cependant, cela ne concerne pas le dossier des données utilisateur, que je recommande également de sauvegarder avec la machine virtuelle Nextcloud. Dans mon cas, le "cloud" est utilisé comme un dossier distant avec versionnage automatique, avec une direction de synchronisation "uniquement vers là", et j'ai perdu ces données sans gravité — il aurait suffi de passer quelques heures à refaire la synchronisation. Malgré mon mépris pour la règle de vie établie "sauvegardez-vous au cas où", la mise à jour s'est déroulée sans problème et tous les clients ont également fonctionné sans problème avec Nextcloud 17. Je suis impressionné, Frank Karlitschke — vous et votre équipe faites un excellent travail !
Après la mise à jour, j'ai décidé de nettoyer les données des utilisateurs qui, selon les statistiques, occupaient presque deux téraoctets. Je n'avais jamais eu autant de données actives — la majeure partie du volume était constituée de fichiers de versions et de fichiers supprimés. Le problème auquel j'ai été confronté était qu'il y avait tellement de données supprimées pour un seul utilisateur (ce n'était pas tant la taille, mais précisément le nombre — une multitude de petits fichiers) que Nextcloud ne pouvait pas les afficher dans l'interface web. Après avoir étudié le manuel d'administration, j'ai trouvé une solution via la ligne de commande. Cela pourrait peut-être être utile à quelqu'un.
Pour nettoyer les fichiers supprimés de l'utilisateur user :
# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user
Pour nettoyer les fichiers de versions de l'utilisateur user :
# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup userRetourner .
Histoire de la création d'un cloud domestique. Partie 5. Actualisation 2019 – PHP 7.2, MariaDB 10.4 et Nextcloud 17
Version du texte : 1.1.1.
Date de première publication : 15.01.2020.
Date de la dernière modification : 15.01.2020.
Journal des mises à jour1.1.1 [15-01-2020]
Correction de fautes de frappe.
1.1.0 [15-01-2020]
Correction du code de préparation de la base de données nextcloud pour l'activation de l'encodage à quatre octets.
1.0.0 [15-01-2020]
Première version.
Source : habr.com
