A historia da creación dunha nube doméstica. Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 e Nextcloud 17

Hai dous anos publiquei unha serie de artigos sobre o tema da creación dun servidor web baseado en Debian 8 e lanzando o servizo Nextcloud 11 nel. Uns meses despois, apareceu un complemento que contiña información "diferencial" sobre a instalación de Nextcloud 13 en Debian 9. A finais de 2018 acabo de actualizar Debian e Nextcloud e non atopei ningún problema inusual ou interesante. A actualización de finais de 2019 foi máis interesante e merece a pena escribir sobre ela.

A historia da creación dunha nube doméstica. Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 e Nextcloud 17

Este artigo será útil principalmente para aqueles que, seguindo as instrucións dos catro artigos anteriores, "montaron" Nextcloud 13 por si mesmos. Debian 9 (Envío saúdos aos meus dez subscritores sobre o tema de Nextcloud, especialmente a aqueles para os que esta foi a primeira experiencia no mundo) Linux). Para aqueles que planean construír o servizo desde cero, recomendo usar os primeiros catro artigos desta serie como base, con axustes para as versións actuais. Debian 10 e Nextcloud 17. Para usuarios avanzados Linux O artigo podería estar entre "trivial e inútil" e "non está mal, unha guía completa".

Índice analítico

Parte 1. Configuración do ambiente Debian para o uso diario
Parte 2. Creación dun servidor: configuración de LAMP en Debian
Parte 3. Creación dunha nube persoal: instalación e configuración de Nextcloud
Parte 4. Actualización 2018 – Debian 9 e Nextcloud 13
Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 e Nextcloud 17

Navegación rápida por capítulos

Prefacio
Actualizar Debian
Actualizando PHP á versión 7.2
Actualizando MariaDB á versión 10.4
Actualizando Nextcloud á versión 17
Posterior

Prefacio

Ao principio quería Debian 10, instala e configura Nginx, que tería sido compatible sen problemas coa última versión de Nextcloud 17. Non obstante, non tiven tempo para todo isto, polo que este artigo é un conxunto de instrucións para actualizar Nextcloud de 13 á última versión 17, con preparación preliminar do servidor web.

Primeiro, precisamos explicar por que foron necesarios cambios radicais no servidor web. O noso servidor está baseado nun servidor actual e compatible Debian 9. Simplemente podes actualizar o sistema operativo e todos os compoñentes do servidor web recibirán polo menos actualizacións de seguridade. Todo iría ben se continuásemos a usar Nextcloud 13 ou só actualizásemos á versión 14. Non obstante, Nextcloud 13 xa non é compatible e a compatibilidade coa versión 14 está a diminuír. A partir da versión 15, Nextcloud ofrecerá converter a base de datos a big int para admitir a codificación de catro bytes e, con MariaDB 10.1, isto será moi problemático. Nextcloud 17 require PHP 7.1-7.3, mentres que Debian A versión 9 só contén a versión 7.0 nos seus repositorios nativos. A solución correcta, en termos de fiabilidade e previsibilidade, sería actualizar á penúltima versión de Nextcloud, pero nos últimos dous anos, teño tanta confianza na fiabilidade do servizo que quixen actualizar á última versión e actualizar o servidor web para o futuro. Polo tanto, para actualizar a Nextcloud 17, o óptimo é actualizar MariaDB á versión estable actual 10.4 e PHP a 7.2. En concreto, 7.2, non a actual 7.4. O certo é que Nextcloud 13 require PHP 5.6, 7.0 require 7.2 e Nextcloud 17 require PHP 7.1-7.3. Usar PHP 7.2 é conveniente para minimizar o esforzo de actualización. Non precisará actualizar o servidor Apache; abonda con instalar as actualizacións de seguridade distribuídas polo equipo de soporte. DebianNon obstante, para as actualizacións de MariaDB e PHP, terás que conectar repositorios externos.

Cando acababa de familiarizarme con Nextcloud, actualizeino "a man": usando un comando especial da consola, o sitio pasou ao modo de mantemento, o arquivo coa nova versión do sitio foi descargado e desempaquetado manualmente, os ficheiros actualizáronse e iniciouse o procedemento de actualización. Tal actualización normalmente levaba aos resultados esperados, aínda que non era preguiceiro facer unha copia de seguridade do sitio, da base de datos e dos datos do usuario. Pero as actualizacións automáticas levaron ás veces a todo tipo de sorpresas. Pero iso foi hai moito tempo, a estabilidade do motor aumentou moito desde entón, e esta vez fixen actualizacións exclusivamente a través da interface web. É certo, aínda non podía fuxir da liña de comandos. Durante unha actualización iterativa de cada nova versión, aparecerán varios avisos e notificacións no panel de control, que terán que ser "eliminados" executando comandos de forma significativa na liña de comandos. Non tes que facelo: o servizo seguirá funcionando. Aínda que este enfoque é fundamentalmente incorrecto, Nextcloud traballou para min neste modo durante 3 meses antes de tratar deliberadamente os problemas que xurdiron.

Debain actualización

Detén o servidor web:

# service apache2 stop


E actualizamos:

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


Despois da actualización, pode comprobar a versión do SO e facer unha proba de reinicio para asegurarse de que todo comeza normalmente despois da actualización:

# cat /etc/debian_version
# reboot


Actualizando PHP á versión 7.2

Detén o servidor web:

# service apache2 stop


Engadir certificado e claves PPA, repositorio 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


Ao eliminar a versión antiga de PHP 7.0, phpmyadmin tamén se eliminará, xa que borraremos os "rastros" dos paquetes eliminados mediante a eliminación automática. Isto non causará ningunha dificultade particular, xa que non se fixo ningunha configuración especial para phpmyadmin e instalalo de novo non suporá ningún problema.

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


Instalación dos módulos necesarios para 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


[ Este texto escrito específicamente para o sitio www.habr.com polo autor Alexandre S.
A ligazón á fonte é opcional, pero é moi recomendable mencionala. ]

Comprobamos a versión de PHP, iniciamos o servidor web e comprobamos a funcionalidade de Nextcloud:

# php -v
# service apache2 start


Actualizando MariaDB á versión 10.4

Na páxina web do proxecto hai páxina interesante, onde cómpre indicar o seu SO, a súa versión e seleccionar a versión da base de datos. Unha vez seleccionado, xerarase o código para engadir o repositorio.

Detén o servidor web:

# service apache2 stop


Engade un repositorio e actualiza paquetes:

# 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


Ao instalar MariaDB, o xestor de paquetes eliminará correctamente a versión anterior e instalará a nova, mentres se conservarán todas as bases de datos. Non obstante, recoméndase facer unha copia de seguridade da base de datos Nextcloud.

Instala MariaDB e inicia o procedemento de actualización:

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


Despois de introducir o contrasinal, MariaDB actualizarase e podes configuralo seguindo instrucións da segunda parte:

# mysql_secure_installation


Lanzamos o servidor web e comprobamos a funcionalidade de Nextcloud:

# service apache2 start


Actualizando Nextcloud á versión 17

Para iniciar a actualización, cómpre iniciar sesión no servizo cunha conta administrativa, ir á configuración e abrir "Configuración xeral" na sección administrativa. Nextcloud mostra a versión instalada e a versión dispoñible para a actualización, que se pode iniciar facendo clic no botón "Abrir xanela de actualización". Unha vez iniciado, Nextcloud fai unha copia de seguridade, descarga e verifica a integridade dos ficheiros de actualización, activa o modo de mantemento e actualiza os ficheiros. A continuación vén a pregunta "Manter o modo de mantemento activo"? Hai que ter coidado aquí. Unha resposta positiva deixará o sitio en modo de mantemento: suponse que o administrador sabe que facer a continuación e que o fará manualmente. En caso contrario, Nextcloud fará todo por si mesmo, así que fai clic no botón "Non" para continuar.

As actualizacións realízanse de forma iterativa. En primeiro lugar, Nextcloud 13.x actualizarase á última versión da rama 14.x. Despois diso, terás que ir ao centro de administración de novo e iniciar a actualización, agora de 14.x a 15.x. E así ata chegar á última versión actual posible. Despois de cada actualización, na páxina "Configuración xeral" da sección administrativa, mostrarase unha lista de suxestións e problemas atopados, así como recomendacións para solucionalos. A continuación falaremos do que hai que facer despois de cada actualización.

Antes da actualización

Nas últimas versións de Nextcloud, recoméndase habilitar PHP OPcache para mellorar o rendemento. É estraño que dalgunha maneira me perdín este punto hai un par de anos, xa que OPcache apareceu en PHP 5. En /etc/php/7.2/apache2/php.ini cómpre quitar comentarios e editar os seguintes parámetros:

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


Actualización 13.x -> 14.x

Restaurando índices de táboas:

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


Actualización 14.x -> 15.x

Preparamos a base de datos nextcloud para habilitar a codificación de catro bytes:

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


Activa o soporte para a codificación de catro bytes en Nextcloud:

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


Converter táboas:

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


Recuperando índices de táboas perdidos:

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


Converte os índices da táboa a bigint:

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


Actualización 15.x -> 16.x

Recuperando índices de táboas perdidos:

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


Converte os índices da táboa a bigint:

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


Actualización 16.x -> 17.x

Non é necesaria ningunha acción adicional.

Posterior

Seguindo estas instrucións, actualizouse unha máquina virtual con Nextcloud 13. Usar unha máquina virtual permítelle non facer copias de seguridade dos ficheiros de Nextcloud e da súa base de datos, xa que en caso de problemas pode simplemente devolver o ficheiro da máquina virtual gardado previamente e comezar de novo. de novo. Non obstante, isto non se aplica ao cartafol con datos do usuario, que tamén recomendo facer unha copia de seguranza xunto coa máquina virtual con Nextcloud. No meu caso, a "nube" úsase como un cartafol remoto con versión automática, e coa dirección de sincronización "só alí", e perder estes datos non foi crítico para min; só tería que facer a sincronización de novo durante varias horas. . A pesar da miña ignorancia pola regra de "gardar por se acaso", a actualización foi sen ningún problema e todos os clientes comezaron a traballar con Nextcloud 17 sen ningún problema. Estou impresionado, Frank Karlitshek: vostede e o seu equipo están a facelo moi ben traballo!

Despois da actualización, decidín borrar os datos do usuario, que, a xulgar polas estatísticas, ocupaban uns dous terabytes. Non tiña tantos datos operativos: a maior parte do volume estaba ocupado por ficheiros de versión e ficheiros eliminados. O problema que atopei foi que para un usuario había tantos datos eliminados (nin sequera é unha cuestión de volume, senón de cantidade, moitos ficheiros pequenos) que Nextcloud non puido mostralos na interface web. Despois de estudar o manual de administración, atopei unha solución a través da liña de comandos. Quizais isto lle sexa útil a alguén.

Para borrar os ficheiros de usuario eliminados:

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


Para borrar os ficheiros de versión do usuario:

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

Regreso ao principio, ao índice.

A historia da creación dunha nube doméstica. Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 e Nextcloud 17
Versión de texto: 1.1.1.
Data primeira publicación: 15.01.2020/XNUMX/XNUMX.
Data da última edición: 15.01.2020/XNUMX/XNUMX.

Actualizar rexistro1.1.1 [15-01-2020]
Corrección de erros tipográficos.

1.1.0 [15-01-2020]
Corrixiuse o código de preparación da base de datos de nexcloud para activar a codificación de catro bytes.

1.0.0 [15-01-2020]
Primeira versión.

Fonte: www.habr.com

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster