Historie vzniku domácího cloudu. Část 5. Aktualizace 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17

Před dvěma lety jsem publikoval sérii článků na téma vytvoření webového serveru založeného na Debianu 8 a spuštění služby Nextcloud 11. O pár měsíců později se objevil dodatek obsahující „rozdílné“ informace o instalaci Nextcloud 13 na Debian 9. Na konci roku 2018 jsem právě aktualizoval Debian a Nextcloud a nenarazil jsem na žádné neobvyklé nebo zajímavé problémy. Aktualizace na konci roku 2019 už byla zajímavější a stojí za to o ní psát.

Historie vzniku domácího cloudu. Část 5. Aktualizace 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17

Tento článek se bude hodit především těm, kteří si podle instrukcí předchozích čtyř článků „skládali“ Nextcloud 13 na Debian 9 (zdravím asi desítku svých odběratelů na téma Nextcloud, zejména ty, pro které toto byla jejich první zkušenost ve světě Linuxu). Těm, kteří plánují vytvořit službu od nuly, doporučuji vzít si za základ první čtyři články této série, upravené pro aktuální verze Debian 10 a Nextcloud 17. Zkušeným uživatelům Linuxu může článek trvat místo mezi „triviálním a zbytečným“ a „ne špatným, vše na jednom místě cheat sheet“.

obsah

Část 1: Nastavení prostředí Debianu pro každodenní použití
Část 2: Vytvoření serveru - nastavení LAMP na Debianu
Část 3. Vytvoření osobního cloudu – instalace a konfigurace Nextcloud
Část 4. Aktualizace 2018 – Debian 9 a Nextcloud 13
Část 5. Aktualizace 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17

Rychlá navigace v kapitolách

předmluva
Aktualizace Debianu
Aktualizace PHP na verzi 7.2
Upgrade MariaDB na verzi 10.4
Aktualizace Nextcloud na verzi 17
Doslov

předmluva

Původně jsem chtěl nainstalovat a nakonfigurovat Nginx na Debian 10, na který by se dal bez problémů nainstalovat aktuální Nextcloud 17. Na to všechno jsem si ale nenašel čas, takže tento článek je souborem pokynů pro aktualizaci Nextcloud od 13 do aktuální verze 17 s předběžnou přípravou webového serveru.

Nejprve musíme vysvětlit, proč byly vyžadovány radikální změny na straně webového serveru. Náš server je založen na aktuálním a podporovaném Debianu 9. Stačí jednoduše aktualizovat operační systém a všechny součásti webového serveru obdrží minimálně bezpečnostní aktualizace. Vše by bylo skvělé, kdybychom Nextcloud 13 nadále používali nebo aktualizovali pouze na verzi 14. Nextcloud 13 však již není podporován a podpora 14. verze je na cestě. Počínaje verzí 15 nabídne Nexctcloud převod databáze na big int pro podporu čtyřbajtového kódování a s MariaDB 10.1 to bude velmi problematické. Nexctcloud 17 vyžaduje PHP 7.1-7.3, zatímco Debian 9 obsahuje ve svých nativních úložištích pouze verzi 7.0. Z hlediska spolehlivosti a předvídatelnosti by bylo správnější upgradovat na předposlední verzi Nextcloud, ale po několika letech jsem si spolehlivost této služby natolik věřil, že jsem chtěl upgradovat na nejnovější verzi a aktualizovat webový server s rezervou do budoucna. Pro aktualizaci na Nexctcloud 17 je tedy optimální aktualizovat MariaDB na aktuální stabilní verzi 10.4 a PHP na 7.2. Přesně 7.2, ne současných 7.4. Faktem je, že Nextcloud 13 vyžaduje PHP 5.6, 7.0 - 7.2 a Nexctcloud 17 vyžaduje PHP 7.1 - 7.3. Je vhodné používat PHP 7.2, abyste minimalizovali úsilí o aktualizaci. Není třeba aktualizovat váš server Apache – stačí nainstalovat aktualizace zabezpečení distribuované týmem podpory Debianu. Ale pro aktualizace MariaDB a PHP budete muset připojit externí úložiště.

Když jsem se s Nextcloud teprve seznamoval, aktualizoval jsem jej „ručně“: pomocí speciálního příkazu z konzole se web přepnul do režimu údržby, archiv s novou verzí webu se ručně stáhl a rozbalil, soubory byly aktualizovány a byla zahájena procedura aktualizace. Taková aktualizace obvykle vedla k očekávaným výsledkům, i když jsem nebyl líný vytvořit záložní kopii webu, databáze a uživatelských dat. Automatické aktualizace ale někdy vedly k nejrůznějším překvapením. To už je ale dávno, stabilita enginu od té doby velmi vzrostla a aktualizace jsem tentokrát prováděl výhradně přes webové rozhraní. Pravda, stále jsem se nemohl dostat pryč z příkazového řádku. Během iterativní aktualizace na každou novou verzi se na ovládacím panelu objeví různá varování a upozornění, která bude potřeba „odstranit“ smysluplným prováděním příkazů na příkazovém řádku. Nemusíte to dělat – služba bude stále fungovat. I když je tento přístup zásadně špatný, Nextcloud mi v tomto režimu fungoval 3 měsíce, než jsem se cíleně vypořádal se vzniklými problémy.

Aktualizace Debain

Zastavte webový server:

# service apache2 stop


A aktualizujeme:

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


Po aktualizaci můžete zkontrolovat verzi operačního systému a provést testovací restart, abyste se ujistili, že se po aktualizaci vše spustí normálně:

# cat /etc/debian_version
# reboot


Aktualizace PHP na verzi 7.2

Zastavte webový server:

# service apache2 stop


Přidat certifikát a klíče PPA, úložiště 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


Při smazání staré verze PHP 7.0 bude smazán i phpmyadmin, protože „stopy“ ze smazaných balíčků vymažeme pomocí autoremove. To nezpůsobí žádné zvláštní potíže, protože pro phpmyadmin nebyla provedena žádná speciální nastavení a jeho opětovná instalace nebude žádný problém.

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


Instalace modulů požadovaných pro 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 napsané speciálně pro daný web www.habr.com podle autora AlexanderS.
Odkaz na zdroj je volitelný, ale jeho uvedení je vysoce doporučeno! ]

Zkontrolujeme verzi PHP, spustíme webový server a zkontrolujeme funkčnost Nextcloud:

# php -v
# service apache2 start


Upgrade MariaDB na verzi 10.4

Na stránkách projektu je zajímavá stránka, kde je třeba uvést váš OS, jeho verzi a vybrat verzi databáze. Po výběru se vygeneruje kód pro přidání úložiště.

Zastavte webový server:

# service apache2 stop


Přidejte úložiště a aktualizujte 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


Při instalaci MariaDB správce balíčků správně odstraní předchozí verzi a nainstaluje novou, přičemž všechny databáze zůstanou zachovány. Je však samozřejmě doporučeno vytvořit záložní kopii databáze Nextcloud.

Nainstalujte MariaDB a spusťte postup aktualizace:

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


Po zadání hesla se MariaDB aktualizuje a můžete jej nakonfigurovat následujícím způsobem pokyny z druhé části:

# mysql_secure_installation


Spouštíme webový server a kontrolujeme funkčnost Nextcloud:

# service apache2 start


Aktualizace Nextcloud na verzi 17

Chcete-li spustit aktualizaci, musíte se přihlásit ke službě pod administrátorským účtem, přejít do nastavení a v části pro správu otevřít „Obecná nastavení“. Nextcloud zobrazuje nainstalovanou verzi a verzi dostupnou pro aktualizaci, kterou lze spustit kliknutím na tlačítko „Otevřít okno aktualizace“. Po spuštění Nextcloud vytvoří zálohu, stáhne a ověří integritu aktualizačních souborů, zapne režim údržby a aktualizuje soubory. Dále přichází otázka „Udržovat režim údržby aktivní“? Zde je třeba být opatrný. Pozitivní odezva ponechá web v režimu údržby – předpokládá se, že administrátor ví, co dál dělat a udělá to ručně. V opačném případě Nextcloud udělá vše sám, takže pokračujte kliknutím na tlačítko „Ne“.

Aktualizace se provádějí iterativně. Nejprve bude Nextcloud 13.x aktualizován na nejnovější verzi větve 14.x. Poté budete muset znovu přejít do centra pro správu a spustit aktualizaci, nyní ze 14.x na 15.x. A tak dále, dokud není dosaženo poslední možné aktuální verze. Po každé aktualizaci se na stránce „Obecná nastavení“ v části pro správu zobrazí seznam návrhů a problémů, na které jste narazili, a doporučení k jejich řešení. Níže si povíme, co je potřeba udělat po každé aktualizaci.

Až do aktualizace

V nejnovějších verzích Nextcloud se doporučuje povolit PHP OPcache pro zlepšení výkonu. Je zvláštní, že jsem tento bod před pár lety nějak přehlédl, protože OPcache se objevila v PHP 5. V /etc/php/7.2/apache2/php.ini musíte odkomentovat a upravit následující parametry:

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


Aktualizace 13.x -> 14.x

Obnovení indexů tabulek:

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


Aktualizace 14.x -> 15.x

Připravujeme databázi nextcloud, která umožňuje čtyřbajtové kódování:

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


Povolte podporu pro čtyřbajtové kódování v Nextcloud:

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


Konverzní tabulky:

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


Obnovení ztracených indexů tabulek:

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


Převést indexy tabulky na bigint:

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


Aktualizace 15.x -> 16.x

Obnovení ztracených indexů tabulek:

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


Převést indexy tabulky na bigint:

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


Aktualizace 16.x -> 17.x

Není vyžadována žádná další akce.

Doslov

Podle těchto pokynů byl aktualizován virtuální stroj s Nextcloud 13. Použití virtuálního stroje vám umožňuje nevytvářet záložní kopie souborů Nextcloud a jeho databáze, protože v případě problémů můžete jednoduše vrátit dříve uložený soubor virtuálního stroje a začít znovu znovu. To se ale netýká složky s uživatelskými daty, kterou také doporučuji zálohovat spolu s virtuálním strojem pomocí Nextcloud. V mém případě se „cloud“ používá jako vzdálená složka s automatickým verzováním a se směrem synchronizace „pouze tam“ a ztráta těchto dat pro mě nebyla kritická - jen bych musel synchronizaci provést znovu několik hodin . Navzdory mému pohrdání celoživotním pravidlem „uložte si jen pro případ“, aktualizace proběhla bez problémů a všichni klienti bez problémů začali pracovat s Nextcloud 17. Jsem ohromen, Frank Karlitshek – vy a váš tým si vedete skvěle práce!

Po aktualizaci jsem se rozhodl vymazat uživatelská data, která soudě podle statistik zabírala asi dva terabajty. Neměl jsem tolik provozních dat - většinu svazku zabíraly soubory verzí a smazané soubory. Problém, na který jsem narazil, byl ten, že pro jednoho uživatele bylo tolik smazaných dat (nezáleží ani na objemu, ale na množství – spousta malých souborů), že je Nextcloud nedokázal zobrazit ve webovém rozhraní. Po prostudování administračního manuálu jsem našel řešení přes příkazový řádek. Možná se to bude někomu hodit.

Vymazání smazaných uživatelských souborů:

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


Chcete-li vymazat soubory uživatelské verze:

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

Vrátit se na začátek, k obsahu.

Historie vzniku domácího cloudu. Část 5. Aktualizace 2019 – PHP 7.2, MariaDB 10.4 a Nextcloud 17
Verze textu: 1.1.1.
Datum první publikace: 15.01.2020.
Datum poslední úpravy: 15.01.2020.

Aktualizovat protokol1.1.1 [15-01-2020] Oprava překlepů.

1.1.0 [15-01-2020] Opraven přípravný kód databáze nexcloud umožňující čtyřbajtové kódování.

1.0.0 [15-01-2020] První verze.

Zdroj: www.habr.com