De geschiedenis van het creĆ«ren van een thuiscloud. Deel 5. Actualisatie 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17

Twee jaar geleden heb ik een serie artikelen gepubliceerd over het opzetten van een webserver op basis van Debian 8 en het draaien van de Nextcloud 11-service daarop. Enkele maanden later verscheen er een aanvulling met 'differentiƫle' informatie over het installeren van Nextcloud 13 op Debian 9. Aan het einde van 2018 heb ik eenvoudigweg Debian en Nextcloud bijgewerkt zonder ongebruikelijke of interessante problemen tegen te komen. De update aan het einde van 2019 was echter veel interessanter en daar wilde ik over schrijven.

De geschiedenis van het creĆ«ren van een thuiscloud. Deel 5. Actualisatie 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17

Dit artikel zal vooral nuttig zijn voor degenen die volgens de instructies van de afgelopen vier artikelen hun eigen Nextcloud 13 op Debian 9 hebben 'samengesteld' (ik groet mijn tientallen abonnees over het onderwerp Nextcloud, vooral degenen voor wie dit de eerste ervaring in de wereld van Linux was). Voor degenen die van plan zijn om een service vanaf nul op te zetten, raad ik aan de eerste vier artikelen van deze serie als basis te nemen, met een aanpassing naar de actuele versies van Debian 10 en Nextcloud 17. Voor ervaren Linux-gebruikers kan dit artikel ergens tussen 'triviaal en nutteloos' en 'niet slecht, een alles-in-een-spiekbriefje' vallen.

Inhoudsopgave

Deel 1. Configuratie van de Debian-omgeving voor dagelijks gebruik
Deel 2. Het opzetten van de server - configureren van LAMP in Debian
Deel 3. Het creƫren van een persoonlijk cloud - installatie en configuratie van Nextcloud
Deel 4. Actualisatie 2018 – Debian 9 en Nextcloud 13
Deel 5. Actualisatie 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17

Snelle navigatie door het hoofdstuk

Voorwoord
Debian bijwerken
PHP bijwerken naar versie 7.2
MariaDB bijwerken naar versie 10.4
Nextcloud bijwerken naar versie 17
Naschrift

Voorwoord

Oorspronkelijk wilde ik Nginx op Debian 10 installeren en configureren, bovenop waarvan de actuele Nextcloud 17 zonder problemen zou kunnen worden geĆÆnstalleerd. Maar ik kon geen tijd vinden voor dit alles, dus dit artikel is een verzameling instructies voor het bijwerken van Nextcloud van versie 13 naar de actuele versie 17, met een voorbereidingsfase voor de webserver.

Om te beginnen is het belangrijk om uit te leggen waarom radicale wijzigingen aan de serverzijde nodig zijn. Onze server draait op het actuele en ondersteunde Debian 9. Het zou mogelijk zijn om simpelweg het besturingssysteem bij te werken, waardoor alle componenten van de webserver tenminste beveiligingsupdates ontvangen. Alles zou prima zijn als we Nextcloud 13 zouden blijven gebruiken of slechts zouden upgraden naar versie 14. Maar Nextcloud 13 wordt al niet meer ondersteund, en de ondersteuning voor versie 14 is 'op zijn retour'. Vanaf versie 15 zal Nextcloud voorstellen om de database te converteren naar big int voor ondersteuning van de vierbytescodering, en met MariaDB 10.1 zal dit behoorlijk problematisch zijn. Nextcloud 17 vereist PHP 7.1-7.3, terwijl Debian 9 in zijn oorspronkelijke repositories alleen versie 7.0 biedt. Het zou verstandiger zijn, qua betrouwbaarheid en voorspelbaarheid, om te upgraden naar de op ƩƩn na laatste versie van Nextcloud, maar in de afgelopen paar jaar heb ik zoveel vertrouwen gekregen in de betrouwbaarheid van deze service dat ik besloot te upgraden naar de nieuwste versie en de webserver voorbereid te maken voor de toekomst. Daarom, voor de upgrade naar Nextcloud 17, is het optimaal om MariaDB bij te werken naar de actuele stabiele versie 10.4 en PHP naar 7.2. Juist 7.2, en niet de actuele 7.4. Het punt is dat Nextcloud 13 PHP 5.6, 7.0 - 7.2 vereist, en voor Nextcloud 17 is PHP 7.1 - 7.3 nodig. Het gebruik van PHP 7.2 is handig om het aantal noodzakelijke update-acties te minimaliseren. De Apache-server hoeft niet te worden bijgewerkt — het is voldoende om de beveiligingsupdates te installeren die het Debian-ondersteuningsteam verspreidt. Voor de updates van MariaDB en PHP moet echter externe repositories worden ingeschakeld.

Toen ik voor het eerst met Nextcloud bekend raakte, werkte ik het handmatig bij: vanuit de console met een speciale commando ging de site in onderhoudsmodus, het archief met de nieuwe versie werd handmatig gedownload en uitgepakt, bestanden werden bijgewerkt en de updateprocedure werd gestart. Dergelijke updates leidde meestal tot de verwachte resultaten, hoewel ik niet nalatig was met het maken van een back-up van de site, de database en gebruikersgegevens. Maar automatische updates leidden soms tot verrassingen. Dat is echter al lang geleden, de stabiliteit van de engine is sindsdien sterk verbeterd en deze keer heb ik de updates uitsluitend via de webinterface uitgevoerd. Toch kon ik de commandoregel niet vermijden. Tijdens een iteratieve update zullen er verschillende waarschuwingen en meldingen verschijnen in het controlepaneel voor elke nieuwe versie die 'opgeruimd' moeten worden door zinvolle commando's in de commandoregel uit te voeren. Je kunt dit ook achterwege laten — de service zal hoe dan ook werken. Hoewel deze aanpak fundamenteel onjuist is, heeft mijn Nextcloud drie maanden in deze modus gedraaid voordat ik me doelbewust met de opgekomen vragen bezig hield.

Debian Update

We stoppen de webserver:

# service apache2 stop


En we doen de update:

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


Na de update kan de versie van het OS worden gecontroleerd en kan een controle herstart worden uitgevoerd om te bevestigen dat alles na de update normaal opstart:

# cat /etc/debian_version
# reboot


PHP bijwerken naar versie 7.2

We stoppen de webserver:

# service apache2 stop


We voegen het certificaat en de PPA-sleutels, de PHP-repository toe:

# 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 PHP 7.0 zal ook phpmyadmin worden verwijderd, aangezien we de 'sporen' van verwijderde pakketten opruimen met autoremove. Dit zal geen bijzondere complicaties opleveren, aangezien er geen speciale instellingen voor phpmyadmin zijn gemaakt en het opnieuw installeren geen probleem zal zijn.

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


Installatie van de modules 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 is speciaal geschreven voor de website habr.com door de auteur AlexanderS.
De link naar de bron is niet verplicht, maar het is zeer wenselijk om deze te vermelden! ]

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

# php -v
# service apache2 start


MariaDB bijwerken naar versie 10.4

Op de projectwebsite is er een interessante pagina, waarop je je OS, de release en de versies van de database moet opgeven. Na de selectie wordt een code gegenereerd voor het toevoegen van de repository.

We stoppen de webserver:

# service apache2 stop


We voegen de repository toe en werken de pakketten bij:

# 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 de installatie van MariaDB verwijdert de package manager correct de vorige versie en installeert de nieuwe, terwijl alle databases behouden blijven. Het is echter aan te raden om een back-up van de Nextcloud-database te maken.

We installeren MariaDB en starten de upgradeprocedure:

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


Na het invoeren van het wachtwoord zal MariaDB bijgewerkt worden en kan deze geconfigureerd worden volgens de instructies in het tweede deel:

# mysql_secure_installation


We starten de webserver en controleren de werking van Nextcloud:

# service apache2 start


Nextcloud bijwerken naar versie 17

Om de upgrade te starten, moet u zich aanmelden bij de service met een admin-account, naar de instellingen gaan en 'Algemene instellingen' openen in het beheerdersgedeelte. Nextcloud toont de geĆÆnstalleerde versie en de versie die beschikbaar is voor upgrade, die kan worden gestart door op de knop 'Open upgradevenster' te klikken. Na initiatie maakt Nextcloud een back-up, downloadt en controleert de integriteit van de upgradebestanden, schakelt de onderhoudsmodus in en werkt de bestanden bij. Daarna volgt de vraag 'Onderhoudsmodus actief houden'? Hier moet voorzichtig mee omgegaan worden. Een positief antwoord houdt de site in onderhoudsmodus - het wordt verondersteld dat de beheerder weet wat hij moet doen en dit handmatig zal doen. Anders doet Nextcloud alles automatisch, dus voor voortzetting drukken we op de knop 'Nee'.

Upgrades worden iteratief uitgevoerd. Eerst wordt Nextcloud 13.x bijgewerkt naar de laatste versie van tak 14.x. Daarna moet u weer in het admincentrum inloggen en de upgrade starten, nu van 14.x naar 15.x. En zo verder totdat de laatste beschikbare versie is bereikt. Na elke upgrade wordt op de pagina 'Algemene instellingen' in het beheerdersgedeelte een lijst met voorstellen en problemen weergegeven, evenals aanbevelingen voor oplossingen. Hieronder wordt besproken wat er moet gebeuren na elke upgrade.

Voordat we updaten

Bij de laatste versies van Nextcloud is het aan te raden om PHP OPcache in te schakelen voor beter presteren. Het is vreemd dat ik deze stap een paar jaar geleden heb gemist, aangezien OPcache al in PHP 5 beschikbaar was. In /etc/php/7.2/apache2/php.ini moeten de volgende parameters worden geuncommentarieerd en bewerkt:

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


Upgrade 13.x -> 14.x

We herstellen de indexen van de tabellen:

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


Upgrade 14.x -> 15.x

We bereiden de Nextcloud-database voor op het inschakelen van vier-byte codering:

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


We schakelen de ondersteuning voor vier-byte codering in Nextcloud in:

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


We converteren de tabellen:

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


We herstellen de verloren tabelindexen:

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


We converteren de tabelindexen naar bigint:

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


Update 15.x -> 16.x

We herstellen de verloren tabelindexen:

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


We converteren de tabelindexen naar bigint:

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


Update 16.x -> 17.x

Er zijn geen extra acties nodig.

Naschrift

Volgens deze instructie is de virtuele machine met Nextcloud 13 geüpdatet. Het gebruik van een virtuele machine maakt het mogelijk om geen back-ups van de Nextcloud-bestanden en de database te maken, omdat je bij problemen gewoon het eerder opgeslagen bestand van de virtuele machine kunt terugzetten en alles opnieuw kunt beginnen. Dit geldt echter niet voor de map met gebruikersgegevens, die ik ook aanbeveel te back-uppen samen met de virtuele machine met Nextcloud. In mijn geval fungeert de 'cloud' als een externe map met automatische versiebeheer, waarbij de synchroniseren alleen naar die map is ingesteld, en het verlies van deze gegevens was voor mij niet kritisch — ik zou gewoon een paar uur opnieuw moeten synchroniseren. Ondanks mijn verwaarlozing van de aangeleerde levensregel 'maak een back-up voor de zekerheid', is de update zonder problemen verlopen en werkten alle klanten ook probleemloos met Nextcloud 17. Ik ben onder de indruk, Frank Karlitschke — jij en je team leveren geweldig werk!

Na de update besloot ik de gebruikersgegevens op te schonen, die volgens de statistieken bijna twee terabyte in beslag namen. Ik had niet zoveel actuele gegevens — het meeste volume werd ingenomen door versiebestanden en verwijderde bestanden. Het probleem waar ik mee werd geconfronteerd was dat voor ƩƩn gebruiker de verwijderde gegevens zo talrijk waren (het gaat me niet eens om het volume, maar om het aantal — heel veel kleine bestanden), dat Nextcloud ze niet kon weergeven in de webinterface. Na het bestuderen van de administratiehandleiding vond ik een oplossing via de opdrachtregel. Mogelijk is dit nuttig voor iemand.

Om de verwijderde bestanden van gebruiker user op te schonen:

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


Om de versiebestanden van gebruiker user op te schonen:

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

Terug naar het begin, naar de inhoudsopgave.

De geschiedenis van het creĆ«ren van een thuiscloud. Deel 5. Actualisatie 2019 – PHP 7.2, MariaDB 10.4 en Nextcloud 17
Versie van de tekst: 1.1.1.
Datum van eerste publicatie: 15.01.2020.
Datum van laatste bewerking: 15.01.2020.

Wijzigingslog1.1.1 [15-01-2020]
Typfouten gecorrigeerd.

1.1.0 [15-01-2020]
De code voor het voorbereiden van de Nextcloud-database op het inschakelen van vier-byte codering is gecorrigeerd.

1.0.0 [15-01-2020]
Eerste versie.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster