Dichosos scripts de Lliurex
Lliurex es la distribución GNU/Linux pensada para los sectores educativos en el País Valenciano y que pretende establecer un modelo software libre y gratuito en las aulas. Si bien el modelo de aula tiene ventajas a nivel práctico, la versión de servidor de aula presenta una serie de limitaciones que pueden llegar a molestar cuando pretendes integrar algún servicio adicional o modificar parámetros del sistema.
Cuando la versión servidor de Lliurex arranca, sobrescribe la información de configuración en base a unos scripts de inicio, de manera que cambios realizados previamente en algunos servicios simplemente se eliminada. De esta manera, puedes pasar un rato para cambiar algunos parámetros y tras un reinicio, tu tiempo y esfuerzo se disuelve ante tus ojos.
Voy a intentar ilustrar un caso concreto para la versión 11.09 que tenemos actualmente instalada en uno de los servidores del aula informática. En este caso, parece que la versión 12.06 ofrece una herramienta integrada que solventará la necesidad a través de la herramienta de entrega de trabajos al profesor, pero seguro que existen más conflictos no resueltos.
Para la entrega de documentos, solemos utilizar la plataforma de aprendizaje Moodle, pero la velocidad a Internet es tan penosamente lenta a través de la red contratada por Consellería, que hace tiempo que opté por colocar una pequeña página web sobre el servidor Apache del servidor local que permita la entrega de ficheros a través de la red. En mi caso, suelo añadir una linea al HTML apuntado por «http://server» que lance mi código.
Para ello, debemos colocar un pequeño formulario en PHP utilizando el método POST y especificando que el tipo de codificación debe ser «multipart/form-data» para el envío de datos binarios, o sea, ficheros.
<html><body>
<form action=»upload_file.php» method=»post» enctype=»multipart/form-data»>
<label for=»file»>Nombre de fichero:</label>
<input type=»file» name=»file» id=»file»><br>
<input type=»submit» name=»submit» value=»Enviar»>
</form>
</body></html>
Una vez, capturado el destino del formulario, recuperamos el fichero a través de las variables del POST y almacenamos el resultado en una carpeta con permisos adecuados. Para ello utilizamos la instrucción move_uploaded_file que copiará el archivo temporal a disco en la ruta deseada.
<?php
if ($_FILES[«file»][«error»] > 0) {
echo «Error: » . $_FILES[«file»][«error»] . «<br>»;
}else {
echo «Upload: » . $_FILES[«file»][«name»] . «<br>»;
echo «Type: » . $_FILES[«file»][«type»] . «<br>»;
echo «Size: » . ($_FILES[«file»][«size»] / 1024) . » kB<br>»;
echo «Stored in: » . $_FILES[«file»][«tmp_name»];
}
$target_path = «uploads/»;
$target_path = $target_path . basename( $_FILES[‘file’][‘name’]);
if(move_uploaded_file($_FILES[‘file’][‘tmp_name’], $target_path)) {
echo «El fichero «. basename( $_FILES[‘file’][‘name’]). » ha sido cargado con éxito»;
} else{
echo «Error subiendo el archivo!»;
}
?>
Hasta aquí todo correcto, puedes incorporar modificaciones adicionales para colocar la fecha y hora en la entrega y algún campo extra para indicar el nombre del alumno sin demasiada complicación. Todo parece funcionar bien y los archivos entran a la carpeta deseada, hasta que se intenta subir un archivo que supere los 100MB. Puede parecer mucho, pero cualquier vídeo generado en Openshot puede superar este límite fácilmente.
Existe una limitación en la subida de archivos en servidor que se define en algunas lineas del fichero de configuración del php5 ubicado dentro de /etc/php5. Las relevantes en este caso serían las que indican el tamaño máximo de subida y el de tamaño máximo de envío en un formulario POST. De manera que simplemente las buscamos y las adaptamos al tamaño deseado:
php_value upload_max_filesize=300M
php_value post_max_size=300M
Probamos y vemos que todo funciona. Satisfacción inmediata que se verá truncada al reiniciar. Por alguna arte oscura, el servidor sobrescribe la configuración y revierte el tamaño máximo de estas variables a 100M con la consiguiente desesperación.Buscando más vemos un fichero llamado lliurex.cfg que presenta esos mismos datos pero su cambio obtiene iguales consecuencias tras el reinicio.
De manera, que para obtener un funcionamiento adecuado, debemos entrar al fichero lliurex.cfg y cambiar los datos adecuadamente a nuestras necesidades, para después rearrancar el servicio de Apache desde terminal:
sudo /etc/init.d/apache2 restart
Un pequeño fastidio con el que vivir durante la temporada que se trabajan edición de vídeos, que espero que ayude a comprender la impotencia que supone entrar a personalizar cosas en Lliurex para ver como un simple reinicio las machaca de nuevo. Y lo que pasa es que falta documentación especializada accesible al público para acometer algunos cambios sobre servidores Lliurex, por lo que en muchas ocasiones nos entran unas ganas terribles de instalar Ubuntu o Debian para tener el control del sistema y, sobre todo, olvidarnos de los dichosos scripts de Lliurex.
No permite cambiar la configuración del parámetro upload_max_filesize temporalmente desde PHP con ini_set ?
http://php.net/manual/en/function.ini-set.php
También lo había probado con resultado negativo. Incluir directamente los valores en el código php parecía una buena opción, pero Lliurex se lo pasa por el forro. Gracias 🙂
Estoy deacuerdo en que falta documentacion especializada… pero hacemos lo que podemos. xD
De todas maneras, he de comentar que en la nueva versión de LliureX (13.06) se está haciendo un esfuerzo para permitir todas estas modificaciones que comentais, dando más flexibilidades y capacidad de personalización por parte de los administradores y demás personas que controlen un pelín.
Hola, tienes varias opciones :
-lanzar el comando : llxcfg-setvars HTTP_PHP_FILESIZE=300 . Si quieres modificar el fichero del que estas hablando puedes encontrar todas las configuraciones de todos los servicios en el directorio : /usr/share/llxcfg/config/. Ahi tienes las plantillas con las que se configura por defecto. Luego esta el directorio /var/lib/llxcfg/config/ donde esta la misma estructura de ficheros pero por para hacer configuraciones via scripts . Existe un ultimo directorio : /etc/llxcfg/config/ . En dicho directorio puedes dejar tus ficheros y estos son los que deberias tocar tu, ya que son los destinados para administradores.
En estas plantillas puedes poner tu valores a fuego, o utilizar unas variables que puedes gestionar con comandos tales como llxcfg-setvars y que las has de usar con un aspecto como este : _@_NOMBRE_VARIABLE_@_
Para la proxima version (13.06 ) LliureX sera mucho menos invasivo y dejara que los administradores que saben puedan tocar las cosas bajo su responsabilidad.
@ Aberlanastic Soy consciente de las limitaciones y baches que ha sufrido el proyecto Lliurex, Poco personal y mucho trabajo nunca han sido amigos del éxito. Espero que la situación pueda mejorar y que el trabajo que realizáis se vea recompensado. Versión a versión se hacen mejorar importantes y, dentro de la crítica constructiva fruto de mi propia frustración, valoro el trabajo realizado.
@Raurodse Muchas gracias por los comentarios precisos sobre la ubicación de las variables. Justamente esa es la documentación que echaba en falta. Mañana mismo lo pruebo. ¡Mil gracias!
Perfecto, siguiendo las indicaciones de Raúl y colocando en /etc/llxcfg/config/ un fichero lliurex.ini con la configuración deseada conseguimos preservar la configuración tras reinicios del sistema. ¡Muchas gracias!