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ů o vytváření webového serveru na bázi Debianu 8 a spuštění služby Nextcloud 11. Po několika měsících se objevilo doplnění, které obsahovalo „diferenciální“ informace o instalaci Nextcloudu 13 na Debian 9. Na konci roku 2018 jsem jednoduše aktualizoval Debian a Nextcloud a nesetkal jsem se s žádnými neobvyklými nebo zajímavými problémy. Aktualizace na konci roku 2019 byla již zajímavější a stálo za to o ní napsat.

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

Tento článek bude především užitečný pro ty, kteří podle pokynů minulých čtyř článků „sestavili“ svůj Nextcloud 13 na Debianu 9 (pozdravuji desítku svých příznivců na téma Nextcloud, zejména ty, pro které to byla první zkušenost se světem Linuxu). Těm, kdo se chystají udělat službu od nuly, doporučuji vzít v úvahu první čtyři články této série se zohledněním aktuálních verzí Debianu 10 a Nextcloudu 17. Pro zkušené uživatele Linuxu může článek zabrat nějaké místo mezi „triviální a nepotřebný“ a „docela dobře, příručka vše v jednom místě“.

Obsah

Část 1. Nastavení prostředí Debian pro každodenní použití
Část 2. Vytvoření serveru – nastavení LAMP v Debianu
Část 3. Vytvoření osobního cloudu – instalace a konfigurace Nextcloudu
Čá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 kapitole

Úvod
Aktualizace Debianu
Aktualizace PHP na verzi 7.2
Aktualizace MariaDB na verzi 10.4
Aktualizace Nextcloudu na verzi 17
Poznámka na závěr

Úvod

Původně jsem chtěl na Debian 10 nainstalovat a nastavit Nginx, na což by bez problémů nainstaloval aktuální Nextcloud 17. Ale na to vše jsem nebyl schopen najít čas, takže tento článek představuje soubor pokynů k aktualizaci Nextcloudu z 13 na aktuální verzi 17 s předběžnou přípravou webového serveru.

Nejprve je třeba vysvětlit, proč byly na straně webového serveru potřebné radikální změny. Náš server je založen na aktuální a podporované verzi Debian 9. Můžeme jednoduše aktualizovat operační systém a všechny komponenty webového serveru získají alespoň bezpečnostní aktualizace. Všechno by bylo skvělé, pokud bychom dále používali Nextcloud 13 nebo se aktualizovali pouze na verzi 14. Ale Nextcloud 13 už není podporován a podpora 14. verze je

Když jsem se poprvé seznamoval s Nextcloud, aktualizoval jsem ho "ručně": z konzole speciálním příkazem byl web převeden do režimu údržby, ručně se stáhl a rozbalil archiv s novou verzí webu, aktualizovaly se soubory a spustil se proces aktualizace. Tato aktualizace obvykle vedla k očekávaným výsledkům, i když jsem si džil zálohu webu, databáze a uživatelských dat. Automatické aktualizace však občas přinášely různá překvapení. Ale to už je dávno, stabilita systému se od té doby výrazně zvýšila a tentokrát jsem prováděl aktualizace výhradně přes webové rozhraní. Sice jsem se nemohl vyhnout příkazové řádce. Během iterativní aktualizace se v ovládacím panelu objeví různá upozornění a notifikace, která je třeba "odstraňovat" rozumným prováděním příkazů v příkazové řádce. Můžete to udělat, ale systém bude fungovat i tak. Tento přístup je však zásadně špatný, já měl Nextcloud v takovém režimu 3 měsíce, než jsem se cíleně zabýval vzniklými otázkami.

Aktualizace Debain

Zastavujeme webový server:

# service apache2 stop


A aktualizujeme:

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


Po aktualizaci můžete zkontrolovat verzi OS a provést kontrolní restart, abyste se ujistili, že po aktualizaci vše správně startuje:

# cat /etc/debian_version
# reboot


Aktualizace PHP na verzi 7.2

Zastavujeme webový server:

# service apache2 stop


Přidáváme certifikát a klíče PPA, repozitář 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 odstraňování staré verze PHP 7.0 se také odstraní phpmyadmin, protože "stopy" po odstraněných balíčcích vyčistíme pomocí autoremove. To nezpůsobí žádné zvláštní potíže, protože žádná speciální nastavení pro phpmyadmin nebyla provedena a jeho opětovná instalace nebude představovat žádné problémy.

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


Instalace modulů potřebný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 byl napsán speciálně pro web habr.com autorem AlexanderS.
Odkaz na zdroj není povinný, ale jeho zmínění je velmi žádoucí! ]

Kontrolujeme verzi PHP, spouštíme webový server a kontrolujeme funkčnost Nextcloud:

# php -v
# service apache2 start


Aktualizace MariaDB na verzi 10.4

Na webu projektu je zajímavá stránka, na které je třeba uvést svou OS, její vydání a vybrat verzi databáze. Po výběru se vygeneruje kód pro přidání repozitáře.

Zastavujeme webový server:

# service apache2 stop


Přidáváme repozitář 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


Při instalaci MariaDB správce balíčků správně odstraní předchozí verzi a nainstaluje novou, všechny databáze přitom zůstanou zachovány. Nicméně je samozřejmě doporučeno vytvořit zálohu databáze Nextcloud.

Instalujeme MariaDB a spouštíme postup aktualizace:

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


Po zadání hesla se MariaDB aktualizuje a bude ji možné nakonfigurovat podle pokynů z druhé části:

# mysql_secure_installation


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

# service apache2 start


Aktualizace Nextcloudu na verzi 17

Pro spuštění aktualizace se musíte přihlásit do služby s administrátorským účtem, přejít do nastavení a otevřít „Obecná nastavení“ v administrativní sekci. Nextcloud zobrazuje nainstalovanou verzi a verzi dostupnou k aktualizaci, kterou lze spustit stisknutím tlačítka „Otevřít okno aktualizace“. Po zahájení Nextcloud provede zálohu, stáhne a zkontroluje integritu aktualizačních souborů, aktivuje režim údržby a aktualizuje soubory. Dále se zobrazí otázka „Udržet aktivní režim údržby?“ Zde je důležité být obezřetný. Kladná odpověď ponechá web v režimu údržby — předpokládá se, že administrátor ví, co dělat dál a udělá to ručně. Jinak Nextcloud vše udělá sám, proto pro pokračování stiskněte tlačítko „Ne“.

Aktualizace probíhají iterativně. Nejprve se Nextcloud 13.x aktualizuje na nejnovější verzi větve 14.x. Poté se bude nutné znovu přihlásit do administračního centra a spustit aktualizaci, nyní již z 14.x na 15.x. A tak dále, dokud nebude dosaženo poslední možné aktuální verze. Po každé aktualizaci na stránce „Obecná nastavení“ v administrativní sekci bude zobrazen seznam nabídek a vzniklých problémů, stejně jako doporučení k jejich řešení. Níže se hovoří o tom, co bude třeba udělat po každé aktualizaci.

Před aktualizací

V nejnovějších verzích Nextcloudu se doporučuje zapnout PHP OPcache pro zlepšení výkonu. Je divné, že jsem na tento aspekt nějak zapomněl před pár lety, protože OPcache se objevila již v PHP 5. V /etc/php/7.2/apache2/php.ini je třeba 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

Obnovujeme indexy tabulek:

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


Aktualizace 14.x -> 15.x

Připravujeme databázi nextcloud pro aktivaci kódování s čtyřmi bajty:

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


Aktivujeme podporu kódování se čtyřmi bajty v Nextcloudu:

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


Transformujeme tabulky:

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


Obnovujeme ztracené indexy tabulek:

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


Transformujeme indexy tabulek na bigint:

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


Aktualizace 15.x -> 16.x

Obnovujeme ztracené indexy tabulek:

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


Transformujeme indexy tabulek na bigint:

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


Aktualizace 16.x -> 17.x

Žádné další akce nejsou potřebné.

Poznámka na závěr

Podle tohoto návodu byla aktualizována virtuální stroj s Nextcloudem 13. Používání virtuálního stroje znamená, že nemusím vytvářet zálohy souborů Nextcloud a jeho databáze, protože v případě problémů mohu jednoduše vrátit dříve uložený soubor virtuálního stroje a začít znovu. To se však netýká složky s uživatelskými daty, kterou také doporučuji zálohovat spolu s virtuálním strojem Nextcloudu. V mém případě se „cloud“ používá jako vzdálená složka s automatickou verzionovaností, přičemž směrem synchronizace je „jen tam“, a ztráta těchto dat by pro mě nebyla kritická — jen bych musel znovu několik hodin provádět synchronizaci. I přes mé pohrdání osvědčeným pravidlem „zálohuj pro každý případ“ proběhla aktualizace bez problémů a všichni klienti také bez problémů začali fungovat s Nextcloudem 17. Jsem ohromen, Frank Karlitschek — vy a váš tým odvádíte skvělou práci!

Po aktualizaci jsem se rozhodl vyčistit uživatelská data, která podle statistik zabírala téměř dva terabajty. Tolik operativních dat jsem neměl — většinu objemu zabíraly soubory verzí a odstraněné soubory. Problém, se kterým jsem se setkal, byl, že pro jednoho uživatele bylo tolik odstraněných dat (nešlo ani tak o objem, ale o množství — velmi mnoho malých souborů), že Nextcloud je nemohl zobrazit v webovém rozhraní. Po prostudování administrátorského průvodce jsem našel řešení přes příkazový řádek. Možná to někomu přijde vhod.

Čistění odstraněných souborů uživatele user:

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


Čistění souborů verzí uživatele user:

# 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ího zveřejnění: 15.01.2020.
Datum poslední úpravy: 15.01.2020.

Log aktualizací1.1.1 [15-01-2020]
Oprava překlepů.

1.1.0 [15-01-2020]
Opraven kód pro přípravu databáze nexcloud pro aktivaci kódování se čtyřmi bajty.

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

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster