De geschiedenis van de creatie van een thuiswolk. Deel 5. Update 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17

Twee jaar geleden publiceerde ik een reeks artikelen over het creëren van een webserver op basis van Debian 8 en het daarop draaien van de dienst Nextcloud 11. Een paar maanden later verscheen er een toevoeging met "differentiële" informatie over het installeren van Nextcloud 13 op Debian 9. Eind 2018 heb ik Debian en Nextcloud bijgewerkt en ben ik geen ongebruikelijke of interessante problemen tegengekomen. De update eind 2019 was al interessanter en de moeite waard om over te schrijven.

De geschiedenis van de creatie van een thuiswolk. Deel 5. Update 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17

Dit artikel zal in de eerste plaats nuttig zijn voor degenen die, volgens de instructies van de vorige vier artikelen, Nextcloud 13 op Debian 9 hebben “geassembleerd” (ik zeg hallo tegen ongeveer een dozijn van mijn abonnees over het onderwerp Nextcloud, vooral tegen degenen voor wie dit was hun eerste ervaring in de wereld van Linux). Voor degenen die van plan zijn een dienst helemaal opnieuw op te zetten, raad ik je aan om als basis de eerste vier artikelen van deze serie te nemen, aangepast voor de huidige versies van Debian 10 en Nextcloud 17. Voor ervaren Linux-gebruikers kan het artikel wat tijd in beslag nemen. plaats tussen ‘triviaal en nutteloos’ en ‘niet slecht, alles-in-één-spiekbriefje’.

inhoudsopgave

Deel 1: Een Debian-omgeving opzetten voor dagelijks gebruik
Deel 2: Een server creëren - LAMP instellen op Debian
Deel 3. Een persoonlijke cloud creëren - Nextcloud installeren en configureren
Deel 4. Update 2018 – Debian 9 en Nextcloud 13
Deel 5. Update 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17

Snelle hoofdstuknavigatie

Voorwoord
Debian-update
PHP updaten naar versie 7.2
MariaDB upgraden naar versie 10.4
Nextcloud updaten naar versie 17
nawoord

Voorwoord

In eerste instantie wilde ik Nginx installeren en configureren op Debian 10, waarboven zonder problemen de huidige Nextcloud 17 geïnstalleerd kon worden, maar daar kon ik de tijd niet voor vinden, dus dit artikel is een set instructies voor het updaten Nextcloud van 13 naar de huidige versie 17 met een voorbereidende voorbereiding van de webserver.

Eerst moeten we uitleggen waarom radicale veranderingen nodig waren aan de kant van de webserver. Onze server is gebaseerd op het huidige en ondersteunde Debian 9. U kunt eenvoudig het besturingssysteem updaten en alle onderdelen van de webserver ontvangen minimaal beveiligingsupdates. Alles zou geweldig zijn als we Nextcloud 13 zouden blijven gebruiken of alleen zouden updaten naar versie 14. Maar Nextcloud 13 wordt niet langer ondersteund en de ondersteuning voor de 14e versie is onderweg. Vanaf versie 15 zal Nexctcloud aanbieden om de database naar big int te converteren om codering van vier bytes te ondersteunen, en met MariaDB 10.1 zal dit zeer problematisch zijn. Nexctcloud 17 vereist PHP 7.1-7.3, terwijl Debian 9 alleen versie 7.0 bevat in de eigen repository's. Het zou qua betrouwbaarheid en voorspelbaarheid juister zijn om te upgraden naar de voorlaatste versie van Nextcloud, maar na een paar jaar kreeg ik zoveel vertrouwen in de betrouwbaarheid van deze dienst dat ik wilde upgraden naar de nieuwste versie en de webserver met een reserve voor de toekomst. Om te updaten naar Nexctcloud 17 is het daarom optimaal om MariaDB te updaten naar de huidige stabiele versie 10.4 en PHP naar 7.2. Precies 7.2, niet de huidige 7.4. Feit is dat Nextcloud 13 PHP 5.6, 7.0 - 7.2 vereist, en Nextcloud 17 PHP 7.1 - 7.3 vereist. Het is handig om PHP 7.2 te gebruiken om de update-inspanningen te minimaliseren. Het is niet nodig om uw Apache-server te updaten; installeer gewoon de beveiligingsupdates die door het ondersteuningsteam van Debian worden verspreid. Maar voor MariaDB- en PHP-updates zul je externe repositories moeten verbinden.

Toen ik net kennis maakte met Nextcloud, heb ik het “met de hand” bijgewerkt: met behulp van een speciaal commando van de console werd de site overgeschakeld naar de onderhoudsmodus, het archief met de nieuwe versie van de site werd handmatig gedownload en uitgepakt, de bestanden zijn bijgewerkt en de updateprocedure is gestart. Zo'n update leidde meestal tot de verwachte resultaten, al was ik niet lui in het maken van een back-up van de site, database en gebruikersgegevens. Maar automatische updates leidden soms tot allerlei verrassingen. Maar dat is lang geleden, de stabiliteit van de engine is sindsdien enorm toegenomen en deze keer heb ik updates uitsluitend via de webinterface aangebracht. Toegegeven, ik kon nog steeds niet wegkomen van de opdrachtregel. Tijdens een iteratieve update van elke nieuwe versie verschijnen er verschillende waarschuwingen en meldingen in het controlepaneel, die moeten worden “verwijderd” door zinvol opdrachten uit te voeren op de opdrachtregel. U hoeft dit niet te doen: de service werkt nog steeds. Hoewel deze aanpak fundamenteel verkeerd is, heeft Nextcloud drie maanden voor mij in deze modus gewerkt voordat ik doelbewust de problemen aanpakte die zich voordeden.

Debain-update

Stop de webserver:

# service apache2 stop


En wij updaten:

# apt-get update
# apt-get dist-upgrade


Na de update kunt u de versie van het besturingssysteem controleren en een herstarttest uitvoeren om er zeker van te zijn dat alles normaal start na de update:

# cat /etc/debian_version
# reboot


PHP updaten naar versie 7.2

Stop de webserver:

# service apache2 stop


Certificaat en PPA-sleutels toevoegen, 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


Bij het verwijderen van de oude versie van PHP 7.0 wordt phpmyadmin ook verwijderd, omdat we de “sporen” van de verwijderde pakketten zullen wissen met behulp van autoremove. Dit zal geen bijzondere problemen veroorzaken, aangezien er geen speciale instellingen zijn gemaakt voor phpmyadmin en het opnieuw installeren ervan geen problemen zal opleveren.

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


Modules installeren die nodig zijn voor 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


[ Deze tekst speciaal voor de site geschreven www.habr.com door de auteur Alexander S.
Een link naar de bron is optioneel, maar het vermelden ervan wordt sterk aanbevolen! ]

We controleren de PHP-versie, starten de webserver en controleren de functionaliteit van Nextcloud:

# php -v
# service apache2 start


MariaDB upgraden naar versie 10.4

Op de projectwebsite staat interessante pagina, waar u uw besturingssysteem en de release ervan moet aangeven en de databaseversie moet selecteren. Eenmaal geselecteerd, wordt de code voor het toevoegen van de repository gegenereerd.

Stop de webserver:

# service apache2 stop


Voeg een repository toe en update pakketten:

# 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


Bij het installeren van MariaDB zal de pakketbeheerder de vorige versie correct verwijderen en de nieuwe installeren, terwijl alle databases behouden blijven. Het is echter uiteraard aan te raden om een ​​reservekopie te maken van de Nextcloud-database.

Installeer MariaDB en start de updateprocedure:

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


Nadat u het wachtwoord hebt ingevoerd, wordt MariaDB bijgewerkt en kunt u dit als volgt configureren instructies uit deel twee:

# mysql_secure_installation


We starten de webserver en controleren de functionaliteit van Nextcloud:

# service apache2 start


Nextcloud updaten naar versie 17

Om de update te starten, moet u inloggen op de service onder een beheerdersaccount, naar instellingen gaan en 'Algemene instellingen' openen in het administratieve gedeelte. Nextcloud toont de geïnstalleerde versie en de versie die beschikbaar is voor update, die kan worden gestart door op de knop “Open update-venster” te klikken. Eenmaal gestart, maakt Nextcloud een back-up, downloadt en verifieert de integriteit van de updatebestanden, schakelt de onderhoudsmodus in en werkt de bestanden bij. Vervolgens komt de vraag “Onderhoudsmodus actief houden”? Je moet hier voorzichtig zijn. Bij een positief antwoord blijft de site in de onderhoudsmodus staan. Er wordt aangenomen dat de beheerder weet wat hij vervolgens moet doen en dit handmatig zal doen. Anders doet Nextcloud alles zelf, dus klik op de knop “Nee” om door te gaan.

Updates worden iteratief uitgevoerd. Eerst wordt Nextcloud 13.x bijgewerkt naar de nieuwste versie van de 14.x-tak. Hierna moet u opnieuw naar het beheercentrum gaan en de update starten, nu van 14.x naar 15.x. En zo verder totdat de laatst mogelijke huidige versie is bereikt. Na elke update wordt op de pagina "Algemene instellingen" in het administratieve gedeelte een lijst met suggesties en problemen weergegeven, evenals aanbevelingen om deze op te lossen. Hieronder zullen we bespreken wat er na elke update moet gebeuren.

Voor update

Op de nieuwste versies van Nextcloud wordt aanbevolen om PHP OPcache in te schakelen om de prestaties te verbeteren. Het is vreemd dat ik dit punt een paar jaar geleden op de een of andere manier heb gemist, sinds OPcache in PHP 5 verscheen. In /etc/php/7.2/apache2/php.ini moet je de commentaar verwijderen en de volgende parameters bewerken:

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

Tabelindexen herstellen:

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


Update 14.x -> 15.x

We bereiden de nextcloud-database voor om codering van vier bytes mogelijk te maken:

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


Ondersteuning inschakelen voor codering van vier bytes in Nextcloud:

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


Tabellen converteren:

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


Verloren tabelindexen herstellen:

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


Converteer tabelindexen naar bigint:

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


Update 15.x -> 16.x

Verloren tabelindexen herstellen:

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


Converteer tabelindexen naar bigint:

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


Update 16.x -> 17.x

Er is geen aanvullende actie vereist.

nawoord

Door deze instructies te volgen, werd een virtuele machine bijgewerkt met Nextcloud 13. Als u een virtuele machine gebruikt, kunt u geen back-upkopieën maken van Nextcloud-bestanden en de database ervan, omdat u in geval van problemen eenvoudig het eerder opgeslagen virtuele machinebestand kunt retourneren en helemaal opnieuw kunt beginnen opnieuw. Dit geldt echter niet voor de map met gebruikersgegevens, waarvan ik ook aanbeveel om samen met de virtuele machine een back-up te maken met Nextcloud. In mijn geval wordt de “cloud” gebruikt als een externe map met automatisch versiebeheer, en met de synchronisatierichting “alleen daar”, en het verliezen van deze gegevens was niet van cruciaal belang voor mij - ik zou de synchronisatie gewoon een paar uur opnieuw moeten doen . Ondanks dat ik de levenslange regel 'opslaan voor het geval dat' niet in acht nam, verliep de update zonder problemen en gingen alle klanten zonder problemen aan de slag met Nextcloud 17. Ik ben onder de indruk, Frank Karlitshek - jij en je team doen het geweldig functie!

Na de update besloot ik de gebruikersgegevens te wissen, die, afgaande op de statistieken, ongeveer twee terabytes in beslag namen. Ik had niet zoveel operationele gegevens - het grootste deel van het volume werd in beslag genomen door versiebestanden en verwijderde bestanden. Het probleem dat ik tegenkwam was dat er voor één gebruiker zoveel verwijderde gegevens waren (het is niet eens een kwestie van volume, maar kwantiteit - veel kleine bestanden) dat Nextcloud deze niet in de webinterface kon weergeven. Na het bestuderen van de beheerhandleiding vond ik een oplossing via de opdrachtregel. Misschien is dit nuttig voor iemand.

Om verwijderde gebruikersbestanden te wissen:

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


Gebruikersversiebestanden wissen:

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

Terugkeer naar het begin, naar de inhoudsopgave.

De geschiedenis van de creatie van een thuiswolk. Deel 5. Update 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17
Tekstversie: 1.1.1.
Datum eerste publicatie: 15.01.2020-XNUMX-XNUMX.
Laatste wijzigingsdatum: 15.01.2020-XNUMX-XNUMX.

Logboek bijwerken1.1.1 [15-01-2020] Correctie van typefouten.

1.1.0 [15-01-2020] Vaste nexcloud-databasevoorbereidingscode om codering van vier bytes mogelijk te maken.

1.0.0 [15-01-2020] Eerste versie.

Bron: www.habr.com