Vor zwei Jahren veröffentlichte ich eine Reihe von Artikeln über die Erstellung eines Webservers auf Basis von Debian 8 und den Betrieb des Nextcloud 11-Dienstes. Nach einigen Monaten erschien ein Update, das "differenzielle" Informationen zur Installation von Nextcloud 13 auf Debian 9 enthielt. Ende 2018 aktualisierte ich einfach Debian und Nextcloud und hatte keine ungewöhnlichen oder interessanten Probleme. Das Update Ende 2019 war bereits interessanter und es lohnte sich, darüber zu schreiben.

Dieser Artikel ist in erster Linie für diejenigen nützlich, die gemäß den Anleitungen der letzten vier Artikel ihr eigenes Nextcloud 13 auf Debian 9 "gebaut" haben (Grüße an meine zehn Abonnenten zum Thema Nextcloud, insbesondere an diejenigen, für die dies die erste Erfahrung in der Welt von Linux war). Denjenigen, die einen Dienst von Grund auf neu erstellen möchten, empfehle ich, die ersten vier Artikel dieser Reihe als Grundlage zu nehmen, mit Anpassungen für die aktuellen Versionen von Debian 10 und Nextcloud 17. Für erfahrene Linux-Nutzer könnte der Artikel irgendwo zwischen "trivial und nutzlos" und "nicht schlecht, eine Zusammenfassung an einem Ort" eingeordnet werden.
Inhaltsverzeichnis
Schnelle Navigation im Kapitel
Vorwort
Ursprünglich wollte ich Nginx auf Debian 10 installieren und konfigurieren, woraufhin problemlos die aktuelle Version von Nextcloud 17 installiert werden könnte. Aber dafür fand ich keine Zeit, weshalb dieser Artikel eine Sammlung von Anweisungen zur Aktualisierung von Nextcloud von 13 auf die aktuelle Version 17 mit der vorhergehenden Vorbereitung des Webservers darstellt.
Zunächst muss erklärt werden, warum radikale Änderungen auf der Webseite erforderlich wurden. Unser Server basiert auf dem aktuellen und unterstützten Debian 9. Man könnte einfach das Betriebssystem aktualisieren, und alle Komponenten des Webservers würden zumindest Sicherheitsupdates erhalten. Alles wäre großartig, wenn wir weiterhin Nextcloud 13 verwenden oder nur auf Version 14 aktualisieren würden. Aber Nextcloud 13 wird bereits nicht mehr unterstützt, und die Unterstützung für die 14. Version ist "am Auslaufen". Ab der Version 15 wird Nextcloud anbieten, die Datenbank in big int umzuwandeln, um eine vierbyte Kodierung zu unterstützen, und dies wird mit MariaDB 10.1 recht problematisch sein. Nextcloud 17 benötigt PHP 7.1-7.3, während Debian 9 in seinen offiziellen Repositories nur Version 7.0 enthält. Es wäre sinnvoller, in Bezug auf Zuverlässigkeit und Vorhersehbarkeit, auf die vorletzte Version von Nextcloud zu aktualisieren, aber in den letzten paar Jahren habe ich so viel Vertrauen in die Zuverlässigkeit dieses Dienstes gewonnen, dass ich auf die neueste Version aktualisieren und den Webserver für die Zukunft rüsten möchte. Daher ist es optimal, für ein Upgrade auf Nextcloud 17 MariaDB auf die aktuelle stabile Version 10.4 und PHP auf 7.2 zu aktualisieren. Genauer gesagt 7.2, und nicht die aktuelle 7.4. Der Grund dafür ist, dass Nextcloud 13 PHP 5.6, 7.0 - 7.2 benötigt und für Nextcloud 17 PHP 7.1 - 7.3 erforderlich ist. PHP 7.2 zu verwenden ist praktisch, um die Anzahl der Aktualisierungsschritte zu minimieren. Der Apache-Server muss nicht aktualisiert werden – es genügt, die Sicherheitsupdates zu installieren, die das Debian Support-Team bereitstellt. Für die Updates von MariaDB und PHP müssen jedoch externe Repositories hinzugezogen werden.
Als ich zum ersten Mal mit Nextcloud in Kontakt kam, habe ich die Updates "manuell" durchgeführt: über die Konsole mit einem speziellen Befehl wurde die Webseite in den Wartungsmodus versetzt, das Archiv mit der neuen Version wurde manuell heruntergeladen und entpackt, die Dateien aktualisiert und der Aktualisierungsprozess gestartet. Solche Updates führten in der Regel zu den gewünschten Ergebnissen, obwohl ich nicht faul war, eine Sicherung der Webseite, der Datenbank und der Benutzerdaten zu erstellen. Automatische Updates brachten jedoch manchmal Überraschungen mit sich. Das ist eine Weile her; die Stabilität der Software hat sich seitdem stark verbessert, und dieses Mal habe ich die Updates ausschließlich über die Web-Oberfläche durchgeführt. Allerdings ließ sich die Kommandozeile trotzdem nicht ganz meiden. Bei jeder neuen Version erscheinen im Kontrollpanel verschiedene Warnungen und Benachrichtigungen, die man "entsorgen" muss, indem man die entsprechenden Befehle in der Kommandozeile ausführt. Man kann das auch weglassen – der Dienst wird trotzdem laufen. Obwohl dieser Ansatz grundlegend falsch ist, hat Nextcloud bei mir in diesem Modus drei Monate funktioniert, bevor ich mich gezielt mit den aufgetretenen Fragen beschäftigt habe.
Debian-Update
Webserver anhalten:
# service apache2 stop
Und aktualisieren:
# apt-get update
# apt-get dist-upgrade
Nach dem Update kann die Version des Betriebssystems überprüft und ein Neustart durchgeführt werden, um sicherzustellen, dass nach dem Update alles normal startet:
# cat /etc/debian_version
# reboot
PHP auf Version 7.2 aktualisieren
Webserver anhalten:
# service apache2 stop
Zertifikat und PPA-Schlüssel hinzufügen, PHP-Repository:
# 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
Beim Entfernen der alten PHP 7.0-Version wird auch phpmyadmin entfernt, da wir die "Spuren" von entfernten Paketen mit autoremove beseitigen. Das wird keine größeren Schwierigkeiten bereiten, da keine speziellen Einstellungen für phpmyadmin vorgenommen wurden und es keine Probleme geben wird, es erneut zu installieren.
# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin
Installation der für Nextcloud 17 erforderlichen Module:
# 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
[ wurde speziell für die Webseite vom Autor .
Ein Link zur Quelle ist nicht erforderlich, wird aber dringend empfohlen! ]
Die PHP-Version prüfen, den Webserver starten und die Funktionsfähigkeit von Nextcloud testen:
# php -v
# service apache2 start
MariaDB auf Version 10.4 aktualisieren
Auf der Projektwebseite gibt es eine , auf der man sein Betriebssystem, dessen Version und die Datenbankversion angeben muss. Nach der Auswahl wird ein Code für die Hinzufügung des Repositories generiert.
Webserver anhalten:
# service apache2 stop
Repository hinzufügen und Pakete aktualisieren:
# 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
Bei der Installation von MariaDB entfernt der Paketmanager die vorherige Version korrekt und installiert die neue, während alle Datenbanken erhalten bleiben. Es wird jedoch empfohlen, ein Backup der Nextcloud-Datenbank zu erstellen.
Wir installieren MariaDB und starten die Upgrade-Prozedur:
# apt-get install mariadb-server
# mysql_upgrade u root -p
Nach der Eingabe des Passworts wird MariaDB aktualisiert, und Sie können es konfigurieren, indem Sie den :
# mysql_secure_installation
Wir starten den Webserver und überprüfen die Funktionalität von Nextcloud:
# service apache2 start
Nextcloud auf Version 17 aktualisieren
Um das Upgrade zu starten, müssen Sie sich mit einem Administratorkonto bei dem Dienst anmelden, zu den Einstellungen navigieren und die "Allgemeinen Einstellungen" im Administrationsbereich öffnen. Nextcloud zeigt die installierte Version sowie die verfügbare Version für das Update an, das gestartet werden kann, indem Sie auf die Schaltfläche "Update-Fenster öffnen" klicken. Nach der Initiierung erstellt Nextcloud ein Backup, lädt die Update-Dateien herunter und überprüft deren Integrität, aktiviert den Wartungsmodus und aktualisiert die Dateien. Dann folgt die Frage "Wartungsmodus aktiv halten"? Hier ist Vorsicht geboten. Eine positive Antwort lässt die Seite im Wartungsmodus, was bedeutet, dass der Administrator weiß, was als Nächstes zu tun ist und dies manuell erledigt. Andernfalls wird Nextcloud alles selbst erledigen, daher drücken wir zur Fortsetzung die Schaltfläche "Nein".
Updates erfolgen iterativ. Zunächst wird Nextcloud 13.x auf die letzte Version des 14.x-Zweigs aktualisiert. Danach müssen Sie erneut ins Admin-Panel gehen und das Update erneut starten, nun von 14.x auf 15.x. Und so weiter, bis die letzte verfügbare aktuelle Version erreicht ist. Nach jedem Update wird in den "Allgemeinen Einstellungen" im Administrationsbereich eine Liste von Vorschlägen und aufgetretenen Problemen sowie Empfehlungen zu deren Lösung angezeigt. Im Folgenden wird erläutert, was nach jedem Update zu tun ist.
Vor dem Update
In den neuesten Versionen von Nextcloud wird empfohlen, PHP OPcache zu aktivieren, um die Leistung zu verbessern. Es ist merkwürdig, dass ich diesen Punkt vor ein paar Jahren irgendwie übersehen habe, da OPcache bereits in PHP 5 eingeführt wurde. In der Datei /etc/php/7.2/apache2/php.ini müssen die folgenden Parameter auskommentiert und bearbeitet werden:
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
Update 13.x -> 14.x
Wir stellen die Indizes der Tabellen wieder her:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Update 14.x -> 15.x
Wir bereiten die Nextcloud-Datenbank für die Aktivierung der vier Byte-Kodierung vor:
# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit
Aktivieren Sie die Unterstützung der vier Byte-Kodierung in Nextcloud:
# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"
Tabellen umwandeln:
# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
Wiederherstellen verlorener Tabellenindizes:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Tabellenindizes in bigint umwandeln:
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Aktualisierung 15.x -> 16.x
Wiederherstellen verlorener Tabellenindizes:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Tabellenindizes in bigint umwandeln:
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Aktualisierung 16.x -> 17.x
Es sind keine zusätzlichen Maßnahmen erforderlich.
Nachwort
Nach dieser Anleitung wurde die virtuelle Maschine mit Nextcloud 13 aktualisiert. Die Verwendung einer virtuellen Maschine ermöglicht es, keine Backups der Nextcloud-Dateien und der Datenbank zu erstellen, da im Falle von Problemen einfach die im Voraus gesicherte Datei der virtuellen Maschine zurückgegeben und alles neu gestartet werden kann. Dies betrifft jedoch nicht den Ordner mit Benutzerdaten, den ich ebenfalls empfehlen würde, zusammen mit der virtuellen Maschine von Nextcloud zu sichern. In meinem Fall wird die „Cloud“ als Remote-Ordner mit automatischer Versionierung verwendet, wobei die Synchronisationsrichtung „nur dahin“ ist, und der Verlust dieser Daten war für mich nicht kritisch – ich müsste einfach ein paar Stunden erneut die Synchronisation durchführen. Trotz meines Missachtens der erprobten Lebensregel „Speichere für alle Fälle“ verlief das Update problemlos, und alle Clients arbeiteten ebenfalls problemlos mit Nextcloud 17. Ich bin beeindruckt, Frank Karlitschke – Sie und Ihr Team leisten großartige Arbeit!
Nach dem Update habe ich beschlossen, die Benutzerdaten zu bereinigen, die laut Statistik fast zwei Terabyte beansprucht haben. So viele temporäre Daten hatte ich nicht – der Großteil des Volumens bestand aus Versionsdateien und gelöschten Dateien. Das Problem, dem ich gegenüberstand, war, dass es für einen Benutzer so viele gelöschte Daten gab (es ging nicht einmal um das Volumen, sondern um die Menge – sehr viele kleine Dateien), dass Nextcloud sie im Web-Interface nicht anzeigen konnte. Nach der Durchsicht des Administrationshandbuchs fand ich eine Lösung über die Kommandozeile. Vielleicht ist das für jemanden hilfreich.
Zur Bereinigung der gelöschten Dateien des Benutzers user:
# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user
Zur Bereinigung der Versionsdateien des Benutzers user:
# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup userZurückkehren .
Entstehungsgeschichte der privaten Cloud. Teil 5. Aktualisierung 2019 – PHP 7.2, MariaDB 10.4 und Nextcloud 17
Version des Textes: 1.1.1.
Datum der ersten Veröffentlichung: 15.01.2020.
Datum der letzten Bearbeitung: 15.01.2020.
Änderungsprotokoll1.1.1 [15-01-2020]
Rechtschreibfehler behoben.
1.1.0 [15-01-2020]
Der Code zur Vorbereitung der Nextcloud-Datenbank zur Aktivierung der vier Byte-Kodierung wurde korrigiert.
1.0.0 [15-01-2020]
Erste Version.
Quelle: habr.com
