La historio de la kreado de hejma nubo. Parto 5. Ĝisdatigo 2019 - PHP 7.2, MariaDB 10.4 kaj Nextcloud 17

Antaŭ du jaroj mi publikigis serion da artikoloj pri la temo krei retservilon bazitan sur Debian 8 kaj ruli sur ĝi la servon Nextcloud 11. Kelkajn monatojn poste aperis aldono enhavanta "diferencajn" informojn pri instalo de Nextcloud 13 sur Debian. 9. Fine de 2018, mi ĵus ĝisdatigis Debian kaj Nextcloud kaj ne renkontis nekutimajn aŭ interesajn problemojn. La ĝisdatigo fine de 2019 jam estis pli interesa kaj priskribinda.

La historio de la kreado de hejma nubo. Parto 5. Ĝisdatigo 2019 - PHP 7.2, MariaDB 10.4 kaj Nextcloud 17

Ĉi tiu artikolo estos ĉefe utila al tiuj, kiuj laŭ la instrukcioj de la antaŭaj kvar artikoloj "kunmetis" Nextcloud 13 sur Debian 9 (mi salutas ĉirkaŭ dekduon da miaj abonantoj pri la temo Nextcloud, precipe al tiuj, por kiuj tio estis ilia unua sperto en la mondo de Linukso). Por tiuj, kiuj planas krei servon de nulo, mi konsilas al vi preni kiel bazon la unuajn kvar artikolojn de ĉi tiu serio, alĝustigitaj por la nunaj versioj de Debian 10 kaj Nextcloud 17. Por spertaj uzantoj de Linukso, la artikolo povas preni kelkajn. loko inter "triviala kaj senutila" kaj "ne malbona, tute-en-unu-loka trompfolio."

Enhavtabelo

Parto 1: Agordi Debianan medion por ĉiutaga uzo
Parto 2: Krei servilon - instali LAMP sur Debian
Parto 3. Krei personan nubon - instali kaj agordi Nextcloud
Parto 4. Ĝisdatigo 2018 - Debian 9 kaj Nextcloud 13
Parto 5. Ĝisdatigo 2019 - PHP 7.2, MariaDB 10.4 kaj Nextcloud 17

Rapida navigado de ĉapitroj

Antaŭparolo
Debian-ĝisdatigo
Ĝisdatigante PHP al versio 7.2
Ĝisdatigante MariaDB al versio 10.4
Ĝisdatigante Nextcloud al versio 17
Antaŭparolo

Antaŭparolo

Komence, mi volis instali kaj agordi Nginx sur Debian 10, super kiu la nuna Nextcloud 17 povus esti instalita senprobleme.Sed mi ne povis trovi la tempon por ĉio ĉi, do ĉi tiu artikolo estas aro de instrukcioj por ĝisdatigo. Nextcloud de 13 ĝis la nuna versio 17 kun prepara preparado de la retservilo.

Unue, ni devas klarigi kial radikalaj ŝanĝoj estis postulataj ĉe la retejo-servilo. Nia servilo baziĝas sur la nuna kaj subtenata Debian 9. Vi povas simple ĝisdatigi la operaciumon kaj ĉiuj komponantoj de la retservilo ricevos almenaŭ sekurecajn ĝisdatigojn. Ĉio estus bonega se ni daŭrigus uzi Nextcloud 13 aŭ ĝisdatigi nur al versio 14. Sed Nextcloud 13 ne plu estas subtenata, kaj subteno por la 14-a versio estas eliranta. Komencante kun versio 15, Nexctcloud proponos konverti la datumbazon al big int por subteni kvar-bajtan kodigon, kaj kun MariaDB 10.1 tio estos tre problema. Nexctcloud 17 postulas PHP 7.1-7.3, dum Debian 9 nur enhavas version 7.0 en siaj indiĝenaj deponejoj. Estus pli ĝuste, laŭ fidindeco kaj antaŭvidebleco, ĝisdatigi al la antaŭlasta versio de Nextcloud, sed post kelkaj jaroj mi iĝis tiom memfida pri la fidindeco de ĉi tiu servo, ke mi volis ĝisdatigi al la plej nova versio kaj ĝisdatigi la retservilo kun rezervo por la estonteco. Tial, por ĝisdatigi al Nexctcloud 17, estas optimume ĝisdatigi MariaDB al la nuna stabila versio 10.4, kaj PHP al 7.2. Ĝuste 7.2, ne la nuna 7.4. Fakte, Nextcloud 13 postulas PHP 5.6, 7.0 - 7.2, kaj Nexctcloud 17 postulas PHP 7.1 - 7.3. Estas oportune uzi PHP 7.2 por minimumigi ĝisdatigajn klopodojn. Ne necesas ĝisdatigi vian Apache-servilon - nur instalu la sekurecajn ĝisdatigojn distribuitajn de la Debian-subtena teamo. Sed por ĝisdatigoj de MariaDB kaj PHP vi devos konekti eksterajn deponejojn.

Kiam mi ĵus konatiĝis kun Nextcloud, mi ĝisdatigis ĝin "mane": uzante specialan komandon de la konzolo, la retejo estis ŝanĝita al prizorga reĝimo, la arkivo kun la nova versio de la retejo estis mane elŝutita kaj malpakita, la dosieroj. estis ĝisdatigitaj kaj la ĝisdatiga proceduro estis komencita. Tia ĝisdatigo kutime kondukis al la atendataj rezultoj, kvankam mi ne maldiligentis fari sekurkopion de la retejo, datumbazo kaj uzantdatumoj. Sed aŭtomataj ĝisdatigoj foje kaŭzis ĉiajn surprizojn. Sed tio estis antaŭ longa tempo, la stabileco de la motoro multe pliiĝis ekde tiam, kaj ĉi-foje mi faris ĝisdatigojn ekskluzive per la retejo-interfaco. Vere, mi ankoraŭ ne povis foriri de la komandlinio. Dum ripeta ĝisdatigo de ĉiu nova versio, diversaj avertoj kaj sciigoj aperos en la kontrolpanelo, kiu devos esti "forigita" signife plenumante komandojn sur la komandlinio. Vi ne devas fari ĉi tion - la servo ankoraŭ funkcios. Kvankam ĉi tiu aliro estas esence malĝusta, Nextcloud laboris por mi en ĉi tiu reĝimo dum 3 monatoj antaŭ ol mi celkonscie traktis la problemojn kiuj aperis.

Debain ĝisdatigo

Haltu la retservilon:

# service apache2 stop


Kaj ni ĝisdatigas:

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


Post la ĝisdatigo, vi povas kontroli la OS-version kaj fari provan rekomencon por certigi, ke ĉio komenciĝas normale post la ĝisdatigo:

# cat /etc/debian_version
# reboot


Ĝisdatigante PHP al versio 7.2

Haltu la retservilon:

# service apache2 stop


Aldonu atestilon kaj PPA-ŝlosilojn, PHP-deponejon:

# 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


Kiam vi forigas la malnovan version de PHP 7.0, phpmyadmin ankaŭ estos forigita, ĉar ni forigos la "spurojn" de la forigitaj pakaĵoj per aŭtoremove. Ĉi tio ne kaŭzos apartajn malfacilaĵojn, ĉar neniuj specialaj agordoj estis faritaj por phpmyadmin kaj instali ĝin denove ne estos problemoj.

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


Instalado de moduloj necesaj por 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


[ Ĉi tiu teksto skribita specife por la retejo www.habr.com aŭtoro AleksandroS.
Ligo al la fonto estas nedeviga, sed mencii ĝin estas tre rekomendinda! ]

Ni kontrolas la PHP-version, lanĉas la retservilon kaj kontrolas la funkciojn de Nextcloud:

# php -v
# service apache2 start


Ĝisdatigante MariaDB al versio 10.4

En la retejo de la projekto estas interesa paĝo, kie vi devas indiki vian OS, ĝian liberigon kaj elektu la datumbazan version. Unufoje elektita, la kodo por aldoni la deponejon estos generita.

Haltu la retservilon:

# service apache2 stop


Aldonu deponejon kaj ĝisdatigu pakaĵojn:

# 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


Instalante MariaDB, la pakaĵmanaĝero ĝuste forigos la antaŭan version kaj instalos la novan, dum ĉiuj datumbazoj estos konservitaj. Tamen, estas kompreneble rekomendite fari rezervan kopion de la Nextcloud-datumbazo.

Instalu MariaDB kaj komencu la ĝisdatigan proceduron:

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


Post enigi la pasvorton, MariaDB ĝisdatigos kaj vi povas agordi ĝin sekvante instrukcioj de la dua parto:

# mysql_secure_installation


Ni lanĉas la retservilon kaj kontrolas la funkciojn de Nextcloud:

# service apache2 start


Ĝisdatigante Nextcloud al versio 17

Por komenci la ĝisdatigon, vi devas ensaluti al la servo sub administra konto, iru al agordoj kaj malfermi "Ĝeneralajn agordojn" en la administra sekcio. Nextcloud montras la instalitan version kaj la disponeblan version por ĝisdatigo, kiuj povas esti lanĉitaj alklakante la butonon "Malfermu ĝisdatigfenestron". Post kiam komencite, Nextcloud faras sekurkopion, elŝutas kaj kontrolas la integrecon de la ĝisdatigaj dosieroj, ŝaltas prizorgan reĝimon kaj ĝisdatigas la dosierojn. Poste venas la demando "Konservu prizorgan reĝimon aktiva"? Vi devas esti singarda ĉi tie. Pozitiva respondo lasos la retejon en bontena reĝimo - oni supozas, ke la administranto scias kion fari poste kaj faros ĝin permane. Alie, Nextcloud faros ĉion mem, do alklaku la butonon "Ne" por daŭrigi.

Ĝisdatigoj estas faritaj ripete. Unue, Nextcloud 13.x estos ĝisdatigita al la plej nova versio de la branĉo 14.x. Post ĉi tio, vi devos iri al la administra centro denove kaj komenci la ĝisdatigon, nun de 14.x al 15.x. Kaj tiel plu ĝis la lasta ebla aktuala versio estos atingita. Post ĉiu ĝisdatigo, sur la paĝo "Ĝeneralaj Agordoj" en la administra sekcio, listo de sugestoj kaj problemoj renkontitaj, same kiel rekomendoj por solvi ilin, estos montrita. Malsupre ni parolos pri tio, kion oni devas fari post ĉiu ĝisdatigo.

Antaŭ ĝisdatigo

En la plej novaj versioj de Nextcloud, oni rekomendas ebligi PHP OPcache por plibonigi rendimenton. Estas strange, ke mi iel maltrafis ĉi tiun punkton antaŭ kelkaj jaroj, ĉar OPcache aperis en PHP 5. En /etc/php/7.2/apache2/php.ini vi devas malkomenti kaj redakti la jenajn parametrojn:

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


Ĝisdatigo 13.x -> 14.x

Restarigante tabelindeksojn:

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


Ĝisdatigo 14.x -> 15.x

Ni preparas la nextcloud-datumbazon por ebligi kvar-bajtan kodigon:

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


Ebligu subtenon por kvar-bajta kodado en Nextcloud:

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


Konverti tabeloj:

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


Reakiro de perditaj tabelindeksoj:

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


Konverti tabelindeksojn al bigint:

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


Ĝisdatigo 15.x -> 16.x

Reakiro de perditaj tabelindeksoj:

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


Konverti tabelindeksojn al bigint:

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


Ĝisdatigo 16.x -> 17.x

Neniu kroma ago estas bezonata.

Antaŭparolo

Sekvante ĉi tiujn instrukciojn, virtuala maŝino kun Nextcloud 13 estis ĝisdatigita. Uzado de virtuala maŝino ebligas al vi ne fari rezervajn kopiojn de Nextcloud-dosieroj kaj ĝia datumbazo, ĉar en kazo de problemoj vi povas simple resendi la antaŭe konservitan virtualan maŝinan dosieron kaj rekomenci. denove. Tamen, ĉi tio ne validas por la dosierujo kun uzantdatenoj, kiun mi ankaŭ rekomendas subteni kune kun la virtuala maŝino kun Nextcloud. En mia kazo, la "nubo" estas uzata kiel fora dosierujo kun aŭtomata versio, kaj kun la sinkroniga direkto "nur tie", kaj perdi ĉi tiujn datumojn ne estis maltrankviliga por mi - mi nur devus fari la sinkronigon denove dum kelkaj horoj. . Malgraŭ mia malrespekto por la dumviva "konservi por se okaze" regulo, la ĝisdatigo iris senprobleme kaj ĉiuj klientoj komencis labori kun Nextcloud 17 senprobleme. Mi estas impresita, Frank Karlitshek - vi kaj via teamo bonege faras laboro!

Post la ĝisdatigo, mi decidis forigi la uzantdatumojn, kiuj, se juĝante laŭ la statistiko, okupis ĉirkaŭ du terabajtojn. Mi ne havis tiom da operaciaj datumoj - plejparto de la volumo estis okupita de versio-dosieroj kaj forigitaj dosieroj. La problemo, kiun mi renkontis, estis, ke por unu uzanto estis tiom da forigitaj datumoj (eĉ ne temas pri volumeno, sed kvanto - multaj malgrandaj dosieroj), ke Nextcloud ne povis montri ĝin en la retinterfaco. Studinte la administran manlibron, mi trovis solvon per la komandlinio. Eble ĉi tio utilos al iu.

Por forigi forigitajn uzantdosierojn:

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


Por forigi uzantajn versiodosierojn:

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

Reveno al la komenco, al la enhavtabelo.

La historio de la kreado de hejma nubo. Parto 5. Ĝisdatigo 2019 - PHP 7.2, MariaDB 10.4 kaj Nextcloud 17
Teksta versio: 1.1.1.
Dato de unua publikigo: 15.01.2020/XNUMX/XNUMX.
Lasta redakta dato: 15.01.2020/XNUMX/XNUMX.

Ĝisdatigi protokolon1.1.1 [15-01-2020] Korekto de eraroj.

1.1.0 [15-01-2020] Fiksa nexcloud datumbaza preparkodo por ebligi kvar-bajtan kodigon.

1.0.0 [15-01-2020] Unua versio.

fonto: www.habr.com