En aquest article t'explique com he actualitzat la meua web Drupal a la última versió de la branca 10.x, concretament la 10.6.2.
Com diu la dita popular A ca el sabater sabates de paper, i per a ser un desenvolupador fan de Drupal he trigat prou en actualitzar aquesta vegada, abans tenia la versió 10.0.9.
Aquesta versió 10.6.2 és la última numeració de la branca 10.x i després Drupal ja passa a la branca 11.x com pots veure al repositori oficial del projecte:

Però ara no s'ha d'actualitzar manualment descarregant el fitxer .tar.gz del Drupal com hem fet en versions anteriors, sinó que ara el procés ho farem amb Composer i ho veurem més endavant.
COMENÇAREM FENT CÒPIES DE SEGURETAT
Doncs bé, començarem fent una còpia de la base de dades:
$ doas su root
# mysqldump NOM_BASE_DE_DADES > copia_24gener.sql -pCONTRASENYA
Ara crearem una nova base dades, i insertarem aquest backup per a tenir la base de dades clonada:
# mysql -p
#
root@localhost [(none)]> CREATE DATABASE NOVA_BBDD CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.023 sec)
#
root@localhost [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON NOVA_BBDD.* TO 'USUARI'@'localhost' IDENTIFIED BY 'LA_TEUA_CONTRASENYA';
Query OK, 0 rows affected (0.070 sec)
#
root@localhost [(none)]> flush privileges;
Query OK, 0 rows affected (0.015 sec)
#
root@localhost [(none)]> quit;
Bye
I ara la clonem, insertant la còpia de seguretat de la base de dades de producció en aquesta nova base de dades, perquè farem l'actualització sobre aquesta nova base de dades i mai amb la base de dades de producció:
# mysql NOVA_BBDD copia_24gener.sql -pCONTRASENYA
I finalment ara clonarem tot el projecte web Drupal també, de manera que farem l'actualització sobre la web clonada i la base de dades clonada, i si experimentem problemes sempre podrem tirar enrere perquè tindrem còpies de tot el procés. Copiarem tota la web amb:
# cp -rf joancatala.net joancatala.net-copia_de_seguretat
COMPROVACIONS PRÈVIES I PERMISOS
Ara ens situem a l'arrel del nostre projecte. Primer de tot comprovarem que tenim el fitxer de configuració composer.json amb:
# ls composer.json
composer.json
Ara esborrem memòria caché actual fent:
# rm -rf sites/default/files/php
# rm -rf sites/default/files/css
# rm -rf sites/default/files/js
Ara configurem els permisos correctes per a no tindre problemes durant l'actualització. Farem el següent:
# chown -R www:www sites/default/files
# chmod -R 755 sites/default/files
I també fes el següent, perquè Drupal 10 el fa servir per PHP storage i cache de container:
# mkdir -p sites/default/files/php
# chown -R www:www sites/default/files/php
# chmod -R 755 sites/default/files/php
AMPLIEM LES CAPACITATS DE PHP-FPM
El procés d'actualització requereix de recursos i, per a evitar problemes i errors 505 abans d'hora, anem a editar el pool de PHP-FPM per tal d'ampliar les seues capacitats.
Editarem el fitxer de configuració php.ini, que és on es troba la configuració del PHP que executarà les pàgines de Drupal. Per a saber on tenim el php.ini fem:
# php --ini
Configuration File (php.ini) Path: /usr/local/etc
Loaded Configuration File: /usr/local/etc/php.ini
Scan for additional .ini files in: /usr/local/etc/php
Additional .ini files parsed: /usr/local/etc/php/ext-10-opcache.ini,
/usr/local/etc/php/ext-18-session.ini,
/usr/local/etc/php/ext-20-ctype.ini,
/usr/local/etc/php/ext-20-curl.ini,
/usr/local/etc/php/ext-20-dom.ini,
/usr/local/etc/php/ext-20-filter.ini,
/usr/local/etc/php/ext-20-gd.ini,
/usr/local/etc/php/ext-20-intl.ini,
/usr/local/etc/php/ext-20-mbstring.ini,
/usr/local/etc/php/ext-20-pdo.ini,
/usr/local/etc/php/ext-20-phar.ini,
/usr/local/etc/php/ext-20-simplexml.ini,
/usr/local/etc/php/ext-20-tokenizer.ini,
/usr/local/etc/php/ext-20-xml.ini,
/usr/local/etc/php/ext-20-xmlwriter.ini,
/usr/local/etc/php/ext-20-zip.ini,
/usr/local/etc/php/ext-30-pdo_mysql.ini
Això ens diu que el tenim a la ruta de FreeBSD /usr/local/etc/php.ini, aleshores l'editem i deixem els valors de les varaibles de la següent manera:
max_execution_time = 300
memory_limit = 512M
Ara reiniciem PHP-FPM amb:
# service php-fpm restart
I ara ja tenim més capacitats per a executar l'actualització de Drupal i asegurar-nos que no hi ha cap procés que es penja durant l'actualització.
COMENCEM L'ACTUALITZACIÓ DE DRUPAL
Doncs bé, ja podem començar amb l'actualització de Drupal a la última versió 10.6.2 fent:
composer require \
drupal/core-recommended:10.6.2 \
drupal/core-composer-scaffold:10.6.2 \
drupal/core-project-message:10.6.2 \
--update-with-all-dependencies
I ara executarem les actualitzacions en la base de dades escrivint al navegador el següent:
https://joancatala.net/update.php
Això començarà el procés d'actualització on s'ens mostrarà el número d'actualitzacions pendents en la base de dades i veurem en tot moment l'estat de l'actualització.


Els passos a seguir són els clàssics de sempre de Drupal, només cal anar passant les dos pantalles que veues a dalt.
I uns minuts més tard el procés ha finalitzat correctament com pots veure a les captures de pantalla.
I ja ho tenim, en principi ja tenim la nostra web actualitzada.
Ara anem a la portada principal. Per defecte, el procés d'actualització configura la web Drupal en mode manteniment, tal i com ens mostra en la portada amb un missatge superior de color verd:

Fem totes les comprovacions pertintents en les diferents seccions i vistes de la web, i veiem que tot funciona perfectament. I ara, des de la part d'administració, ja podem veure que tenim la versió de Drupal 10.6.2:
També podem fer una comprovació ràpida amb Composer per a veure la versió que tenim en el Drupal fent:
composer show drupal/core-recommended
I veurem que la versió instal·lada actualment és la 10.6.2:
composer show drupal/core-recommended
Composer could not detect the root package (drupal/legacy-project) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version
name : drupal/core-recommended
descrip. : Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.
keywords :
versions : * 10.6.2
released : 2026-01-08, 2 weeks ago
type : metapackage
license : GNU General Public License v2.0 or later (GPL-2.0-or-later) (OSI approved) https://spdx.org/licenses/GPL-2.0-or-later.html#licenseText
I ja tenim la web perfectament actualitzada. Ara jo sempre recomane per una còpia de seguretat total inicial, per a tenir un punt de recuperació del dia zero :)








