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.

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
Gyors navigáció a fejezetben
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
[ kifejezetten a weboldal számára készült szerzője .
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 , 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 :
# 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 userVissza .
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
