L'histoire de la création d'un cloud domestique. Partie 5. Mise à jour 2019 – PHP 7.2, MariaDB 10.4 et Nextcloud 17

Il y a deux ans, j'ai publié une série d'articles sur le thème de la création d'un serveur Web basé sur Debian 8 et de l'exécution du service Nextcloud 11. Quelques mois plus tard, un ajout est apparu contenant des informations « différentielles » sur l'installation de Nextcloud 13 sur Debian. 9. Fin 2018, je viens de mettre à jour Debian et Nextcloud et je n'ai rencontré aucun problème inhabituel ou intéressant. La mise à jour de fin 2019 était déjà plus intéressante et méritait d'être évoquée.

L'histoire de la création d'un cloud domestique. Partie 5. Mise à jour 2019 – PHP 7.2, MariaDB 10.4 et Nextcloud 17

Cet article sera principalement utile à ceux qui, selon les instructions des quatre articles précédents, ont « assemblé » Nextcloud 13 sur Debian 9 (je dis bonjour à une dizaine de mes abonnés sur le thème Nextcloud, notamment à ceux pour qui c'était leur première expérience dans le monde de Linux). Pour ceux qui envisagent de créer un service de toutes pièces, je vous conseille de vous baser sur les quatre premiers articles de cette série, adaptés aux versions actuelles de Debian 10 et Nextcloud 17. Pour les utilisateurs Linux expérimentés, l'article peut prendre un certain temps se situe entre « trivial et inutile » et « aide-mémoire pas mal, tout-en-un ».

table des matières

Partie 1 : Mettre en place un environnement Debian pour une utilisation quotidienne
Partie 2 : Création d'un serveur - configuration de LAMP sur Debian
Partie 3. Création d'un cloud personnel - installation et configuration de Nextcloud
Partie 4. Mise à jour 2018 – Debian 9 et Nextcloud 13
Partie 5. Mise à jour 2019 – PHP 7.2, MariaDB 10.4 et Nextcloud 17

Navigation rapide dans les chapitres

Avant-propos
Mise à jour Debian
Mise à jour de PHP vers la version 7.2
Mise à niveau de MariaDB vers la version 10.4
Mise à jour de Nextcloud vers la version 17
Postface

Avant-propos

Au départ, je voulais installer et configurer Nginx sur Debian 10, sur lequel l'actuel Nextcloud 17 pourrait être installé sans problème. Mais je n'ai pas trouvé le temps pour tout cela, donc cet article est un ensemble d'instructions pour la mise à jour. Nextcloud de 13 à la version actuelle 17 avec une préparation préalable du serveur web.

Tout d’abord, nous devons expliquer pourquoi des changements radicaux étaient nécessaires du côté du serveur Web. Notre serveur est basé sur Debian 9 actuel et pris en charge. Vous pouvez simplement mettre à jour le système d'exploitation et tous les composants du serveur Web recevront au moins des mises à jour de sécurité. Tout irait bien si nous continuions à utiliser Nextcloud 13 ou si nous mettions à jour uniquement vers la version 14. Mais Nextcloud 13 n'est plus pris en charge et la prise en charge de la 14e version est en voie de disparition. À partir de la version 15, Nexctcloud proposera de convertir la base de données en big int pour prendre en charge le codage sur quatre octets, et avec MariaDB 10.1, cela sera très problématique. Nexctcloud 17 nécessite PHP 7.1-7.3, tandis que Debian 9 ne contient que la version 7.0 dans ses référentiels natifs. Il serait plus correct, en termes de fiabilité et de prévisibilité, de passer à l'avant-dernière version de Nextcloud, mais après quelques années, je suis devenu tellement confiant dans la fiabilité de ce service que j'ai voulu passer à la dernière version et mettre à jour le serveur web avec une réserve pour l'avenir. Par conséquent, pour mettre à jour vers Nexctcloud 17, il est optimal de mettre à jour MariaDB vers la version stable actuelle 10.4 et PHP vers 7.2. Exactement 7.2, pas le 7.4 actuel. Le fait est que Nextcloud 13 nécessite PHP 5.6, 7.0 - 7.2 et Nexctcloud 17 nécessite PHP 7.1 - 7.3. Il est pratique d'utiliser PHP 7.2 afin de minimiser les efforts de mise à jour. Il n'est pas nécessaire de mettre à jour votre serveur Apache : installez simplement les mises à jour de sécurité distribuées par l'équipe de support Debian. Mais pour les mises à jour MariaDB et PHP vous devrez connecter des référentiels externes.

Alors que je faisais juste connaissance avec Nextcloud, je l'ai mis à jour « à la main » : à l'aide d'une commande spéciale de la console, le site est passé en mode maintenance, l'archive avec la nouvelle version du site a été téléchargée et décompressée manuellement, les fichiers ont été mis à jour et la procédure de mise à jour a été lancée. Une telle mise à jour conduisait généralement aux résultats escomptés, même si je n'étais pas paresseux pour faire une copie de sauvegarde du site, de la base de données et des données utilisateur. Mais les mises à jour automatiques ont parfois apporté toutes sortes de surprises. Mais c'était il y a longtemps, la stabilité du moteur a considérablement augmenté depuis, et cette fois j'ai effectué les mises à jour exclusivement via l'interface web. C'est vrai, je ne pouvais toujours pas m'éloigner de la ligne de commande. Lors d'une mise à jour itérative de chaque nouvelle version, divers avertissements et notifications apparaîtront dans le panneau de configuration, qui devront être « supprimés » en exécutant de manière significative des commandes sur la ligne de commande. Vous n’êtes pas obligé de le faire, le service fonctionnera toujours. Bien que cette approche soit fondamentalement fausse, Nextcloud a travaillé pour moi dans ce mode pendant 3 mois avant de résoudre délibérément les problèmes qui se sont posés.

Mise à jour Débain

Arrêtez 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 test de redémarrage pour vous assurer que tout démarre normalement après la mise à jour :

# cat /etc/debian_version
# reboot


Mise à jour de PHP vers la version 7.2

Arrêtez le serveur Web :

# service apache2 stop


Ajouter un certificat et des clés PPA, référentiel 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


Lors de la suppression de l'ancienne version de PHP 7.0, phpmyadmin sera également supprimé, puisque nous effacerons les « traces » des packages supprimés à l'aide de la suppression automatique. Cela ne posera pas de difficultés particulières, car aucun paramètre spécial n'a été défini pour phpmyadmin et sa réinstallation ne posera aucun problème.

# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin


Installation des modules requis 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


[ Ce texte écrit spécifiquement pour le site habr.com auteur AlexanderS.
Un lien vers la source est facultatif, mais le mentionner est fortement recommandé ! ]

Nous vérifions la version PHP, démarrons le serveur web et vérifions la fonctionnalité de Nextcloud :

# php -v
# service apache2 start


Mise à niveau de MariaDB vers la version 10.4

Sur le site Web du projet, il y a page intéressante, où vous devez indiquer votre système d'exploitation, sa version et sélectionner la version de la base de données. Une fois sélectionné, le code d'ajout du référentiel sera généré.

Arrêtez le serveur Web :

# service apache2 stop


Ajoutez un référentiel et mettez à jour les packages :

# 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 packages supprimera correctement la version précédente et installera la nouvelle, tandis que toutes les bases de données seront préservées. Cependant, il est bien entendu recommandé de faire une copie de sauvegarde de la base de données Nextcloud.

Installez MariaDB et lancez la procédure de mise à jour :

# apt-get install mariadb-server
# mysql_upgrade u root -p


Après avoir entré le mot de passe, MariaDB se mettra à jour et vous pourrez le configurer en suivant instructions de la deuxième partie:

# mysql_secure_installation


Nous lançons le serveur web et vérifions la fonctionnalité 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 sous un compte administratif, accéder aux paramètres et ouvrir les « Paramètres généraux » dans la section administrative. Nextcloud affiche la version installée et la version disponible pour la mise à jour, qui peut être lancée en cliquant sur le bouton « Ouvrir la fenêtre de mise à jour ». Une fois lancé, Nextcloud effectue une sauvegarde, télécharge et vérifie l'intégrité des fichiers de mise à jour, active le mode maintenance et met à jour les fichiers. Vient ensuite la question « Garder le mode maintenance actif » ? Vous devez être prudent 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, alors cliquez sur le bouton « Non » pour continuer.

Les mises à jour sont effectuées de manière itérative. Tout d'abord, Nextcloud 13.x sera mis à jour vers la dernière version de la branche 14.x. Après cela, vous devrez à nouveau accéder au centre d'administration et lancer la mise à jour, maintenant de 14.x à 15.x. Et ainsi de suite jusqu'à ce que la dernière version actuelle possible soit atteinte. Après chaque mise à jour, sur la page « Paramètres généraux » de la section administrative, une liste des suggestions et des problèmes rencontrés, ainsi que des recommandations pour les résoudre, sera affichée. Ci-dessous, nous parlerons de ce qui doit être fait après chaque mise à jour.

Jusqu'à la mise à jour

Sur les dernières versions de Nextcloud, il est recommandé d'activer PHP OPcache pour améliorer les performances. Il est étrange que j'aie raté ce point il y a quelques années, depuis qu'OPcache est apparu dans PHP 5. Dans /etc/php/7.2/apache2/php.ini, vous devez 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
pcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1


Mise à jour 13.x -> 14.x

Restauration des index de table :

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Mise à jour 14.x -> 15.x

Nous préparons la base de données nextcloud pour permettre le codage sur quatre octets :

# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit


Activez la prise en charge du codage sur quatre octets dans Nextcloud :

# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"


Conversion de tableaux :

# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair


Récupération des index de table perdus :

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Convertissez les index de table 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 de table perdus :

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices


Convertissez les index de table 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 n’est requise.

Postface

En suivant ces instructions, une machine virtuelle a été mise à jour avec Nextcloud 13. L'utilisation d'une machine virtuelle vous permet de ne pas faire de copies de sauvegarde des fichiers Nextcloud et de sa base de données, car en cas de problème, vous pouvez simplement restituer le fichier de la machine virtuelle précédemment enregistré et tout recommencer. encore. Cependant, cela ne s'applique pas au dossier contenant les données utilisateur, que je recommande également de sauvegarder avec la machine virtuelle avec Nextcloud. Dans mon cas, le "cloud" est utilisé comme dossier distant avec gestion automatique des versions, et avec le sens de synchronisation "seulement là", et la perte de ces données n'était pas critique pour moi - je devrais juste refaire la synchronisation pendant plusieurs heures . Malgré mon mépris pour la règle à vie « enregistrer au cas où », la mise à jour s'est déroulée sans aucun problème et tous les clients ont commencé à travailler avec Nextcloud 17 sans aucun problème. Je suis impressionné, Frank Karlitshek - vous et votre équipe faites un excellent travail. emploi!

Après la mise à jour, j'ai décidé d'effacer les données utilisateur qui, à en juger par les statistiques, occupaient environ deux téraoctets. Je n'avais pas beaucoup de données opérationnelles - la majeure partie du volume était occupée par les fichiers de version et les fichiers supprimés. Le problème que j'ai rencontré était que pour un utilisateur, il y avait tellement de données supprimées (ce n'est même pas une question de volume, mais de quantité - beaucoup 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. Peut-être que cela sera utile à quelqu'un.

Pour effacer les fichiers utilisateur supprimés :

# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user


Pour effacer les fichiers de version utilisateur :

# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup user

Revenir au début, à la table des matières.

L'histoire de la création d'un cloud domestique. Partie 5. Mise à jour 2019 – PHP 7.2, MariaDB 10.4 et Nextcloud 17
Version texte : 1.1.1.
Date de première publication : 15.01.2020/XNUMX/XNUMX.
Date de dernière modification : 15.01.2020/XNUMX/XNUMX.

Journal de mise à 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 nexcloud pour permettre le codage sur quatre octets.

1.0.0 [15-01-2020] Première version.

Source: habr.com