Vor zwei Jahren veröffentlichte ich eine Artikelreihe über die Erstellung eines Webservers auf Basis von Debian 8 und den Betrieb des Nextcloud 11-Dienstes. Einige Monate später erschien ein Update mit „differenzierten“ Informationen zur Installation von Nextcloud 13 auf Debian 9. Ende 2018 aktualisierte ich einfach Debian und Nextcloud und stieß dabei auf keine ungewöhnlichen oder interessanten Probleme. Das Update Ende 2019 war bereits interessanter und es lohnte sich, darüber zu schreiben.

Dieser Artikel wird vor allem für diejenigen nützlich sein, die sich anhand der Anleitungen der letzten vier Artikel Nextcloud 13 auf Debian 9 „zusammengebaut“ haben (ein Gruß an meine zehn Abonnenten zum Thema Nextcloud, insbesondere an diejenigen, für die dies die erste Erfahrung mit Linux war). Denjenigen, die den Dienst von Grund auf neu erstellen, empfehle ich, die ersten vier Artikel dieser Reihe als Grundlage zu nehmen, jedoch mit Anpassungen für die aktuellen Versionen Debian 10 und Nextcloud 17. Für erfahrene Linux-Benutzer kann dieser Artikel irgendwo zwischen „trivial und nutzlos“ und „nicht schlecht, eine praktische Anleitung in einem Stück“ angesiedelt sein.
Inhaltsverzeichnis
Schnelle Navigation im Kapitel
Vorwort
Ursprünglich wollte ich Nginx unter Debian 10 einrichten und konfigurieren, woraufhin problemlos das aktuelle Nextcloud 17 installiert werden könnte. Aber ich konnte dafür einfach keine Zeit finden, daher enthält dieser Artikel eine Sammlung von Anleitungen zur Aktualisierung von Nextcloud von 13 auf die aktuelle Version 17, mit vorheriger Vorbereitung des Webservers.
Zunächst muss erklärt werden, warum radikale Änderungen auf der Seite des Webservers erforderlich sind. 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 mindestens Sicherheitsupdates erhalten. Das wäre großartig, wenn wir Nextcloud 13 weiter verwenden oder nur auf Version 14 aktualisieren würden. Aber Nextcloud 13 wird nicht mehr unterstützt, und die Unterstützung für die 14. Version neigt sich dem Ende zu. Ab Version 15 wird Nextcloud vorschlagen, die Datenbank in big int umzuwandeln, um vier Byte-Encoding zu unterstützen, und dies mit MariaDB 10.1 wird ziemlich problematisch sein. Nextcloud 17 benötigt PHP 7.1-7.3, während Debian 9 in seinen ursprünglichen Repositories nur Version 7.0 enthält. Im Hinblick auf Zuverlässigkeit und Vorhersehbarkeit wäre es besser gewesen, auf die vorletzte Version von Nextcloud zu aktualisieren, aber in den letzten zwei Jahren habe ich so viel Vertrauen in die Zuverlässigkeit dieses Dienstes gewonnen, dass ich auf die neueste Version aktualisieren und den Webserver zukunftssicher machen wollte. Daher ist es optimal, für die Aktualisierung auf Nextcloud 17 MariaDB auf die aktuelle stabile Version 10.4 und PHP auf 7.2 zu aktualisieren. Genau 7.2, nicht die aktuelle 7.4. Der Grund ist, dass Nextcloud 13 PHP 5.6, 7.0–7.2 benötigt, während Nextcloud 17 PHP 7.1–7.3 verlangt. PHP 7.2 zu verwenden, erleichtert die Minimierung der Aktualisierungsschritte. Den Apache-Server braucht man nicht zu aktualisieren – es reicht, die Sicherheitsupdates zu installieren, die das Debian-Support-Team herausgibt. Für die Aktualisierung von MariaDB und PHP müssen jedoch externe Repositories hinzugefügt werden.
Als ich mich zum ersten Mal mit Nextcloud vertrautmachte, aktualisierte ich es „manuell“: über die Konsole wurde die Website mit einem speziellen Befehl in den Wartungsmodus versetzt, das Archiv mit der neuen Version wurde manuell heruntergeladen und entpackt, die Dateien wurden aktualisiert und der Aktualisierungsprozess wurde gestartet. Solche Updates führten normalerweise zu den erwarteten Ergebnissen, obwohl ich es mir nicht nehmen ließ, ein Backup der Website, der Datenbank und der Benutzerdaten zu erstellen. Automatische Updates führten jedoch manchmal zu unerwarteten Überraschungen. Aber das ist lange her, die Stabilität der Engine hat seitdem stark zugenommen, und diesmal führte ich die Aktualisierungen ausschließlich über die Weboberfläche durch. Allerdings gelang es mir nicht, der Befehlszeile ganz zu entkommen. Bei der schrittweisen Aktualisierung erscheinen bei jeder neuen Version in der Verwaltungsoberfläche verschiedene Warnungen und Benachrichtigungen, die entfernt werden müssen, indem die entsprechenden Befehle in der Befehlszeile ausgeführt werden. Man kann das auch ignorieren – der Dienst wird trotzdem funktionieren. Obwohl dieser Ansatz prinzipiell falsch ist, lief Nextcloud bei mir drei Monate lang in diesem Modus, bevor ich gezielt die aufgetauchten Fragen klärte.
Debian aktualisieren
Webserver anhalten:
# service apache2 stop
Und aktualisieren:
# apt-get update
# apt-get dist-upgrade
Nach dem Update kann die OS-Version überprüft und ein Neustart durchgeführt werden, um sicherzustellen, dass nach dem Update alles ordnungsgemäß funktioniert:
# cat /etc/debian_version
# reboot
PHP auf Version 7.2 aktualisieren
Webserver anhalten:
# service apache2 stop
Wir fügen das Zertifikat und die PPA-Schlüssel, das PHP-Repository hinzu:
# 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
Wenn die alte PHP 7.0 Version deinstalliert wird, wird auch phpmyadmin entfernt, da wir die „Spuren“ von entfernten Paketen mit autoremove bereinigen. Das sollte keine besonderen Schwierigkeiten bereiten, da keine speziellen Einstellungen für phpmyadmin vorgenommen wurden und die erneute Installation problemlos möglich ist.
# apt-get purge php7*
# apt-get --purge autoremove
# apt-get update
# apt-get install php7.2 phpmyadmin
Installation der für Nextcloud 17 benötigten 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 Website geschrieben von .
Ein Verweis auf die Quelle ist nicht erforderlich, aber dessen Erwähnung ist sehr wünschenswert!
Wir überprüfen die PHP-Version, starten den Webserver und testen die Funktionsfähigkeit von Nextcloud:
# php -v
# service apache2 start
MariaDB auf Version 10.4 aktualisieren
Auf der Projektseite gibt es , auf der das System, die Version und die Datenbankversion ausgewählt werden müssen. Nach der Auswahl wird ein Code zum Hinzufügen des Repositories generiert.
Webserver anhalten:
# service apache2 stop
Wir fügen das Repository hinzu und aktualisieren die Pakete:
# 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, dabei bleiben alle Datenbanken erhalten. Es wird jedoch dringend empfohlen, ein Backup der Nextcloud-Datenbank zu erstellen.
Wir installieren MariaDB und starten den Aktualisierungsprozess:
# apt-get install mariadb-server
# mysql_upgrade u root -p
Nach Eingabe des MariaDB-Passworts wird die Installation aktualisiert und kann konfiguriert werden, indem wir den :
# mysql_secure_installation
Wir starten den Webserver und überprüfen die Funktionsfähigkeit von Nextcloud:
# service apache2 start
Nextcloud auf Version 17 aktualisieren
Um das Update zu starten, müssen Sie sich mit einem Administratorkonto im Dienst anmelden, zu den Einstellungen navigieren und „Allgemeine Einstellungen“ im Administrationsbereich öffnen. Nextcloud zeigt die installierte Version und die verfügbare Version zum Update an, die mit einem Klick auf die Schaltfläche „Update-Fenster öffnen“ gestartet werden kann. Nach der Initiierung erstellt Nextcloud ein Backup, lädt die Update-Dateien herunter und überprüft deren Integrität, schaltet den Wartungsmodus ein und aktualisiert die Dateien. Es folgt die Frage „Wartungsmodus aktiv halten“? Hier muss man vorsichtig sein. Ein Ja lässt die Website im Wartungsmodus, es wird davon ausgegangen, dass der Administrator weiß, was als Nächstes zu tun ist und das manuell erledigt. Andernfalls erledigt Nextcloud alles selbst, daher drücken wir zur Fortsetzung die Schaltfläche „Nein“.
Die Aktualisierungen erfolgen iterativ. Zuerst wird Nextcloud 13.x auf die neueste Version der 14.x Reihe aktualisiert. Danach müssen Sie erneut ins Admin-Center gehen und das Update starten, diesmal von 14.x auf 15.x. Und so weiter, bis die letzte verfügbare Version erreicht ist. Nach jedem Update wird auf der Seite „Allgemeine Einstellungen“ im Administrationsbereich eine Liste von Vorschlägen, auftretenden Problemen und Empfehlungen zu deren Lösung angezeigt. Im Folgenden wird beschrieben, 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 seltsam, dass ich diesen Punkt vor ein paar Jahren übersehen habe, da OPcache bereits in PHP 5 eingeführt wurde. In /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
opcache.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 auf die Unterstützung der vierbyteigen Kodierung vor:
# mysql -u root -p
MariaDB [(none)]> ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> quit
Wir aktivieren die Unterstützung der vierbyteigen Kodierung in Nextcloud:
# sudo -u www-data php /var/www/nextcloud/occ config:system:set mysql.utf8mb4 --type boolean --value="true"
Wir wandeln die Tabellen um:
# sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
Wir stellen die verlorenen Indizes der Tabellen wieder her:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Wir wandeln die Indizes der Tabellen in bigint um:
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Update 15.x -> 16.x
Wir stellen die verlorenen Indizes der Tabellen wieder her:
# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
Wir wandeln die Indizes der Tabellen in bigint um:
# sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint
Update 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 zuvor gesicherte Datei der virtuellen Maschine wiederhergestellt werden kann, um von vorne zu beginnen. Dies betrifft jedoch nicht den Ordner mit Benutzerdaten, den ich ebenfalls zusammen mit der virtuellen Maschine von Nextcloud empfehlen würde zu sichern. In meinem Fall wird die „Cloud“ als entfernte Mappe mit automatischer Versionskontrolle verwendet, wobei die Synchronisierung auf „nur dorthin“ eingestellt ist, und der Verlust dieser Daten wäre nicht kritisch — ich müsste einfach ein paar Stunden erneut mit der Synchronisierung verbringen. Trotz meines Missachtens der in meinem Leben erarbeiteten Regel „Sichere dich 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 ausgezeichnete Arbeit!
Nach dem Update beschloss ich, die Benutzerdaten zu bereinigen, die laut Statistik fast zwei Terabyte beanspruchten. So viele temporäre Daten hatte ich nicht – der größte Teil des Speichers wurde von Versionsdateien und gelöschten Dateien eingenommen. Das Problem, dem ich gegenüberstand, war, dass es für einen Benutzer so viele gelöschte Daten gab (es ging nicht um den Speicherplatz, sondern um die Anzahl – sehr viele kleine Dateien), dass Nextcloud sie im Webinterface nicht anzeigen konnte. Nach der Durchsicht des Administrationshandbuchs fand ich eine Lösung über die Kommandozeile. Vielleicht ist das für jemanden hilfreich.
Um die gelöschten Dateien des Benutzers user zu bereinigen:
# sudo -u www-data php /var/www/nextcloud/occ trashbin:cleanup user
Um die Versionsdateien des Benutzers user zu bereinigen:
# sudo -u www-data php /var/www/nextcloud/occ versions:cleanup userZurück .
Die Geschichte der Erstellung einer privaten Cloud. Teil 5. Aktualisierung 2019 – PHP 7.2, MariaDB 10.4 und Nextcloud 17
Textversion: 1.1.1.
Datum der ersten Veröffentlichung: 15.01.2020.
Datum der letzten Änderung: 15.01.2020.
Änderungsprotokoll1.1.1 [15-01-2020]
Rechtschreibfehler behoben.
1.1.0 [15-01-2020]
Der Code zur Vorbereitung der nexcloud-Datenbank auf die Unterstützung der Vier-Byte-Kodierung wurde korrigiert.
1.0.0 [15-01-2020]
Erste Version.
Quelle: habr.com
