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 el tema de la creación de un servidor web basado en Debian 8 y el lanzamiento del servicio Nextcloud 11. Algunos meses más tarde había un complemento que contenía información "diferencial" sobre la instalación de Nextcloud 13 en Debian 9. A finales de 2018, simplemente Debian actualizado y Nextcloud y no encontró ningún problema inusual o interesante. La actualización a finales de 2019 ya era más interesante y sobre la que valía la pena escribir.



Este artículo será principalmente útil para aquellos que, según las instrucciones de los últimos cuatro artículos, "recopilaron" Nextcloud 13 en Debian 9 (envío saludos a diez de mis suscriptores en Nextcloud, especialmente aquellos para quienes fue la primera experiencia en el mundo Linux). Para aquellos que van a hacer un servicio desde cero, les aconsejo que tomen como base los primeros cuatro artículos de esta serie, ajustados para las versiones actuales de Debian 10 y Nextcloud 17. Para usuarios experimentados de Linux, el artículo puede ocupar un lugar entre "trivial e inútil" y "no está mal". hoja de trucos todo en uno ".



Tabla de contenidos


Parte 1. Configurar su entorno Debian para el uso diario
Parte 2. Crear un servidor - configurar LAMP en Debian
Parte 3. Crear una nube personal: instalar y configurar 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 de capítulos


Prólogo
Actualización de Debian
Actualización de PHP a la versión 7.2
Actualice MariaDB a la versión 10.4
Actualización de Nextcloud a la versión 17
Epílogo



Prólogo


Inicialmente, quería instalar y configurar Nginx en Debian 10, además de lo cual el Nextcloud 17 actual se habría instalado sin problemas. Pero por todo esto, no pude elegir el momento, por lo que este artículo es un conjunto de instrucciones para actualizar Nextcloud de 13 a la versión actual 17 desde la versión preliminar preparando un servidor web.

Primero debe explicar por qué se requieren cambios radicales en el lado del servidor web. Nuestro servidor está basado en 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 utilizáramos Nextcloud 13 o si actualizáramos solo a la versión 14. Pero Nextcloud 13 ya no es compatible, y la compatibilidad con la versión 14 está sobre la marcha. A partir de la versión 15, Nexctcloud ofrecerá convertir la base de datos a big int para admitir la 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 durante un par de años estuve tan seguro de la confiabilidad de este servicio que quise actualizar a la última versión y actualizar el servidor web con una reserva para el futuro. Por lo tanto, para actualizar a Nexctcloud 17, es óptimo actualizar MariaDB a la versión estable actual 10.4 y PHP a 7.2. Es 7.2, y no es relevante 7.4. El hecho es que Nextcloud 13 requiere PHP 5.6, 7.0 - 7.2, y Nexctcloud 17 requiere PHP 7.1 - 7.3. Usar PHP 7.2 es conveniente para minimizar las acciones de actualización. El servidor Apache no necesita ser actualizado, solo instale las actualizaciones de seguridad que distribuye el equipo de soporte de Debian. Pero para las actualizaciones, MariaDB y PHP tendrán que conectar repositorios externos.

Cuando conocí Nextcloud, lo actualicé "a mano": un equipo especial puso el sitio web en modo de mantenimiento desde la consola, el archivo con la nueva versión del sitio se descargó y desempaquetó manualmente, los archivos se actualizaron y comenzó el procedimiento de actualización. Dicha actualización usualmente condujo a los resultados esperados, aunque no fui flojo para hacer una copia de respaldo del sitio, la base de datos y los datos del usuario. Pero las actualizaciones automáticas a veces llevaron a todo tipo de sorpresas. Pero fue hace mucho tiempo, la estabilidad del motor ha aumentado mucho desde entonces, y esta vez hice actualizaciones exclusivamente a través de la interfaz web. Es cierto que todavía no era posible salir de la línea de comando. Durante una actualización iterativa para 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 puede hacer esto: el servicio funcionará de todos modos. Aunque este enfoque es fundamentalmente incorrecto, Nextcloud trabajó para mí durante 3 meses en este modo antes de resolver deliberadamente los problemas que surgieron.



Actualización de Debain


Detenga el servidor web:

# service apache2 stop 

Y actualizado:

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

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

 # cat /etc/debian_version # reboot 



Actualización de PHP a la versión 7.2


Detenga el servidor web:

 # service apache2 stop 

Agregar 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 

Si elimina la versión anterior de PHP 7.0, phpmyadmin también se eliminará, ya que limpiaremos los "rastros" de los paquetes eliminados utilizando autoremove. Esto no causará mucha dificultad, ya que no se realizaron ajustes especiales para phpmyadmin y la instalación de nuevo no será un problema.

 # 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 fue escrito específicamente para habr.com por AlexanderS .
El enlace a la fuente es opcional, ¡pero su referencia es altamente deseable! ]

Verificamos la versión de PHP, iniciamos el servidor web y verificamos la operatividad de Nextcloud:

 # php -v # service apache2 start 



Actualice MariaDB a la versión 10.4


El sitio web del proyecto tiene una página interesante en la que debe indicar su sistema operativo, su lanzamiento y seleccionar la versión de la base de datos. Una vez seleccionado, se generará código para agregar el repositorio.

Detenga el servidor web:

 # service apache2 stop 

Agregar repositorio y paquetes de actualización:

 # 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, se guardarán todas las bases de datos. Sin embargo, por supuesto, se recomienda hacer una copia de seguridad de la base de datos de Nextcloud.

Instale MariaDB y ejecute 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 será posible configurarla, siguiendo las instrucciones de la segunda parte :

 # mysql_secure_installation 

Iniciamos el servidor web y verificamos el rendimiento de Nextcloud:

 # service apache2 start 



Actualización de Nextcloud a la versión 17


Para iniciar la actualización, debe iniciar sesión en el servicio con una entrada administrativa, proceder a la configuración y abrir la "Configuración general" en la sección administrativa. Nextcloud muestra la versión instalada y la versión disponible para actualizar, que se puede iniciar haciendo clic en el botón "Abrir ventana de actualización". Después del inicio, 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. ¿Qué sigue es la pregunta "Mantener el modo de mantenimiento activo"? Tienes que 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 hace manualmente. De lo contrario, Nextcloud hará todo por sí mismo, así que haga clic en "No" para continuar.

Las actualizaciones se realizan de forma iterativa. Nextcloud 13.x se actualizará primero a la última versión de la rama 14.x. Después de eso, deberá volver al centro de administración e iniciar la actualización, ahora de 14.xa 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 deberá hacerse después de cada actualización.

Antes de actualizar

En versiones recientes de Nextcloud, se recomienda habilitar PHP OPcache para mejorar el rendimiento. Es extraño que de alguna manera me perdí este momento hace un par de años, ya 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

Restauramos los índices de las tablas:

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

Actualización 14.x -> 15.x

Preparación de 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" 

Transformamos tablas:

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

Recuperar índices de tabla perdidos:

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

Convierta los índices de la tabla a bigint:

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

Actualización 15.x -> 16.x

Recuperar índices de tabla perdidos:

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

Convierta los índices de la tabla 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 otra acción.



Epílogo



Siguiendo estas instrucciones, se actualizó la máquina virtual con Nextcloud 13. El uso de la máquina virtual le permite no hacer una copia de seguridad de los archivos de Nextcloud y su base de datos, porque en caso de problemas, simplemente puede devolver el archivo de la máquina virtual guardado anteriormente y comenzar de nuevo. Sin embargo, esto no se aplica a la carpeta de datos del usuario, que también recomiendo hacer una copia de seguridad con la máquina virtual Nextcloud. En mi caso, la "nube" se usa como una carpeta remota con versiones automáticas, además, con la dirección de sincronización "solo allí", y para mí la pérdida de estos datos no fue crítica: solo tendría que sincronizar nuevamente durante varias horas. A pesar de mi negligencia de la regla "mantente a salvo por si acaso" desarrollada por mi vida, la actualización se realizó sin problemas y todos los clientes también ganaron dinero con Nextcloud 17. Sin ningún problema. Estoy impresionado, Frank Karlitshek, ¡tú y tu equipo están haciendo un excelente trabajo!

Después de la actualización, decidí limpiar los datos del usuario, que, a juzgar por las estadísticas, ocuparon 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 había tantos datos eliminados para un usuario (ni siquiera es el volumen, sino la cantidad, muchos archivos pequeños) que Nextcloud no podía mostrarlos en la interfaz web. Después de estudiar la guía de administración, encontré la solución a través de la línea de comando. Tal vez esto sea útil para alguien.

Para borrar archivos borrados del usuario usuario:

 # 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 



Regrese al principio, a la tabla de contenido .



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.
Última edición: 15/01/2020.

Actualizar registro
1.1.1 [15-01-2020]
Corrección de errores tipográficos.

1.1.0 [15-01-2020]
El código para preparar la base de datos nexcloud para habilitar la codificación de cuatro bytes ha sido corregido.

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

Source: https://habr.com/ru/post/483842/


All Articles