He instalado una versión limpia de Moodle 4.0 para evitar la constante dependencia de las actualizaciones del propio NAS que suceden de pascuas a ramos y os cuento un poco la experiencia para que la gente no pierda tanto tiempo como yo en lograrlo.
Mi Synology NAS es un DS715 y dispone de la versión del sistema DSM 6.2.4-25556 Update 5. Parece que la gente cuenta que Moodle no funciona con la versión 7 del sistema operativo del NAS.
Trabajo con Apache 2.4, PHP 7.4 y Mariadb10
Pasos dados:
0. Crear copia de seguridad de los cursos que me interesa restaurar en la nueva versión y descargarlos a lugar seguro. También una copia de seguridad de la base de datos.
1.- Si tienes instalado previamente el archivo empaquetado de Moodle es muy importante que guardes una copia del config.php porque vas a necesitar un dato existente en dicho archivo para poder completar la instalación. La ruta a 'dbsocket'. Es lo que más me ha costado darme cuenta y perder el tiempo.
2.- He eliminado completamente el moodle empaquetado. No así la base de datos porque siempre se puede borrar más adelante.
3.- He creado una nueva base de datos moodle4 y un nuevo usuario moodle4_user mediante el phpmyadmin incluido en Synology. Porque mi intención era comenzar desde cero.
4.- He creado la carpeta moodle4data utilizando directamente el administrador de archivos FileStation fuera de la ruta www. No me ha hecho falta utilizar Midnight Commander para el tema crear carpeta, permisos y demás.
Todos estos pasos han sido sencillos. Sólo he recibido un aviso para modificar el max_var_size a 5000 (lo tenía en 1000) y que mi versión php no era de 64bits. He modificado el PHP mediante la secuencia Menú Principal, Web Station, Configuración de PHP, Default Profile, Editar, Pestaña Núcleo y buscar la variable max_input_vars modificándola a 5000. El PHP 64 lo dejo para más adelante porque dependerá del momento en que SYNOLOGY lo incluya
5.- He comenzado la instalación y he llegado perfectamente hasta la conexión con la base de datos. Aquí fallaba y aparecía constantemente un error que revisando la web aparece en numerosos intentos de instalación y en numerosas versiones. Exactamente:
{$a}
Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /volume1/web/moodle4/lib/dml/mysqli_native_moodle_database.php on line 83 Call Stack: 0.0001 360288 1. {main}() /volume1/web/moodle4/install.php:0 0.7297 1750200 2. install_db_validate() /volume1/web/moodle4/install.php:287 1.0979 1853232 3. mariadb_native_moodle_database->create_database() /volume1/web/moodle4/lib/installlib.php:190 1.0980 1870024 4. mysqli->__construct() /volume1/web/moodle4/lib/dml/mysqli_native_moodle_database.php:83
Tras buscar en la red no queda muy claro el problema y es más sencillo de lo que parece. Moodle no localiza el conector de la base de datos.
He intentado unas 5 ó 6 veces repetir el intento de instalación obteniendo siempre el mismo error y en uno de los intentos, moodle ha decidido que ya era suficiente y me ha mostrado en pantalla el config.php que se había generado y que tras revisarlo me ha puesto sobre la pista:
<?php // Moodle configuration file
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype = 'mariadb';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'localhost';
$CFG->dbname = 'moodle4';
$CFG->dbuser = 'moodle_user';
$CFG->dbpass = '************';
$CFG->prefix = 'mdl_';
$CFG->dboptions = array (
'dbpersist' => 0,
'dbport' => 3307,
'dbsocket' => '',
'dbcollation' => '',
);
$CFG->wwwroot = 'http://moodle4.ddns.net/moodle4';
$CFG->dataroot = '/volume1/moodle4data';
$CFG->admin = 'admin';
$CFG->directorypermissions = 0777;
require_once(__DIR__ . '/lib/setup.php');
// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!
6.- Me he percatado que faltaban estos dos parámetros:
'dbsocket' => '', No está la dirección del enlace con la base de datos y el instalador no puede comprobar la base de datos
'dbcollation' => '', Al no poder leer la base de datos el instalador desconoce el dato, pero nosotros sí al haber creado la base de datos.
7.- En este punto es importante abrir el config.php que moodle nos ha proporcionado en un archivo y completar los datos faltantes con la información que hemos obtenido con el config.php de la versión empaquetada de moodle antiguo.
'dbsocket' => '/run/mysqld/mysqld10.sock',
'dbcollation' => 'utf8mb4_spanish_ci',
8.- Una vez completado el archivo lo guardamos como config.php y lo copiamos en el interior del directorio raíz de moodle.
9.- Reiniciamos la instalación y la instalación continúa ya normalmente hasta el final.
10. Restauramos los cursos que habíamos guardado en el nuevo moodle y tras comprobar que todo funciona correctamente ya estamos en disposición de borrar la base de datos antigua.
Espero que esta pequeña ayuda pueda ayudar a alguien a no perder el tiempo.
Saludos cordiales
Pedro Marauri