A házi felhő létrehozásának története. 5. rész. Frissítés 2019 – PHP 7.2, MariaDB 10.4 és Nextcloud 17

Két évvel ezelőtt közzétettem egy cikksorozatot a Debian 8 alapú webkiszolgáló létrehozásáról és a Nextcloud 11 futtatásáról. Néhány hónappal később megjelent egy kiegészítés, amely a Debian 9-en történő Nextcloud 13 telepítésével kapcsolatos "differenciáló" információkat tartalmazott. 2018 végén egyszerűen frissítettem a Debian-t és a Nextcloud-ot, és nem találkoztam különösebben szokatlan vagy érdekes problémákkal. A 2019 végén végrehajtott frissítés már érdekesebb volt, és erről érdemes volt írni.

A házi felhő létrehozásának története. 5. rész. Frissítés 2019 – PHP 7.2, MariaDB 10.4 és Nextcloud 17

Ez a cikk elsősorban azoknak lesz hasznos, akik a korábbi négy cikk útmutatásai alapján "összeszerelték" a Nextcloud 13-at Debian 9-en (üdvözlöm tíz Nextcloud témájú követőmet, különösen azokat, akiknek ez volt az első élményük a Linux világában). Akik nulláról szeretnének szolgáltatást létrehozni, azoknak javaslom, hogy a ciklus első négy cikkére építsenek, figyelembe véve a Debian 10 és a Nextcloud 17 aktuális verzióit. Tapasztalt Linux felhasználók számára a cikk valahol a "triviális és haszontalan" és az "elfogadható, egy helyen összegyűjtött útmutató" között helyezkedik el.

Tartalomjegyzék

1. rész. A Debian környezet beállítása mindennapi használatra
2. rész. A kiszolgáló létrehozása – LAMP beállítása Debianon
3. rész. Személyes felhő létrehozása – Nextcloud telepítése és beállítása
4. rész. Frissítés 2018 – Debian 9 és Nextcloud 13
5. rész. Frissítés 2019 – PHP 7.2, MariaDB 10.4 és Nextcloud 17

Gyors navigáció a fejezetben

Bevezető
Debian frissítése
PHP frissítése 7.2 verzióra
MariaDB frissítése 10.4 verzióra
Nextcloud frissítése 17 verzióra
Utószó

Bevezető

Eredetileg a Debian 10-en szerettem volna Nginx-et telepíteni és beállítani, amire rá lehetett volna telepíteni a legfrissebb Nextcloud 17-et. De mindehhez nem tudtam időt találni, ezért ez a cikk a Nextcloud 13-ról a legfrissebb 17 verzióra történő frissítéshez szükséges utasítások gyűjteményét tartalmazza, a webkiszolgáló előkészítésével együtt.

Első lépésként tisztázni kell, miért volt szükség radikális változásokra a webszerver oldalán. Szerverünk az aktuális és támogatott Debian 9-en alapul. Egyszerűen frissíthetjük az operációs rendszert, és a webszerver összes komponense legalább biztonsági frissítéseket kap. Mindez remek lenne, ha továbbra is a Nextcloud 13-at használnánk, vagy csak a 14-es verzióra frissítenénk. De a Nextcloud 13 már nem támogatott, míg a 14-es verzió támogatása a végéhez közeledik. A 15-ös verziótól a Nextcloud már felajánlja az adatbázis átkonvertálását big int típusra a négybájtos kódolás támogatásához, és ezzel a MariaDB 10.1-gyel nem lesz könnyű dolgod. A Nextcloud 17 a PHP 7.1-7.3-as verziót igényli, míg a Debian 9 csak a 7.0-ás verziót tartalmazza a natív repóiban. A megbízhatóság és kiszámíthatóság szempontjából helyesebb lenne a Nextcloud utolsó előtti verziójára frissíteni, de az elmúlt években annyira meg voltam győződve ennek a szolgáltatásnak a megbízhatóságáról, hogy szerettem volna frissíteni a legújabb verzióra, és felkészíteni a webszervert a jövőre. Ezért a Nextcloud 17-re való frissítéshez optimális a MariaDB frissítése a legújabb stabil 10.4-es verzióra, és a PHP frissítése 7.2-re. Pontosan 7.2-re, nem a legújabb 7.4-re. Azért, mert a Nextcloud 13 PHP 5.6-ot, 7.0-7.2-t igényel, míg a Nextcloud 17 PHP 7.1-7.3-at igényel. A PHP 7.2 használata kényelmes az frissítési teendők minimalizálása érdekében. Az Apache szervert nem szükséges frissíteni – elegendő a Debian támogatói csapata által kiadott biztonsági frissítéseket telepíteni. Azonban a MariaDB és a PHP frissítéséhez külső repókat kell csatlakoztatni.

Amikor először ismerkedtem meg a Nextclouddal, manuálisan frissítettem: a konzolon egy speciális parancs segítségével a weboldal karbantartási módba került, majd kézzel letöltöttem és kicsomagoltam az új verziót, frissítettem a fájlokat, és elindítottam a frissítési folyamatot. Ez a frissítés általában a várt eredményekhez vezetett, bár sosem voltam rest biztonsági mentést készíteni az oldalról, az adatbázisról és a felhasználói adatokból. Az automatikus frissítés viszont néha meglepetéseket hozott. De ez régen volt, azóta a motor stabilitása jelentősen megnőtt, és most már kizárólag a webes felületen hajtottam végre a frissítéseket. Persze a parancssort nem tudtam teljesen elkerülni. Iteratív frissítésnél minden egyes új verziónál különböző figyelmeztetések és értesítések jelennek meg a vezérlőpulton, amelyeket el kell távolítani, ésszerűen végrehajtva a parancsokat a parancssorban. Ezt meg lehet kerülni – a szolgáltatás ennek ellenére működni fog. Habár ez a megközelítés alapvetően helytelen, a Nextcloud három hónapig működött ebben a módban, mielőtt szándékosan foglalkoztam a felmerült kérdésekkel.

Debian frissítése

A webszerver leállítása:

# service apache2 stop


És frissítünk:

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


A frissítés után ellenőrizhetjük az operációs rendszer verzióját, és elvégezhetünk egy ellenőrző újraindítást, hogy megbizonyosodjunk arról, hogy a frissítés után minden rendben elindul:

# cat /etc/debian_version
# reboot


PHP frissítése 7.2 verzióra

A webszerver leállítása:

# service apache2 stop


Hozzáadjuk a PPA tanúsítványt és kulcsokat, a PHP tárolót:

# 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


A régi PHP 7.0 eltávolításával a phpmyadmin is törlésre kerül, mivel az eltávolított csomagok „nyomait” automatikusan töröljük az autoremove használatával. Ez nem okoz különösebb nehézségeket, mivel a phpmyadmin számára nem voltak külön beállítások, és az újratelepítése sem jelent gondot.

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


A Nextcloud 17-hez szükséges modulok telepítése:

# 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


[ Ez a szöveg kifejezetten a weboldal számára készült habr.com szerzője AlexanderS.
A forrás megadása nem kötelező, de említése rendkívül kívánatos!

Ellenőrizzük a PHP verziót, elindítjuk a webszervert és ellenőrizzük a Nextcloud működését:

# php -v
# service apache2 start


MariaDB frissítése 10.4 verzióra

A projekt honlapján van egy érdekes oldal, ahol meg kell adni az operációs rendszert, annak kiadását, és ki kell választani az adatbázis verziót. A választás után generálódik egy kód a tároló hozzáadásához.

A webszerver leállítása:

# service apache2 stop


Hozzáadjuk a tárolót és frissítjük a csomagokat:

# 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


A MariaDB telepítésekor a csomagkezelő helyesen eltávolítja az előző verziót, és telepíti az újat, miközben az összes adatbázis megmarad. Azonban egy biztonsági mentés készítése a Nextcloud adatbázisról természetesen ajánlott.

Telepítjük a MariaDB-t és elindítjuk a frissítési eljárást:

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


A jelszó megadása után a MariaDB frissül, és lehetőség nyílik konfigurálni, követve a második rész utasításait:

# mysql_secure_installation


Elindítjuk a webszervert, és ellenőrizzük a Nextcloud működését:

# service apache2 start


Nextcloud frissítése 17 verzióra

A frissítés elindításához be kell jelentkezni az adminisztrátori fiókba, el kell navigálni a beállításokhoz, és meg kell nyitni a „Általános beállítások” menüpontot az adminisztrációs részben. A Nextcloud meg mutatja az aktuális verziót és a rendelkezésre álló frissítési verziót, amelyet elindíthat a „Frissítési ablak megnyitása” gombra kattintva. A Nextcloud kezdeményezés után készít egy biztonsági mentést, letölti és ellenőrzi a frissítési fájlok integritását, bekapcsolja a karbantartási módot, és frissíti a fájlokat. Ezt követően a kérdés „Tartsuk a karbantartási módot aktívan”? Itt fontos, hogy figyelmesek legyünk. A pozitív válasz a webhelyet karbantartási módban hagyja, ami azt feltételezi, hogy az adminisztrátor tudja, mit kell tenni ezután, és ezt megteszi manuálisan. Ellenkező esetben a Nextcloud mindent automatikusan elvégez, ezért a folytatáshoz kattintsunk a „Nem” gombra.

A frissítések iteratívan történnek. Először a Nextcloud 13.x frissül a 14.x legújabb verziójára. Ezt követően ismét be kell lépni az admin központba, és el kell indítani a frissítést, már a 14.x-ről a 15.x-re. És így tovább, amíg el nem érjük a legutolsó elérhető verziót. Minden frissítés után az adminisztrációs rész „Általános beállítások” oldalán megjelenik egy lista a javaslatokról és a felmerült problémákról, valamint azok megoldására vonatkozó ajánlásokról. Az alábbiakban arról lesz szó, hogy mit kell tenni minden frissítés után.

Frissítés előtt

A legújabb Nextcloud verziókon ajánlott az PHP OPcache engedélyezése a teljesítmény javítása érdekében. Furcsa, hogy ezt a pontot pár évvel ezelőtt valahogy figyelmen kívül hagytam, mivel az OPcache még a PHP 5-ben jelent meg. A /etc/php/7.2/apache2/php.ini fájlban ki kell venni a megjegyzést, és módosítani kell a következő paramétereket:

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


Frissítés 13.x -> 14.x

Az indexek helyreállítása a táblákban:

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


Frissítés 14.x -> 15.x

Előkészítjük a nextcloud adatbázist a négy bájtos kódolás aktiválásához:

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


A négy bájtos kódolás támogatásának engedélyezése a Nextcloudban:

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


A táblák átalakítása:

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


Az elveszett táblák indexeinek helyreállítása:

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


A táblák indexeinek átalakítása bigint típusúra:

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


Frissítés 15.x -> 16.x

Az elveszett táblák indexeinek helyreállítása:

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


A táblák indexeinek átalakítása bigint típusúra:

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


Frissítés 16.x -> 17.x

Nincsenek további lépések szükségesek.

Utószó

A következő útmutató segítségével frissítették a virtuális gépet a Nextcloud 13 verzióra. A virtuális gép használata lehetővé teszi a Nextcloud fájljainak és adatbázisának biztonsági másolatának kihagyását, mivel problémák esetén egyszerűen vissza lehet állítani a korábban mentett virtuális gép fájlt, és újrakezdhetjük az egészet. Azonban ez nem vonatkozik a felhasználói adatokra, amelyeket ajánlok, hogy a Nextcloud virtuális gépével együtt biztonsági másolatba helyezzenek. Az én esetemben a „felhő” egy távoli mappaként működik automatikus verziókezeléssel, amely csak „oda” irányú szinkronizálást végez, és nekem ezeknek az adatoknak a elvesztése nem lett volna kritikus – csupán néhány órát kellett volna újra szinkronizálnom. Annak ellenére, hogy figyelmen kívül hagytam az élet szabályát, hogy „mindig készíts biztonsági másolatot”, a frissítés problémák nélkül zajlott, és minden ügyfél gond nélkül működött a Nextcloud 17-tel. Meg vagyok elégedve, Frank Karlitschek — Ön és csapata nagyszerű munkát végez!

A frissítés után úgy döntöttem, hogy megtisztítom a felhasználói adatokat, amelyek a statisztikák szerint megközelítőleg két terabyte-ot foglaltak el. Ilyen mennyiségű operatív adatom sosem volt — a legtöbb terjedelmet a fájlverziók és a törölt fájlok tették ki. A probléma, amivel szembesültem, az volt, hogy egy felhasználónál annyira sok törölt adat volt (nem a méretük, hanem a mennyiségük számított — nagyon sok apró fájl), hogy a Nextcloud nem tudta őket megjeleníteni a webes felületen. A rendszeradminisztrációs útmutató tanulmányozása után megtaláltam a megoldást a parancssoron keresztül. Lehet, hogy valakinek ez hasznos lesz.

A törölt fájlok tisztítása a user felhasználónál:

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


A verziófájlok tisztítása a user felhasználónál:

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

Vissza a kezdőlapra, a tartalomjegyzékhez.

A házi felhő létrehozásának története. 5. rész. Frissítés 2019 – PHP 7.2, MariaDB 10.4 és Nextcloud 17
Szöveg verzió: 1.1.1.
Első kiadás dátuma: 2020.01.15.
Utolsó módosítás dátuma: 2020.01.15.

Frissítések naplója1.1.1 [15-01-2020]
A gépelési hibák javítása.

1.1.0 [15-01-2020]
Javítva a nextcloud adatbázis előkészítési kódja a négy bájtos kódolás engedélyezéséhez.

1.0.0 [15-01-2020]
Első verzió.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster