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 poner en marcha el servicio Nextcloud 11. Después de unos meses, apareció una actualización que contenía información "diferencial" sobre la instalación de Nextcloud 13 en Debian 9. A finales de 2018 simplemente actualicé Debian y Nextcloud y no encontré ningún problema extraño o interesante. La actualización a finales de 2019 fue más interesante y vale la pena escribir sobre ello.

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, siguiendo las instrucciones de los cuatro artículos anteriores, han "montado" Nextcloud 13 en Debian 9 (un saludo a mi pequeño grupo de seguidores sobre Nextcloud, especialmente a aquellos para quienes esta fue su primera experiencia en el mundo de Linux). Para quienes quieran crear el servicio desde cero, les recomiendo basarse en los primeros cuatro artículos de esta serie, teniendo en cuenta las últimas versiones de Debian 10 y Nextcloud 17. Para los usuarios experimentados de Linux, el artículo puede ocupar un lugar entre "trivial e inútil" y "no está mal, una chuleta todo en un lugar."

Tabla de contenido

Parte 1. Configuración del entorno Debian para uso cotidiano
Parte 2. Creación del servidor: configuración de 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 el capítulo

Prólogo
Actualización de Debian
Actualización de PHP a la versión 7.2
Actualización de MariaDB a la versión 10.4
Actualización de Nextcloud a la versión 17
Póscrito

Prólogo

Originalmente quería instalar y configurar Nginx en Debian 10, sobre lo cual se podría instalar sin problemas la versión actual de Nextcloud 17. Pero para todo esto no pude encontrar tiempo, así que este artículo es un conjunto de instrucciones para actualizar Nextcloud de la versión 13 a la versión actual 17, con la preparación previa del servidor web.

Para comenzar, es necesario explicar por qué se requieren cambios radicales en el servidor web. Nuestro servidor se basa en Debian 9, que es actual y soportado. Se podría simplemente actualizar el sistema operativo y todos los componentes del servidor web recibirían al menos actualizaciones de seguridad. Todo sería perfecto si continuáramos usando Nextcloud 13 o si solo actualizáramos a la versión 14. Pero Nextcloud 13 ya no está soportado, y el soporte para la versión 14 está "en su ocaso". A partir de la versión 15, Nextcloud ofrecerá convertir la base de datos a big int para soportar la codificación de cuatro bytes, y hacer esto con MariaDB 10.1 será bastante problemático. Nextcloud 17 requiere PHP 7.1-7.3, mientras que Debian 9 sólo contiene la versión 7.0 en sus repositorios nativos. Lo correcto, en términos de fiabilidad y previsibilidad, sería actualizar a la penúltima versión de Nextcloud, pero en un par de años me he convencido tanto de la fiabilidad de este servicio que quería actualizar a la última versión y actualizar el servidor web pensando en el futuro. Por lo tanto, para actualizar a Nextcloud 17, es óptimo actualizar MariaDB a la versión estable actual 10.4 y PHP a 7.2. Precisamente 7.2, y no a la actual 7.4. La cuestión es que Nextcloud 13 requiere PHP 5.6, 7.0 - 7.2, y para Nextcloud 17 se requiere PHP 7.1 - 7.3. Usar PHP 7.2 es conveniente para minimizar las acciones de actualización. No será necesario actualizar el servidor Apache; es suficiente con instalar las actualizaciones de seguridad que proporciona el equipo de soporte de Debian. Sin embargo, para las actualizaciones de MariaDB y PHP será necesario conectar repositorios externos.

Cuando me familiaricé por primera vez con Nextcloud, lo actualizaba «manualmente»: desde la consola, con un comando especial, el sitio se ponía en modo de mantenimiento, se descargaba y descomprimía manualmente el archivo con la nueva versión del sitio, se actualizaban los archivos y se iniciaba el procedimiento de actualización. Este tipo de actualización generalmente daba los resultados esperados, aunque no escatimaba en hacer una copia de seguridad del sitio, de la base de datos y de los datos de los usuarios. Sin embargo, la actualización automática a veces traía sorpresas. Pero eso fue hace tiempo; la estabilidad del motor ha aumentado significativamente desde entonces y esta vez hice las actualizaciones exclusivamente a través de la interfaz web. Aunque no pude evitar completamente la línea de comandos. Con cada actualización iterativa a una nueva versión, aparecerán diversas advertencias y notificaciones en el panel de control que deberás «eliminar», ejecutando comandos de manera consciente en la línea de comandos. Puedes no hacerlo, el servicio seguirá funcionando. Aunque este enfoque es fundamentalmente incorrecto, mi Nextcloud funcionó en ese modo durante 3 meses antes de que me decidiera a resolver las cuestiones que habían surgido.

Actualización de Debian

Detenemos el servidor web:

# service apache2 stop


Y actualizamos:

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


Después de la actualización, puedes verificar la versión del sistema operativo y hacer un reinicio de control para asegurarte de que todo arranca correctamente tras la actualización:

# cat /etc/debian_version
# reboot


Actualización de PHP a la versión 7.2

Detenemos el servidor web:

# service apache2 stop


Añadimos el certificado y las claves PPA, el repositorio de 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 antigua versión de PHP 7.0, phpmyadmin también se eliminará, ya que «limpiaremos» los restos de los paquetes eliminados usando autoremove. Esto no traerá dificultades especiales, ya que no se realizaron configuraciones especiales para phpmyadmin y volver a instalarlo no será complicado.

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


Instalación de los 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 especialmente para el sitio habr.com por el autor AlexanderS.
El enlace a la fuente no es obligatorio, pero su mención es muy recomendable!

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

# php -v
# service apache2 start


Actualización de MariaDB a la versión 10.4

En el sitio del proyecto hay una página interesante, en la que se debe indicar tu sistema operativo, su versión y seleccionar la versión de la base de datos. Después de seleccionar, se generará un código para agregar el repositorio.

Detenemos el servidor web:

# service apache2 stop


Agregamos el repositorio y actualizamos los 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 gestor de paquetes eliminará correctamente la versión anterior e instalará la nueva, manteniendo todas las bases de datos. Sin embargo, se recomienda hacer una copia de seguridad de la base de datos de Nextcloud.

Instalamos MariaDB y comenzamos 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á configurarse siguiendo las instrucciones de la segunda parte:

# mysql_secure_installation


Iniciamos el servidor web y comprobamos el funcionamiento de Nextcloud:

# service apache2 start


Actualización de Nextcloud a la versión 17

Para iniciar la actualización, es necesario iniciar sesión en el servicio con una cuenta de administrador, ir a la configuración y abrir 'Configuración General' en la sección administrativa. Nextcloud mostrará la versión instalada y la versión disponible para la actualización, que se puede iniciar pulsando el botón 'Abrir ventana de actualización'. Tras la iniciación, Nextcloud hará una copia de seguridad, descargará y verificará la integridad de los archivos de actualización, activará el modo de mantenimiento y actualizará los archivos. A continuación, se planteará la pregunta '¿Mantener el modo de mantenimiento activo?' Aquí hay que tener cuidado. Una respuesta afirmativa mantendrá el sitio en modo de mantenimiento, suponiendo que el administrador sabe qué hacer a continuación y lo hará manualmente. De lo contrario, Nextcloud hará todo automáticamente, por lo que para continuar, pulsamos el botón 'No'.

Las actualizaciones se realizan de manera iterativa. Primero, Nextcloud 13.x se actualizará a la última versión de la rama 14.x. Después de eso, será necesario volver al centro de administración y iniciar la actualización, ahora de 14.x a 15.x. Y así sucesivamente hasta alcanzar la última versión actual posible. Después de cada actualización, en la página 'Configuración General' de la sección administrativa se mostrará una lista de sugerencias y problemas surgidos, así como recomendaciones para su resolución. A continuación, se hablará sobre lo que se deberá hacer después de cada actualización.

Antes de la actualización

En las últimas versiones de Nextcloud se recomienda habilitar PHP OPcache para mejorar el rendimiento. Es extraño que este detalle lo pasara por alto hace un par de años, dado que OPcache apareció por primera vez en PHP 5. En /etc/php/7.2/apache2/php.ini es necesario 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

Preparando la base de datos de 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


Activando el soporte para 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"


Transformando tablas:

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


Restaurando índices de tablas perdidos:

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


Transformando índices de tablas a bigint:

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


Actualización 15.x -> 16.x

Restaurando índices de tablas perdidos:

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


Transformando í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 requieren acciones adicionales.

Póscrito

Siguiendo esta instrucción, se actualizó la máquina virtual con Nextcloud 13. El uso de una máquina virtual permite no hacer copias de seguridad de los archivos de Nextcloud y su base de datos, ya que en caso de problemas, se puede simplemente restaurar el archivo de la máquina virtual guardado previamente y empezar de nuevo. Sin embargo, esto no se aplica a la carpeta con datos de usuario, que también recomendaría respaldar junto con la máquina virtual de Nextcloud. En mi caso, la 'nube' se utiliza como una carpeta remota con versionado automático, y la dirección de sincronización es 'solo hacia allí', y la pérdida de estos datos no fue crítica; simplemente tendría que repetir la sincronización durante unas horas. A pesar de mi desprecio por la regla de vida establecida de 'házlo por si acaso', la actualización se realizó sin problemas y todos los clientes también funcionaron sin problemas con Nextcloud 17. Estoy impresionado, Frank Karlitschek: ¡tú y tu equipo están haciendo un gran trabajo!

Después de la actualización, decidí limpiar los datos de usuario que, según las estadísticas, ocupaban casi dos terabytes. No tenía tantos datos operativos; la mayor parte del volumen eran archivos de versiones y archivos eliminados. El problema con el que me encontré era que para un usuario, había tantos datos eliminados (no se trataba tanto del volumen, sino de la cantidad: había 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é una solución a través de la línea de comandos. Quizás a alguien le resulte útil.

Para limpiar los archivos eliminados del usuario user:

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


Para limpiar los archivos de versiones del usuario user:

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

Volver al inicio, al índice.

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 del texto: 1.1.1.
Fecha de primera publicación: 15.01.2020.
Fecha de última modificación: 15.01.2020.

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

1.1.0 [15-01-2020]
Corregido 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

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster