Príbeh o vytvorení domáceho cloudu. Časť 5. Aktualizácia 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17

Pred dvoma rokmi som publikoval sériu článkov o vytvorení webového servera na báze Debian 8 a spustení služby Nextcloud 11. Po niekoľkých mesiacoch sa objavilo doplnenie, ktoré obsahovalo 'diferenčné' informácie o inštalácii Nextcloud 13 na Debian 9. Na konci roku 2018 som jednoducho aktualizoval Debian a Nextcloud a nestretol som sa s nejakými nezvyčajnými alebo zaujímavými problémami. Aktualizácia na konci roku 2019 bola už zaujímavejšia a stálo za to o tom napísať.

Príbeh o vytvorení domáceho cloudu. Časť 5. Aktualizácia 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17

Tento článok bude predovšetkým užitočný tým, ktorí si podľa pokynov predchádzajúcich štyroch článkov 'poskladali' Nextcloud 13 na Debian 9 (posielam pozdrav desiatke mojich odoberateľov tématike Nextcloud, predovšetkým tým, pre koho to bola prvá skúsenosť vo svete Linuxu). Tým, ktorí sa chystajú vytvoriť službu od nuly, odporúčam vychádzať z prvých štyroch článkov tejto série so zohľadnením aktuálnych verzií Debian 10 a Nextcloud 17. Pre skúsených používateľov Linuxu môže článok zaujímať niekde medzi 'triviálne a zbytočne' a 'celkom dobre, príručka všetko na jednom mieste.'

Obsah

Časť 1. Nastavenie prostredia Debian na každodenné používanie
Časť 2. Vytvorenie servera — nastavenie LAMP na Debiane
Časť 3. Vytvorenie osobného cloudu — inštalácia a nastavenie Nextcloud
Časť 4. Aktualizácia 2018 – Debian 9 a Nextcloud 13
Časť 5. Aktualizácia 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17

Rýchla navigácia po kapitole

Úvod
Aktualizácia Debiana
Aktualizácia PHP na verziu 7.2
Aktualizácia MariaDB na verziu 10.4
Aktualizácia Nextcloud na verziu 17
Pósledok

Úvod

Pôvodne som chcel na Debian 10 nainštalovať a nastaviť Nginx, na čo by bola bez problémov nainštalovaná aktuálna verzia Nextcloud 17. Ale na to všetko sa mi nepodarilo nájsť čas, takže tento článok predstavuje súbor pokynov na aktualizáciu Nextcloud z 13 na aktuálnu verziu 17 s predbežnou prípravou webového servera.

Na začiatok je potrebné objasniť, prečo sú potrebné radikálne zmeny na strane webového servera. Náš server je založený na aktuálnom a podporovanom Debiane 9. Stačí jednoducho aktualizovať operačný systém a všetky komponenty webového servera dostanú minimálne bezpečnostné aktualizácie. Všetko by bolo skvelé, keby sme naďalej používali Nextcloud 13 alebo sa aktualizovali iba na verziu 14. Ale Nextcloud 13 už nie je podporovaný a podpora verzie 14 je na odchode. Od 15. verzie Nextcloud začne ponúkať prevod databázy na big int pre podporu štvobodovej kódovania, a s MariaDB 10.1 to bude veľmi problematické. Nextcloud 17 vyžaduje PHP 7.1-7.3, zatiaľ čo Debian 9 vo svojich natívnych repozitároch obsahuje iba verziu 7.0. Správnejšie, z hľadiska spoľahlivosti a predvídateľnosti, by bolo aktualizovať na predposlednú verziu Nextcloud, ale za pár rokov som sa tak presvedčil o spoľahlivosti tejto služby, že som chcel aktualizovať na poslednú verziu a modernizovať webový server s pohľadom do budúcnosti. Preto je optimálne pre aktualizáciu na Nextcloud 17 aktualizovať MariaDB na aktuálnu stabilnú verziu 10.4 a PHP — na 7.2. Presne 7.2, a nie aktuálnu 7.4. Ide o to, že Nextcloud 13 vyžaduje PHP 5.6, 7.0 — 7.2, a pre Nextcloud 17 je potrebné PHP 7.1 — 7.3. Používanie PHP 7.2 je výhodné s cieľom minimalizácie akcií pri aktualizácii. Server Apache aktualizovať nebude potrebné — stačí nainštalovať bezpečnostné aktualizácie, ktoré poskytuje podpora Debianu. Ale na aktualizácie MariaDB a PHP bude potrebné pripojiť externé repozitáre.

Keď som sa prvýkrát zoznamoval s Nextcloudom, aktualizoval som ho "ručne": cez konzolu pomocou špeciálneho príkazu sa webstránka prepla do režimu údržby, manuálne sa stiahol a rozbalil archív s novou verziu webu, aktualizovali sa súbory a spustil sa proces aktualizácie. Takáto aktualizácia obvykle priniesla očakávané výsledky, hoci som sa nezabudol postarať o zálohu webu, databázy a používateľských údajov. Automatické aktualizácie však občas viedli k rôznym prekvapeniam. Ale to bolo dávno, stabilita systému odvtedy výrazne vzrástla a tentoraz som aktualizácie vykonával výhradne cez webové rozhranie. Pravda, z príkazového riadku som sa aj tak nevyhol. Pri iteratívnej aktualizácii sa na každú novú verziu v ovládacom paneli objavia rôzne varovania a oznámenia, ktoré bude potrebné "odstrániť" rozumným vykonaním príkazov v príkazovom riadku. Je možné to nerobiť — služba bude aj tak fungovať. Hoci taký prístup je vo svojej podstate nesprávny, môj Nextcloud fungoval v takom režime 3 mesiace, kým som sa cielene nezaoberal vzniknutými otázkami.

Aktualizácia Debain

Zastavujeme webový server:

# service apache2 stop


A aktualizujeme:

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


Po aktualizácii môžeme skontrolovať verziu OS a vykonať kontrolný reštart, aby sme sa uistili, že po aktualizácii všetko normálne štartuje:

# cat /etc/debian_version
# reboot


Aktualizácia PHP na verziu 7.2

Zastavujeme webový server:

# service apache2 stop


Pridávame certifikát a kľúče PPA, repozitár PHP:

# 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


Pri odstraňovaní starej verzie PHP 7.0 sa tiež odstráni phpmyadmin, pretože "stopy" od odstránených balíkov vyčistíme pomocou autoremove. To nespôsobí žiadne zvláštne ťažkosti, pretože neboli vykonané žiadne špeciálne nastavenia pre phpmyadmin a jeho opätovná inštalácia nebude predstavovať žiadne problémy.

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


Inštalácia modulov potrebných pre 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


[ Tento text bol napísaný špeciálne pre web habr.com autorom AlexanderS.
Odkaz na zdroj nie je povinný, ale jeho zmienka je krajne žiadaná! ]

Kontrolujeme verziu PHP, spúšťame webový server a kontrolujeme funkčnosť Nextcloud:

# php -v
# service apache2 start


Aktualizácia MariaDB na verziu 10.4

Na stránke projektu je zaujímavá stránka, na ktorej je potrebné uviesť svoju OS, jej verziu a vybrať verziu databázy. Po výbere sa vygeneruje kód pre prídavok repozitára.

Zastavujeme webový server:

# service apache2 stop


Pridávame repozitár a aktualizujeme balíky:

# 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


Pri inštalácii MariaDB správca balíkov správne odstráni predchádzajúcu verziu a nainštaluje novú, pričom všetky databázy zostanú zachované. Odporúča sa však urobiť zálohu databázy Nextcloud.

Inštalujeme MariaDB a spúšťame postup aktualizácie:

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


Po zadaní hesla sa MariaDB aktualizuje a môže sa nakonfigurovať podľa pokynov z druhej časti:

# mysql_secure_installation


Spúšťame webový server a kontrolujeme funkčnosť Nextcloudu:

# service apache2 start


Aktualizácia Nextcloud na verziu 17

Na spustenie aktualizácie je potrebné prihlásiť sa na službe pod administrátorským účtom, prejsť do nastavení a otvoriť „Všeobecné nastavenia“ v administratívnej sekcii. Nextcloud zobrazuje nainštalovanú verziu a verziu, ktorá je dostupná na aktualizáciu, ktorú možno spustiť stlačením tlačidla „Otvoriť okno aktualizácie“. Po iniciovaní Nextcloud vytvorí zálohu, stiahne a skontroluje integritu súborov aktualizácie, aktivuje režim údržby a aktualizuje súbory. Nasleduje otázka „Zachovať režim údržby aktivovaný“? Tu treba byť opatrný. Kladná odpoveď ponechá stránku v režime údržby — predpokladá sa, že administrátor vie, čo má robiť ďalej, a urobí to manuálne. Inak Nextcloud všetko vykoná sám, preto pre pokračovanie stlačte tlačidlo „Nie“.

Aktualizácie sa vykonávajú iteratívne. Najprv sa Nextcloud 13.x aktualizuje na najnovšiu verziu vetvy 14.x. Potom sa treba opäť prihlásiť do administrátorského centra a spustiť aktualizáciu, teraz už z 14.x na 15.x. A tak ďalej, kým sa nedosiahne posledná možná aktuálna verzia. Po každej aktualizácii bude na stránke „Všeobecné nastavenia“ v administratívnej sekcii zobrazený zoznam návrhov a vzniknutých problémov, ako aj odporúčania na ich riešenie. Nižšie sa bude hovoriť o tom, čo bude potrebné urobiť po každej aktualizácii.

Pred aktualizáciou

Na posledných verziách Nextcloud sa odporúča povoliť PHP OPcache na zlepšenie výkonu. Je zvláštne, že tento moment som akosi prehliadol pred pár rokmi, keďže OPcache sa objavil už v PHP 5. V /etc/php/7.2/apache2/php.ini je potrebné odkomentovať a upraviť nasledujúce parametre:

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


Aktualizácia 13.x -> 14.x

Obnovujeme indexy tabuliek:

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


Aktualizácia 14.x -> 15.x

Pripravujeme databázu nextcloud na povolenie štyribajtovej kódovania:

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


Povoľujeme podporu štyribajtovej kódovania v Nextcloude:

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


Transformujeme tabuľky:

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


Obnovujeme stratenej indexy tabuliek:

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


Transformujeme indexy tabuliek na bigint:

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


Aktualizácia 15.x -> 16.x

Obnovujeme stratenej indexy tabuliek:

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


Transformujeme indexy tabuliek na bigint:

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


Aktualizácia 16.x -> 17.x

Žiadne ďalšie kroky nie sú potrebné.

Pósledok

Podľa tohto návodu bola aktualizovaná virtuálna stroj s Nextcloud 13. Použitie virtuálneho stroja umožňuje nevytvárať zálohy súborov Nextcloud a jeho databázy, pretože v prípade problémov sa môžete jednoducho vrátiť k vopred uloženému súboru virtuálneho stroja a začať všetko odznova. Toto sa však netýka zložky s používateľskými údajmi, ktorú odporúčam tiež zálohovať spolu s virtuálnym strojom s Nextcloud. V mojom prípade sa „cloud“ používa ako vzdialená zložka s automatickou verziou, a to so smerovaním synchronizácie „iba tam“, a strata týchto údajov pre mňa nebola kritická — musel by som jednoducho stráviť pár hodín znovu synchronizáciou. Napriek môjmu opovrhnutiu vypracovaným pravidlom „zálohuj sa na každý prípad“, aktualizácia prebehla bez problémov a všetci klienti tiež bez problémov fungovali s Nextcloud 17. Som ohromený, Frank Karlitschke — vy a váš tím odvádzate skvelú prácu!

Po aktualizácii som sa rozhodol vyčistiť používateľské údaje, ktoré, podľa štatistiky, zaberali pod dva terabajty. Také množstvo operatívnych údajov som nemal — väčšinu objemu zaberali súbory verzií a odstránené súbory. Problém, s ktorým som sa stretol, bol ten, že pre jedného používateľa bolo odstránených údajov tak veľa (nejde ani tak o objem, ale o počet — veľmi veľa malých súborov), že Nextcloud ich nemohol zobraziť v webovom rozhraní. Po štúdiu sprievodcu administratívy som našiel riešenie cez príkazový riadok. Možno sa to niekomu zíde.

Na vyčistenie odstránených súborov používateľa user:

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


Na vyčistenie súborov verzií používateľa user:

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

Vrátiť sa na začiatok, k obsahu.

Príbeh o vytvorení domáceho cloudu. Časť 5. Aktualizácia 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17
Verzia textu: 1.1.1.
Dátum prvej publikácie: 15.01.2020.
Dátum poslednej úpravy: 15.01.2020.

Záznam aktualizácií1.1.1 [15-01-2020]
Oprava preklepov.

1.1.0 [15-01-2020]
Opravený kód prípravy databázy nexcloud na povolenie štyribajtovej kódovania.

1.0.0 [15-01-2020]
Prvá verzia.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster