Historien om oprettelsen af ​​en hjemmesky. Del 5. Opdatering 2019 – PHP 7.2, MariaDB 10.4 og Nextcloud 17

For to år siden udgav jeg en række artikler om emnet at skabe en webserver baseret på Debian 8 og køre servicen Nextcloud 11. Et par måneder senere dukkede en tilføjelse op med "differentiel" information om installation af Nextcloud 13 på Debian 9. I slutningen af ​​2018 opdaterede jeg lige Debian og Nextcloud og stødte ikke på nogen usædvanlige eller interessante problemer. Opdateringen i slutningen af ​​2019 var allerede mere interessant og værd at skrive om.

Historien om oprettelsen af ​​en hjemmesky. Del 5. Opdatering 2019 – PHP 7.2, MariaDB 10.4 og Nextcloud 17

Denne artikel vil primært være nyttig for dem, der ifølge instruktionerne i de foregående fire artikler "samlede" Nextcloud 13 på Debian 9 (jeg siger hej til omkring et dusin af mine abonnenter om emnet Nextcloud, især til dem for hvem dette var deres første oplevelse i Linux-verdenen). For dem, der planlægger at oprette en tjeneste fra bunden, råder jeg dig til at tage udgangspunkt i de første fire artikler i denne serie, justeret for de nuværende versioner af Debian 10 og Nextcloud 17. For erfarne Linux-brugere kan artiklen tage noget tid. sted mellem "trivielt og ubrugeligt" og "ikke dårligt, alt-i-et-sted snydeark."

indholdsfortegnelse

Del 1: Opsætning af et Debian-miljø til daglig brug
Del 2: Oprettelse af en server - opsætning af LAMP på Debian
Del 3. Oprettelse af en personlig sky - installation og konfiguration af Nextcloud
Del 4. Opdatering 2018 – Debian 9 og Nextcloud 13
Del 5. Opdatering 2019 – PHP 7.2, MariaDB 10.4 og Nextcloud 17

Hurtig kapitelnavigation

Forord
Debian opdatering
Opdatering af PHP til version 7.2
Opgradering af MariaDB til version 10.4
Opdaterer Nextcloud til version 17
efterskrift

Forord

Oprindeligt ønskede jeg at installere og konfigurere Nginx på Debian 10, hvorpå den nuværende Nextcloud 17 kunne installeres uden problemer. Men jeg kunne ikke finde tiden til alt dette, så denne artikel er et sæt instruktioner til opdatering Nextcloud fra 13 til den nuværende version 17 med en foreløbig forberedelse af webserveren.

Først skal vi forklare, hvorfor radikale ændringer var nødvendige på webserversiden. Vores server er baseret på den nuværende og understøttede Debian 9. Du kan blot opdatere operativsystemet, og alle komponenter på webserveren vil som minimum modtage sikkerhedsopdateringer. Alt ville være fantastisk, hvis vi fortsatte med at bruge Nextcloud 13 eller kun opdaterede til version 14. Men Nextcloud 13 understøttes ikke længere, og support til den 14. version er på vej ud. Fra version 15 vil Nexctcloud tilbyde at konvertere databasen til big int for at understøtte fire-byte-kodning, og med MariaDB 10.1 vil dette være meget problematisk. Nexctcloud 17 kræver PHP 7.1-7.3, mens Debian 9 kun indeholder version 7.0 i dets oprindelige arkiver. Det ville være mere korrekt, hvad angår pålidelighed og forudsigelighed, at opgradere til den næstsidste version af Nextcloud, men efter et par år blev jeg så sikker på pålideligheden af ​​denne tjeneste, at jeg ønskede at opgradere til den nyeste version og opdatere webserver med en reserve til fremtiden. For at opdatere til Nexctcloud 17 er det derfor optimalt at opdatere MariaDB til den nuværende stabile version 10.4 og PHP til 7.2. Præcis 7.2, ikke den nuværende 7.4. Faktum er, at Nextcloud 13 kræver PHP 5.6, 7.0 - 7.2, og Nexctcloud 17 kræver PHP 7.1 - 7.3. Det er praktisk at bruge PHP 7.2 for at minimere opdateringsindsatsen. Der er ingen grund til at opdatere din Apache-server - bare installer sikkerhedsopdateringerne distribueret af Debians supportteam. Men for MariaDB- og PHP-opdateringer bliver du nødt til at forbinde eksterne depoter.

Da jeg lige skulle stifte bekendtskab med Nextcloud, opdaterede jeg det "i hånden": ved hjælp af en speciel kommando fra konsollen blev webstedet skiftet til vedligeholdelsestilstand, arkivet med den nye version af webstedet blev manuelt downloadet og udpakket, filerne blev opdateret, og opdateringsproceduren blev startet. Sådan en opdatering førte normalt til de forventede resultater, selvom jeg ikke var doven til at lave en sikkerhedskopi af webstedet, databasen og brugerdata. Men automatiske opdateringer førte nogle gange til alle mulige overraskelser. Men det var længe siden, motorens stabilitet er steget meget siden da, og denne gang lavede jeg opdateringer udelukkende via webgrænsefladen. Sandt nok kunne jeg stadig ikke komme væk fra kommandolinjen. Under en iterativ opdatering af hver ny version vil forskellige advarsler og meddelelser blive vist i kontrolpanelet, som skal "fjernes" ved meningsfuldt at udføre kommandoer på kommandolinjen. Du behøver ikke at gøre dette - tjenesten vil stadig fungere. Selvom denne tilgang er grundlæggende forkert, arbejdede Nextcloud for mig i denne tilstand i 3 måneder, før jeg målrettet behandlede de problemer, der opstod.

Debain opdatering

Stop webserveren:

# service apache2 stop


Og vi opdaterer:

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


Efter opdateringen kan du tjekke OS-versionen og udføre en testgenstart for at sikre, at alt starter normalt efter opdateringen:

# cat /etc/debian_version
# reboot


Opdatering af PHP til version 7.2

Stop webserveren:

# service apache2 stop


Tilføj certifikat- og PPA-nøgler, PHP-lager:

# 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


Når den gamle version af PHP 7.0 slettes, vil phpmyadmin også blive slettet, da vi sletter "sporene" fra de slettede pakker ved hjælp af autoremove. Dette vil ikke forårsage særlige vanskeligheder, da der ikke er lavet nogen specielle indstillinger for phpmyadmin, og det vil ikke være nogen problemer at installere det igen.

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


Installation af moduler, der kræves til 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


[ Denne tekst skrevet specielt til webstedet www.habr.com forfatter AlexanderS.
Et link til kilden er valgfrit, men det kan varmt anbefales at nævne det! ]

Vi tjekker PHP-versionen, starter webserveren og tjekker funktionaliteten af ​​Nextcloud:

# php -v
# service apache2 start


Opgradering af MariaDB til version 10.4

På projektets hjemmeside er der interessant side, hvor du skal angive dit OS, dets udgivelse og vælge databaseversionen. Når det er valgt, vil koden til tilføjelse af lageret blive genereret.

Stop webserveren:

# service apache2 stop


Tilføj et lager og opdater pakker:

# 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


Når du installerer MariaDB, vil pakkehåndteringen korrekt fjerne den tidligere version og installere den nye, mens alle databaser vil blive bevaret. Det anbefales dog naturligvis at lave en sikkerhedskopi af Nextcloud-databasen.

Installer MariaDB og start opdateringsproceduren:

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


Efter at have indtastet adgangskoden, opdaterer MariaDB, og du kan konfigurere den ved at følge instruktioner fra del to:

# mysql_secure_installation


Vi starter webserveren og kontrollerer funktionaliteten af ​​Nextcloud:

# service apache2 start


Opdaterer Nextcloud til version 17

For at starte opdateringen skal du logge ind på tjenesten under en administrativ konto, gå til indstillinger og åbne "Generelle indstillinger" i den administrative sektion. Nextcloud viser den installerede version og den tilgængelige version til opdatering, som kan startes ved at klikke på knappen "Åbn opdateringsvindue". Når den er startet, laver Nextcloud en sikkerhedskopi, downloader og verificerer integriteten af ​​opdateringsfilerne, slår vedligeholdelsestilstand til og opdaterer filerne. Dernæst kommer spørgsmålet "Hold vedligeholdelsestilstand aktiv"? Du skal være forsigtig her. Et positivt svar vil forlade webstedet i vedligeholdelsestilstand - det antages, at administratoren ved, hvad han skal gøre, og vil gøre det manuelt. Ellers vil Nextcloud gøre alt selv, så klik på knappen "Nej" for at fortsætte.

Opdateringer udføres iterativt. Først vil Nextcloud 13.x blive opdateret til den seneste version af 14.x-grenen. Herefter skal du gå til administrationscenteret igen og starte opdateringen, nu fra 14.x til 15.x. Og så videre indtil den sidst mulige aktuelle version er nået. Efter hver opdatering, på siden "Generelle indstillinger" i den administrative sektion, vil en liste over forslag og problemer, der er stødt på, samt anbefalinger til løsning af dem blive vist. Nedenfor vil vi tale om, hvad der skal gøres efter hver opdatering.

Indtil opdateringen

På de seneste versioner af Nextcloud anbefales det at aktivere PHP OPcache for at forbedre ydeevnen. Det er mærkeligt, at jeg på en eller anden måde gik glip af dette punkt for et par år siden, da OPcache dukkede op i PHP 5. I /etc/php/7.2/apache2/php.ini skal du fjerne kommentarer og redigere følgende parametre:

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


Opdatering 13.x -> 14.x

Gendannelse af tabelindekser:

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


Opdatering 14.x -> 15.x

Vi forbereder nextcloud-databasen for at aktivere fire-byte-kodning:

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


Aktiver understøttelse af fire-byte-kodning i Nextcloud:

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


Konvertering af tabeller:

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


Gendannelse af tabte tabelindekser:

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


Konverter tabelindekser til bigint:

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


Opdatering 15.x -> 16.x

Gendannelse af tabte tabelindekser:

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


Konverter tabelindekser til bigint:

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


Opdatering 16.x -> 17.x

Der kræves ingen yderligere handling.

efterskrift

По данной инструкции была обновлена виртуальная машина с Nextcloud 13. Использование виртуальной машины позволяет не делать резервных копий файлов Nextcloud и его базы данных, так как в случае проблем можно просто вернуть заранее сохранённый файл виртуальной машины и начать всё сначала. Однако это не касается папки с пользовательскими данными, которую я рекомендую так же забэкапить вместе с виртуальной машиной с Nextcloud. В моём случае «облако» используется в качестве удалённой папки с автоматической версионностью, причём с направлением синхронизации «только туда», и мне потрея этих данных была некритична — пришлось бы просто несколько часов опять делать синхронизацию. Несмотря на моё пренебрежение выработанным жизнью правилом «сохранись на всякий случай», обновление прошло без проблем и все клиенты так же без проблем заработали с Nextcloud 17. Я впечатлён, Фрэнк Карлитшек — Вы со своей командой делаете отличную работу!

Efter opdateringen besluttede jeg at rydde brugerdataene, som efter statistikken at dømme optog omkring to terabyte. Jeg havde ikke så mange driftsdata - det meste af volumen var optaget af versionsfiler og slettede filer. Problemet, jeg stødte på, var, at for en bruger var der så mange slettede data (det er ikke engang et spørgsmål om volumen, men mængde - en masse små filer), at Nextcloud ikke kunne vise det i webgrænsefladen. Efter at have studeret administrationsmanualen fandt jeg en løsning via kommandolinjen. Måske vil dette være nyttigt for nogen.

Sådan ryddes slettede brugerfiler:

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


Sådan ryddes brugerversionsfiler:

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

Vend tilbage til begyndelsen, til indholdsfortegnelsen.

Historien om oprettelsen af ​​en hjemmesky. Del 5. Opdatering 2019 – PHP 7.2, MariaDB 10.4 og Nextcloud 17
Tekstversion: 1.1.1.
Dato for første offentliggørelse: 15.01.2020/XNUMX/XNUMX.
Sidste redigeringsdato: 15.01.2020/XNUMX/XNUMX.

Opdater log1.1.1 [15-01-2020] Rettelse af tastefejl.

1.1.0 [15-01-2020] Rettet nexcloud-databaseforberedelseskode for at aktivere fire-byte-kodning.

1.0.0 [15-01-2020] Første version.

Kilde: www.habr.com