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 le lancement du service Nextcloud sur celui-ci. Quelques mois plus tard, il y avait un module complémentaire contenant des informations "différentielles" sur l'installation de Nextcloud 13 sur Debian 9. À la fin de 2018, je mis à jour Debian et Nextcloud et n'a rencontré aucun problème inhabituel ou intéressant. La mise à jour fin 2019 était déjà plus intéressante et méritait d'être écrite.



Cet article sera principalement utile à ceux qui, selon les instructions des quatre derniers articles, ont "collecté" Nextcloud 13 sur Debian 9 (j'envoie des salutations à dix de mes abonnés sur Nextcloud, en particulier à ceux pour qui c'était la première expérience dans le monde Linux). Pour ceux qui vont faire un service à partir de zéro, je vous conseille de prendre comme base les quatre premiers articles de cette série, ajustés pour les versions actuelles de Debian 10 et Nextcloud 17. Pour les utilisateurs Linux expérimentés, l'article peut se situer entre «trivial et inutile» et «pas mal, triche tout-en-un. "



Table des matières


Partie 1. Configurer votre environnement Debian pour un usage quotidien
Partie 2. Créer un serveur - configurer LAMP dans 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


Préface
Mise à jour Debian
Mise à jour PHP vers la version 7.2
Mettre à jour MariaDB vers la version 10.4
Mise à jour de Nextcloud vers la version 17
Postface



Préface


Au départ, je voulais installer et configurer Nginx sur Debian 10, au-dessus duquel le Nextcloud 17 actuel aurait été installé sans problème. Mais pour tout cela, je ne pouvais pas choisir l'heure, donc cet article est un ensemble d'instructions pour mettre à niveau Nextcloud de 13 à la version 17 actuelle à partir de la version préliminaire préparer un serveur web.

Vous devez d'abord expliquer pourquoi des changements radicaux étaient nécessaires du côté du serveur Web. Notre serveur est basé sur la Debian 9 actuelle et prise 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 serait formidable si nous utilisions davantage Nextcloud 13 ou si nous ne mettions à niveau que la version 14. Mais Nextcloud 13 n'est plus pris en charge et la prise en charge de la 14e version est à la volée. À partir de la 15e version, Nexctcloud proposera de convertir la base de données en big int pour prendre en charge le codage à 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 pendant quelques années, j'étais si sûr de la fiabilité de ce service que je voulais passer à la dernière version et mettre à jour le serveur Web avec une réserve pour l'avenir. Par conséquent, pour mettre à niveau vers Nexctcloud 17, il est optimal de mettre à niveau MariaDB vers la version stable actuelle 10.4 et PHP vers 7.2. C'est 7.2, et non pertinent 7.4. 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. L'utilisation de PHP 7.2 est pratique afin de minimiser les actions de mise à niveau. Le serveur Apache n'a pas besoin d'être mis à jour - installez simplement les mises à jour de sécurité qui sont distribuées par l'équipe de support Debian. Mais pour les mises à jour, MariaDB et PHP devront connecter des référentiels externes.

Lorsque j'ai rencontré Nextcloud pour la première fois, je l'ai mis à jour «à la main»: le site Web a été mis en mode maintenance depuis la console par une équipe spéciale, 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 commencé. Une telle mise à jour a généralement abouti aux résultats escomptés, même si je n'étais pas paresseux à 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 provoqué toutes sortes de surprises. Mais c'était il y a longtemps, la stabilité du moteur a considérablement augmenté depuis lors, et cette fois j'ai fait des mises à jour exclusivement via l'interface web. Certes, il n'était toujours pas possible de sortir de la ligne de commande. Lors d'une mise à jour itérative pour 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 ne pouvez pas faire cela - le service fonctionnera de toute façon. Bien que cette approche soit fondamentalement erronée, Nextcloud a travaillé pour moi pendant 3 mois dans ce mode avant de résoudre délibérément les problèmes qui se posaient.



Mise à jour Debain


Arrêtez le serveur Web:

# service apache2 stop 

Et mis à 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 normalement après la mise à jour:

 # cat /etc/debian_version # reboot 



Mise à jour 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 

Si vous supprimez l'ancienne version de PHP 7.0, phpmyadmin sera également supprimé, car nous allons nettoyer les «traces» des packages supprimés à l'aide de la suppression automatique. Cela ne causera pas beaucoup de difficultés, car aucun paramètre spécial n'a été fait 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 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 

[ Ce texte a été écrit spécifiquement pour habr.com par AlexanderS .
Le lien vers la source est facultatif, mais sa référence est hautement souhaitable! ]

Nous vérifions la version de PHP, démarrons le serveur web et vérifions l'opérabilité de Nextcloud:

 # php -v # service apache2 start 



Mettre à jour MariaDB vers la version 10.4


Le site Web du projet a une page intéressante sur laquelle 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 sera généré pour ajouter le référentiel.

Arrêtez le serveur Web:

 # service apache2 stop 

Ajouter un référentiel et mettre à jour des 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, toutes les bases de données seront enregistrées. Cependant, la sauvegarde de la base de données Nextcloud est bien sûr recommandée.

Installez MariaDB et exécutez 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 sera mis à jour et il sera possible de le configurer, en suivant les instructions de la deuxième partie :

 # mysql_secure_installation 

Nous démarrons le serveur Web et vérifions les performances 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 une entrée administrative, procé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". 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. Ce qui suit est la question «Garder le mode de maintenance actif»? Vous devez être prudent ici. Une réponse positive laissera le site en mode maintenance - il est supposé que l'administrateur sait quoi faire ensuite et le fait manuellement. Sinon, Nextcloud fera tout par lui-même, alors cliquez sur «Non» pour continuer.

Les mises à jour sont effectuées de manière itérative. Nextcloud 13.x passera d'abord à la dernière version de la branche 14.x. Après cela, vous devrez retourner au centre d'administration et démarrer 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 de suggestions et de problèmes rencontrés, ainsi que des recommandations pour les résoudre, s'afficheront. Ci-dessous, nous parlerons de ce qui devra être fait après chaque mise à jour.

Avant la mise à jour

Sur les versions récentes de Nextcloud, il est recommandé d'activer PHP OPcache pour améliorer les performances. Il est étrange que j'ai raté ce moment il y a quelques années, car OPcache est apparu en 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

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 activer 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" 

Nous transformons les tables:

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

Récupérez les indices de table perdus:

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

Convertissez les indices 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érez les indices de table perdus:

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

Convertissez les indices de table en bigint:

 # sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint 

Mise à jour 16.x -> 17.x

Aucune autre action n'est requise.



Postface



Suite à cette instruction, la machine virtuelle avec Nextcloud 13 a été mise à jour. L'utilisation de la machine virtuelle vous permet de ne pas sauvegarder les fichiers Nextcloud et sa base de données, car en cas de problème, vous pouvez simplement retourner le fichier de la machine virtuelle précédemment enregistré et recommencer à nouveau. Cependant, cela ne s'applique pas au dossier de données utilisateur, que je recommande également de sauvegarder avec la machine virtuelle Nextcloud. Dans mon cas, le «cloud» est utilisé comme dossier distant avec versioning automatique, d'ailleurs, avec le sens de synchronisation «seulement là», et pour moi la perte de ces données n'était pas critique - il me suffirait de synchroniser à nouveau pendant plusieurs heures. Malgré ma négligence de la règle «rester en sécurité au cas où» élaborée par ma vie, la mise à jour s'est bien déroulée et tous les clients ont également gagné de l'argent avec Nextcloud 17 sans aucun problème. Je suis impressionné, Frank Karlitshek - 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, à en juger par les statistiques, ont pris deux téraoctets. Je n'avais pas autant de données opérationnelles - la plupart du volume était occupé par des fichiers de version et des fichiers supprimés. Le problème que j'ai rencontré était qu'il y avait tellement de données supprimées pour un utilisateur (ce n'est même pas le volume, mais la quantité - beaucoup de petits fichiers) que Nextcloud ne pouvait pas les afficher dans l'interface Web. Après avoir étudié le guide d'administration, j'ai trouvé la solution via la ligne de commande. Peut-être que cela sera utile pour quelqu'un.

Pour effacer les fichiers supprimés de l'utilisateur utilisateur:

 # 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 



Revenez 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.
Dernière modification: 15/01/2020.

Journal de mise à jour
1.1.1 [15-01-2020]
Correction des fautes de frappe.

1.1.0 [15-01-2020]
Le code de préparation de la base de données nexcloud pour activer le codage sur quatre octets a été corrigé.

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

Source: https://habr.com/ru/post/fr483842/


All Articles