La historia de la creación de una nube doméstica. Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 y Nextcloud 17

Hace dos años, publiqué una serie de artículos sobre cómo crear un servidor web basado en Debian 8 y ejecutar en él el servicio Nextcloud 11. Unos meses después, apareció un complemento que contenía información "diferencial" sobre la instalación de Nextcloud 13 en Debian. 9. A finales de 2018, actualicé Debian y Nextcloud y no encontré ningún problema inusual o interesante. La actualización de finales de 2019 ya era más interesante y valía la pena escribir sobre ella.

La historia de la creación de una nube doméstica. Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 y Nextcloud 17

Este artículo será útil principalmente para aquellos que, de acuerdo con las instrucciones de los cuatro artículos anteriores, "ensamblaron" Nextcloud 13 en Debian 9 (saludo a aproximadamente una docena de mis suscriptores sobre el tema de Nextcloud, especialmente a aquellos para quienes esta fue su primera experiencia en el mundo de Linux). Para aquellos que planean crear un servicio desde cero, les aconsejo que tomen como base los primeros cuatro artículos de esta serie, ajustados a las versiones actuales de Debian 10 y Nextcloud 17. Para usuarios experimentados de Linux, el artículo puede llevar algo de tiempo. lugar entre "trivial e inútil" y "no está mal, hoja de referencia todo en un solo lugar".

tabla de contenidos

Parte 1: Configurar un entorno Debian para uso diario
Parte 2: Crear un servidor - configurar LAMP en Debian
Parte 3. Creación de una nube personal: instalación y configuración de Nextcloud
Parte 4. Actualización 2018: Debian 9 y Nextcloud 13
Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 y Nextcloud 17

Navegación rápida por capítulos

prefacio
actualización debian
Actualizando PHP a la versión 7.2
Actualización de MariaDB a la versión 10.4
Actualizando Nextcloud a la versión 17
Epílogo

prefacio

Inicialmente quería instalar y configurar Nginx en Debian 10, sobre el cual se podía instalar sin problemas el actual Nextcloud 17. Pero no encontré tiempo para todo esto, por eso este artículo es un conjunto de instrucciones para actualizar. Nextcloud de la 13 a la actual versión 17 con una preparación preliminar del servidor web.

Primero, debemos explicar por qué se requirieron cambios radicales en el lado del servidor web. Nuestro servidor se basa en el Debian 9 actual y compatible. Simplemente puede actualizar el sistema operativo y todos los componentes del servidor web recibirán al menos actualizaciones de seguridad. Todo sería genial si continuáramos usando Nextcloud 13 o si actualizáramos solo a la versión 14. Pero Nextcloud 13 ya no es compatible y el soporte para la versión 14 está a punto de desaparecer. A partir de la versión 15, Nexctcloud ofrecerá convertir la base de datos a big int para admitir codificación de cuatro bytes, y con MariaDB 10.1 esto será muy problemático. Nexctcloud 17 requiere PHP 7.1-7.3, mientras que Debian 9 solo contiene la versión 7.0 en sus repositorios nativos. Sería más correcto, en términos de confiabilidad y previsibilidad, actualizar a la penúltima versión de Nextcloud, pero después de un par de años tuve tanta confianza en la confiabilidad de este servicio que quise actualizar a la última versión y actualizar el servidor web con reserva para el futuro. Por lo tanto, para actualizar a Nexctcloud 17, lo óptimo es actualizar MariaDB a la versión estable actual 10.4 y PHP a 7.2. Exactamente el 7.2, no el 7.4 actual. El hecho es que Nextcloud 13 requiere PHP 5.6, 7.0 - 7.2 y Nexctcloud 17 requiere PHP 7.1 - 7.3. Es conveniente utilizar PHP 7.2 para minimizar los esfuerzos de actualización. No es necesario actualizar su servidor Apache; simplemente instale las actualizaciones de seguridad distribuidas por el equipo de soporte de Debian. Pero para las actualizaciones de MariaDB y PHP tendrás que conectar repositorios externos.

Cuando recién me familiaricé con Nextcloud, lo actualicé "a mano": usando un comando especial desde la consola, el sitio pasó al modo de mantenimiento, el archivo con la nueva versión del sitio se descargó y descomprimió manualmente, los archivos fueron actualizados y se inició el procedimiento de actualización. Una actualización de este tipo generalmente produjo los resultados esperados, aunque no me dio pereza hacer una copia de seguridad del sitio, la base de datos y los datos del usuario. Pero las actualizaciones automáticas a veces deparaban todo tipo de sorpresas. Pero eso fue hace mucho tiempo, la estabilidad del motor ha aumentado mucho desde entonces, y esta vez realicé actualizaciones exclusivamente a través de la interfaz web. Es cierto que todavía no podía alejarme de la línea de comando. Durante una actualización iterativa de cada nueva versión, aparecerán varias advertencias y notificaciones en el panel de control, que deberán "eliminarse" ejecutando comandos de manera significativa en la línea de comandos. No es necesario que hagas esto: el servicio seguirá funcionando. Aunque este enfoque es fundamentalmente incorrecto, Nextcloud trabajó para mí en este modo durante 3 meses antes de abordar los problemas que surgieron a propósito.

Actualización de Debain

Detenga el servidor web:

# service apache2 stop


Y actualizamos:

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


Después de la actualización, puede verificar la versión del sistema operativo y realizar un reinicio de prueba para asegurarse de que todo comience normalmente después de la actualización:

# cat /etc/debian_version
# reboot


Actualizando PHP a la versión 7.2

Detenga el servidor web:

# service apache2 stop


Agregue certificado y 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


Al eliminar la versión antigua de PHP 7.0, también se eliminará phpmyadmin, ya que borraremos los “rastros” de los paquetes eliminados usando autoremove. Esto no causará ninguna dificultad especial, ya que no se realizaron configuraciones especiales para phpmyadmin y no habrá ningún problema al instalarlo nuevamente.

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


Instalación de 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 el sitio habr.com autor AlexanderS.
Un enlace a la fuente es opcional, ¡pero es muy recomendable mencionarlo! ]

Comprobamos la versión de PHP, iniciamos el servidor web y comprobamos la funcionalidad de Nextcloud:

# php -v
# service apache2 start


Actualización de MariaDB a la versión 10.4

En el sitio web del proyecto hay pagina interesante, donde debe indicar su sistema operativo, su versión y seleccionar la versión de la base de datos. Una vez seleccionado, se generará el código para agregar el repositorio.

Detenga el servidor web:

# service apache2 stop


Agregue un repositorio y actualice 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


Al instalar MariaDB, el administrador de paquetes eliminará correctamente la versión anterior e instalará la nueva, mientras se conservarán todas las bases de datos. Sin embargo, por supuesto se recomienda realizar una copia de seguridad de la base de datos de Nextcloud.

Instale MariaDB e inicie el procedimiento de actualización:

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


Después de ingresar la contraseña, MariaDB se actualizará y podrá configurarla siguiendo instrucciones de la segunda parte:

# mysql_secure_installation


Lanzamos el servidor web y comprobamos la funcionalidad de Nextcloud:

# service apache2 start


Actualizando Nextcloud a la versión 17

Para iniciar la actualización, debe iniciar sesión en el servicio con una cuenta administrativa, ir a configuración y abrir "Configuración general" en la sección administrativa. Nextcloud muestra la versión instalada y la versión disponible para actualización, que se puede iniciar haciendo clic en el botón "Abrir ventana de actualización". Una vez iniciado, Nextcloud realiza una copia de seguridad, descarga y verifica la integridad de los archivos de actualización, activa el modo de mantenimiento y actualiza los archivos. Luego viene la pregunta “¿Mantener activo el modo de mantenimiento”? Debes tener cuidado aquí. Una respuesta positiva dejará el sitio en modo de mantenimiento; se supone que el administrador sabe qué hacer a continuación y lo hará manualmente. De lo contrario, Nextcloud hará todo por sí mismo, así que haga clic en el botón "No" para continuar.

Las actualizaciones se realizan de forma iterativa. Primero, Nextcloud 13.x se actualizará a la última versión de la rama 14.x. Después de esto, deberá volver al centro de administración e iniciar la actualización, ahora de 14.x a 15.x. Y así sucesivamente hasta llegar a la última versión actual posible. Después de cada actualización, en la página "Configuración general" en la sección administrativa, se mostrará una lista de sugerencias y problemas encontrados, así como recomendaciones para resolverlos. A continuación hablaremos sobre lo que se debe hacer después de cada actualización.

Antes de actualizar

En las últimas versiones de Nextcloud, se recomienda habilitar PHP OPcache para mejorar el rendimiento. Es extraño que de alguna manera me haya perdido este punto hace un par de años, desde que OPcache apareció en PHP 5. En /etc/php/7.2/apache2/php.ini necesitas descomentar y editar los siguientes 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

Restaurar índices de tablas:

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


Actualización 14.x -> 15.x

Preparamos la base de datos nextcloud para habilitar la codificación de cuatro bytes:

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


Habilite la compatibilidad con la codificación de cuatro bytes en Nextcloud:

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


Tablas de conversión:

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


Recuperar índices de tablas perdidos:

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


Convertir índices de tablas a bigint:

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


Actualización 15.x -> 16.x

Recuperar índices de tablas perdidos:

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


Convertir índices de tablas a bigint:

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


Actualización 16.x -> 17.x

No se requiere ninguna acción adicional.

Epílogo

Siguiendo estas instrucciones se actualizó una máquina virtual con Nextcloud 13. El uso de una máquina virtual le permite no realizar copias de seguridad de los archivos de Nextcloud y su base de datos, ya que en caso de problemas simplemente puede devolver el archivo de la máquina virtual previamente guardado y comenzar de nuevo. de nuevo. Sin embargo, esto no se aplica a la carpeta con los datos del usuario, de la que también recomiendo hacer una copia de seguridad junto con la máquina virtual con Nextcloud. En mi caso, la "nube" se usa como una carpeta remota con control de versiones automático y con la dirección de sincronización "solo allí", y perder estos datos no fue crítico para mí; solo tendría que volver a realizar la sincronización durante unas horas. . A pesar de mi desprecio por la regla de toda la vida de "guardar por si acaso", la actualización se realizó sin problemas y todos los clientes comenzaron a trabajar sin problemas con Nextcloud 17. Estoy impresionado, Frank Karlitshek: usted y su equipo están haciendo un gran trabajo. ¡trabajo!

Después de la actualización, decidí borrar los datos del usuario, que, a juzgar por las estadísticas, ocupaban unos dos terabytes. No tenía tantos datos operativos: la mayor parte del volumen estaba ocupado por archivos de versión y archivos eliminados. El problema que encontré fue que para un usuario había tantos datos eliminados (ni siquiera es una cuestión de volumen, sino de cantidad, muchos archivos pequeños) que Nextcloud no podía mostrarlos en la interfaz web. Después de estudiar el manual de administración, encontré una solución a través de la línea de comando. Quizás esto le resulte útil a alguien.

Para borrar archivos de usuario eliminados:

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


Para borrar archivos de versión de usuario:

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

Regreso al principio, al índice.

La historia de la creación de una nube doméstica. Parte 5. Actualización 2019: PHP 7.2, MariaDB 10.4 y Nextcloud 17
Versión de texto: 1.1.1.
Fecha de primera publicación: 15.01.2020/XNUMX/XNUMX.
Fecha de última edición: 15.01.2020/XNUMX/XNUMX.

Registro de actualización1.1.1 [15-01-2020] Corrección de errores tipográficos.

1.1.0 [15-01-2020] Se corrigió el código de preparación de la base de datos de nexcloud para habilitar la codificación de cuatro bytes.

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

Fuente: habr.com