La història de la creació d'un núvol domèstic. Part 5. Actualització 2019: PHP 7.2, MariaDB 10.4 i Nextcloud 17

Fa dos anys vaig publicar una sèrie d'articles sobre el tema de crear un servidor web basat en Debian 8 i executar-hi el servei Nextcloud 11. Uns mesos més tard, va aparèixer un afegit que contenia informació "diferencial" sobre la instal·lació de Nextcloud 13 a Debian. 9. A finals de 2018, acabo d'actualitzar Debian i Nextcloud i no vaig trobar cap problema inusual o interessant. L'actualització de finals de 2019 ja era més interessant i val la pena escriure'n.

La història de la creació d'un núvol domèstic. Part 5. Actualització 2019: PHP 7.2, MariaDB 10.4 i Nextcloud 17

Aquest article serà principalment útil per a aquells que, segons les instruccions dels quatre articles anteriors, van "muntar" Nextcloud 13 a Debian 9 (salvo a una dotzena dels meus subscriptors sobre el tema de Nextcloud, especialment a aquells per als quals aquesta va ser la seva primera experiència al món de Linux). Per a aquells que tinguin previst crear un servei des de zero, us aconsello que prengui com a base els primers quatre articles d'aquesta sèrie, ajustats per a les versions actuals de Debian 10 i Nextcloud 17. Per als usuaris de Linux amb experiència, l'article pot trigar una mica. situar-se entre "trivial i inútil" i "no està malament, full de trucs tot en un lloc".

Taula de continguts

Part 1: Configuració d'un entorn Debian per a l'ús diari
Part 2: Creació d'un servidor: configuració de LAMP a Debian
Part 3. Creació d'un núvol personal: instal·lació i configuració de Nextcloud
Part 4. Actualització 2018: Debian 9 i Nextcloud 13
Part 5. Actualització 2019: PHP 7.2, MariaDB 10.4 i Nextcloud 17

Navegació ràpida per capítols

Prefaci
Actualització de Debian
S'està actualitzant PHP a la versió 7.2
Actualització de MariaDB a la versió 10.4
Actualització de Nextcloud a la versió 17
Paraula posterior

Prefaci

Inicialment, volia instal·lar i configurar Nginx a Debian 10, a sobre de la qual es podria instal·lar sense cap problema l'actual Nextcloud 17. Però no he trobat el temps per a tot això, així que aquest article és un conjunt d'instruccions per actualitzar. Nextcloud de la 13 a la versió actual 17 amb una preparació preliminar del servidor web.

En primer lloc, hem d'explicar per què es van requerir canvis radicals al costat del servidor web. El nostre servidor es basa en la Debian 9 actual i compatible. Només podeu actualitzar el sistema operatiu i tots els components del servidor web rebran almenys actualitzacions de seguretat. Tot seria fantàstic si continuéssim utilitzant Nextcloud 13 o actualitzéssim només a la versió 14. Però Nextcloud 13 ja no és compatible i el suport per a la versió 14 ja està en marxa. A partir de la versió 15, Nexctcloud oferirà convertir la base de dades a big int per suportar la codificació de quatre bytes, i amb MariaDB 10.1 això serà molt problemàtic. Nexctcloud 17 requereix PHP 7.1-7.3, mentre que Debian 9 només conté la versió 7.0 als seus repositoris natius. Seria més correcte, en termes de fiabilitat i predictibilitat, actualitzar a la penúltima versió de Nextcloud, però després d'un parell d'anys em vaig sentir tan confiat en la fiabilitat d'aquest servei que vaig voler actualitzar a la darrera versió i actualitzar el servidor web amb reserva per al futur. Per tant, per actualitzar a Nexctcloud 17, és òptim actualitzar MariaDB a la versió estable actual 10.4 i PHP a 7.2. Exactament el 7.2, no el 7.4 actual. El fet és que Nextcloud 13 requereix PHP 5.6, 7.0 - 7.2 i Nexctcloud 17 requereix PHP 7.1 - 7.3. És convenient utilitzar PHP 7.2 per minimitzar els esforços d'actualització. No cal actualitzar el vostre servidor Apache; només cal que instal·leu les actualitzacions de seguretat distribuïdes per l'equip de suport de Debian. Però per a les actualitzacions de MariaDB i PHP haureu de connectar repositoris externs.

Quan acabava de familiaritzar-me amb Nextcloud, el vaig actualitzar "a mà": mitjançant una comanda especial de la consola, el lloc es va canviar al mode de manteniment, l'arxiu amb la nova versió del lloc es va descarregar i desempaquetar manualment, els fitxers s'han actualitzat i s'ha iniciat el procediment d'actualització. Aquesta actualització normalment portava als resultats esperats, tot i que no em feia mandra fer una còpia de seguretat del lloc, la base de dades i les dades dels usuaris. Però les actualitzacions automàtiques de vegades portaven a tot tipus de sorpreses. Però d'això fa molt de temps, l'estabilitat del motor ha augmentat molt des de llavors, i aquesta vegada he fet actualitzacions exclusivament a través de la interfície web. És cert que encara no he pogut allunyar-me de la línia d'ordres. Durant una actualització iterativa de cada versió nova, apareixeran diversos avisos i notificacions al tauler de control, que s'hauran d'"eliminar" executant ordres de manera significativa a la línia d'ordres. No cal que feu això: el servei continuarà funcionant. Tot i que aquest enfocament és fonamentalment incorrecte, Nextcloud va treballar per a mi en aquest mode durant 3 mesos abans de tractar deliberadament els problemes que van sorgir.

Debain actualització

Atura el servidor web:

# service apache2 stop


I actualitzem:

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


Després de l'actualització, podeu comprovar la versió del sistema operatiu i fer una prova de reinici per assegurar-vos que tot comença amb normalitat després de l'actualització:

# cat /etc/debian_version
# reboot


S'està actualitzant PHP a la versió 7.2

Atura el servidor web:

# service apache2 stop


Afegiu certificat i claus PPA, dipòsit 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


En eliminar la versió antiga de PHP 7.0, phpmyadmin també s'eliminarà, ja que esborrarem les "traces" dels paquets suprimits mitjançant l'eliminació automàtica. Això no causarà cap dificultat particular, ja que no es va fer cap configuració especial per a phpmyadmin i tornar-lo a instal·lar no suposarà cap problema.

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


Instal·lació dels mòduls necessaris per a 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


[ Aquest text escrit específicament per al lloc www.habr.com per l'autor Alexandre S.
Un enllaç a la font és opcional, però es recomana esmentar-lo! ]

Comprovem la versió de PHP, iniciem el servidor web i comprovem la funcionalitat de Nextcloud:

# php -v
# service apache2 start


Actualització de MariaDB a la versió 10.4

A la web del projecte hi ha pàgina interessant, on heu d'indicar el vostre sistema operatiu, el seu llançament i seleccionar la versió de la base de dades. Un cop seleccionat, es generarà el codi per afegir el repositori.

Atura el servidor web:

# service apache2 stop


Afegiu un repositori i actualitzeu paquets:

# 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


En instal·lar MariaDB, el gestor de paquets eliminarà correctament la versió anterior i n'instal·larà la nova, mentre que totes les bases de dades es conservaran. Tanmateix, per descomptat, es recomana fer una còpia de seguretat de la base de dades Nextcloud.

Instal·leu MariaDB i inicieu el procediment d'actualització:

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


Després d'introduir la contrasenya, MariaDB s'actualitzarà i podeu configurar-la seguint instruccions de la segona part:

# mysql_secure_installation


Llencem el servidor web i comprovem la funcionalitat de Nextcloud:

# service apache2 start


Actualització de Nextcloud a la versió 17

Per iniciar l'actualització, cal que inicieu sessió al servei amb un compte d'administrador, aneu a la configuració i obriu "Configuració general" a la secció administrativa. Nextcloud mostra la versió instal·lada i la versió disponible per a l'actualització, que es pot iniciar fent clic al botó "Obre la finestra d'actualització". Un cop iniciat, Nextcloud fa una còpia de seguretat, baixa i verifica la integritat dels fitxers d'actualització, activa el mode de manteniment i actualitza els fitxers. A continuació ve la pregunta "Mantenir el mode de manteniment actiu"? Cal anar amb compte aquí. Una resposta positiva deixarà el lloc en mode de manteniment: se suposa que l'administrador sap què ha de fer a continuació i ho farà manualment. En cas contrari, Nextcloud ho farà tot ell mateix, així que feu clic al botó "No" per continuar.

Les actualitzacions es realitzen de manera iterativa. En primer lloc, Nextcloud 13.x s'actualitzarà a la darrera versió de la branca 14.x. Després d'això, haureu d'anar de nou al centre d'administració i iniciar l'actualització, ara de 14.x a 15.x. I així successivament fins que s'arribi a l'última versió actual possible. Després de cada actualització, a la pàgina "Configuració general" de la secció administrativa, es mostrarà una llista de suggeriments i problemes trobats, així com recomanacions per resoldre'ls. A continuació parlarem del que cal fer després de cada actualització.

Abans de l'actualització

A les últimes versions de Nextcloud, es recomana habilitar PHP OPcache per millorar el rendiment. És estrany que d'alguna manera em vaig perdre aquest punt fa un parell d'anys, ja que OPcache va aparèixer a PHP 5. A /etc/php/7.2/apache2/php.ini cal descomentar i editar els paràmetres següents:

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


Actualització 13.x -> 14.x

Restauració d'índexs de taules:

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


Actualització 14.x -> 15.x

Preparem la base de dades nextcloud per habilitar la codificació de quatre bytes:

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


Activeu el suport per a la codificació de quatre bytes a Nextcloud:

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


Taules de conversió:

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


Recuperació d'índexs de taules perduts:

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


Converteix els índexs de la taula a bigint:

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


Actualització 15.x -> 16.x

Recuperació d'índexs de taules perduts:

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


Converteix els índexs de la taula a bigint:

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


Actualització 16.x -> 17.x

No es requereix cap acció addicional.

Paraula posterior

Seguint aquestes instruccions, s'ha actualitzat una màquina virtual amb Nextcloud 13. L'ús d'una màquina virtual permet no fer còpies de seguretat dels fitxers de Nextcloud i de la seva base de dades, ja que en cas de problemes només podeu tornar el fitxer de la màquina virtual desat anteriorment i començar de nou. de nou. Tanmateix, això no s'aplica a la carpeta amb dades d'usuari, que també recomano fer una còpia de seguretat juntament amb la màquina virtual amb Nextcloud. En el meu cas, el "núvol" s'utilitza com a carpeta remota amb versions automàtica i amb la direcció de sincronització "només allà", i perdre aquestes dades no va ser crític per a mi; només hauria de tornar a fer la sincronització durant diverses hores. . Malgrat el meu menyspreu per la regla "desa per si de cas" de tota la vida, l'actualització es va fer sense cap problema i tots els clients van començar a treballar amb Nextcloud 17 sense cap problema. Estic impressionat, Frank Karlitshek: tu i el teu equip esteu fent un gran treball. feina!

Després de l'actualització, vaig decidir esborrar les dades de l'usuari, que, a jutjar per les estadístiques, ocupaven uns dos terabytes. No tenia tantes dades operatives: la major part del volum estava ocupada per fitxers de versió i fitxers suprimits. El problema que em vaig trobar va ser que per a un usuari hi havia tantes dades esborrades (ni tan sols és una qüestió de volum, sinó de quantitat, molts fitxers petits) que Nextcloud no podia mostrar-les a la interfície web. Després d'estudiar el manual d'administració, vaig trobar una solució mitjançant la línia d'ordres. Potser això serà útil per a algú.

Per esborrar els fitxers d'usuari suprimits:

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


Per esborrar els fitxers de versió d'usuari:

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

Torna al principi, a la taula de continguts.

La història de la creació d'un núvol domèstic. Part 5. Actualització 2019: PHP 7.2, MariaDB 10.4 i Nextcloud 17
Versió de text: 1.1.1.
Data primera publicació: 15.01.2020/XNUMX/XNUMX.
Data de l'última modificació: 15.01.2020/XNUMX/XNUMX.

Actualitza el registre1.1.1 [15-01-2020] Correcció d'errors tipogràfics.

1.1.0 [15-01-2020] S'ha corregit el codi de preparació de la base de dades de nexcloud per habilitar la codificació de quatre bytes.

1.0.0 [15-01-2020] Primera versió.

Font: www.habr.com