5 de diciembre de 2016

Trucos de Ubuntu: convertir - concatenar pdfs

Para convertir ficheros desde la línea de comandos, de ODT a PDF, podemos usar:

unoconv -f pdf [nombre_ficheros].odt

Y así se harían en bloque, porque con LibreOffice lo podemos hacer de uno en uno con el botón PDF.

Para concatenar varios PDFs se usa, desde la línea de comando la orden pdftk

pdftk uno.pdf dos.pdf cat output resultado.pdf

22 de noviembre de 2016

Visita al CNA

Ayer estuvimos de visita, con los 2º BACH, en el CNA de la Isla de la Cartuja (Sevilla). Visita muy interesante y recomendable si os gusta las Ciencias y la Física en particular.

Trabajando con algoritmos


Empezamos el trabajo con algoritmos en Programación, 2º BAC, y estamos usando un programa muy gráfico para ello: PSEINT

http://pseint.sourceforge.net/

Con él practicamos escribiendo los algoritmos de los programas de cálculo del IMC.



29 de agosto de 2016

Estación meteorológica ONLINE ARDUINO.

Tras varios día de estudio, investigación y programación he diseñado una simple estación meteorológica que espero que os guste. Envía datos desde un ARDUINO UNO con tarjeta ETHERNET a través de la red y, otro servidor web, es capaz de ejecutar una aplicación para leer y tratar los datos. 

  1. Información en Google Drive
  2. Programas en Github.

8 de agosto de 2016

14. Moodle en la Raspberry Pi. Lentitud del sistema.

No sé demasiado sobre el tema. Simplemente iré hilando ideas tras leer en la web páginas en las que se habla del mismo.

Al parecer hay dos cuellos de botella con la Raspberry Pi. El primero es la velocidad de transferencia de datos almacenados (ya que no es lo mismo el acceso a una tarjeta microSD que a un disco duro), y el segundo puede ser la velocidad de la tarjeta ethernet, que es una 10/100 no una Gigabit.

La tarjeta microSD es una kingston 64GB clase 10 UHS-1, con 45MB/s de lectura y 10MB/s de escritura según el fabricante.  Comparado con:
  1. Disco duro HDD: hago la prueba con el disco duro del ordenador que estoy usando, que es una unidad de 160GB SATA. Usando el comando hdparm de Ubuntu, tenemos una velocidad de lectura de unos 63MB/s. La prueba de velocidad de escritura me da 51,9MB/s.
  2. Disco SSD: en mi ordenador de torre personal tengo una unidad SSD en la que, midiendo tengo una velocidad de lectura de 313 MB/s y de escritura de 343 MB/s.
  3. En el servidor, microSD: la velocidad de lectura es casi fija en 13,59MB/s y la velocidad de escritura arroja un resultado de 8,6MB/s. 
En esta página parece que puede mejorarse la transferencia con un overclocking (cuidado con la pérdida de datos): http://www.jeffgeerling.com/blog/2016/how-overclock-microsd-card-reader-on-raspberry-pi-3
En esta otra se habla de una comparativa de tarjetas y de velocidades medidas. http://www.jeffgeerling.com/blogs/jeff-geerling/raspberry-pi-microsd-card. En ella puede observarse que la tarjeta análoga, de la misma marca (Kingston clase 10 16GB) tiene un rendimiento algo mayor que la nuestra de 64GB. La que parece mejor documentada (y explica por qué los rendimientos teóricos no son comparables a la comunicación en la raspberry).

Otra página que habla como tener una tarjeta Gigabit con una Raspberry: http://www.jeffgeerling.com/blogs/jeff-geerling/getting-gigabit-networking
Conclusión: ¿es posible mejorar el acceso y la velocidad? Creo que, por este orden, habría que hacer:
  1. Mejorar el rendimiento del software. Implicaría una configuración quizás diferente, con un servidor web más ligero, con un php más eficiente. Habría que seguir los paso de la web: https://moopi.uk/ y/o https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-in-ubuntu-16-04 ... Y otra web: https://www.howtoforge.com/tutorial/installing-nginx-with-php7-fpm-and-mysql-on-ubuntu-16.04-lts-lemp/
  2. Comprar una tarjeta de mejores prestaciones: OWC Envoy SSD 64GB, SanDisk Ultra Fit32GB... Si son ciertas las informaciones de las páginas web anteriores, deberíamos mejorar casi al doble el rendimiento de la Raspberry para este propósito. 
  3. Atreverse a hacer un overclocking, pero salvaguardar los datos con una imagen antes.
Esperemos que en un futuro las prestaciones de una tarjeta como Raspberry alcancen las mínimas para montar este y otros servicios en red, como NAS, por ejemplo. Para ello deberían contar con un dispositivo I/O SATA dedicado (http://www.mikronauts.com/raspberry-pi/how-can-i-add-a-sata-hard-drive-to-a-raspberry-pi-2/)

En esta otra página hablan de una tarjeta de expansión, la X300, que tiene una conexión SATA: http://www.suptronics.com/xseries/x300.html. ¿Podrá ser esa una solución? En ese caso conectaríamos un disco duro al sistema con quizás su propia alimentación.
 

7 de agosto de 2016

13. Moodle en la Raspberry PI. Tareas de cron.

En el manual de Instalación rápida de Moodle, puede leerse que no debemos olvidarnos de ejecutar frecuentemente el fichero cron.php. (¡¡Nos aconsejan cada minuto??). Este fichero pone en marchas procesos de limpieza, sincronización, comprobación de actualizaciones, etc., y su ejecución permite que tengamos Moodle optimizado.

Desde un terminal (como administrador) se ejecuta el cron de Moodle fácilmente con la orden: /usr/bin/php /var/www/html/moodle31/admin/cli/cron.php. Sin embargo, como tenemos que ejecutarlo repetidamente, lo mejor es usar la utilidad crontab para que nuestro servidor lo haga automáticamente. Crontab es el "demonio" de Linux que ejecuta tareas automáticas programadas según entradas de hora y fecha (ver manual de uso de crontab).

Yo no voy a ejecutarlo cada minuto... Aún hay que resolver los problemas de lentitud del sistema y no quiero que esté constantemente ejecutándose esa orden. Lo haré una vez al día, además, cuando presuma que nadie está usando el servidor (tened en cuenta que se supone que un servidor siempre está encendido). Así que mi opción es ejecutarlo a las 3:30 de la madrugada. Mi tarea de cron es:

30 3 * * * /usr/bin/php /var/www/html/moodle31/admin/cli/cron.php

Minuto 30, hora 3, los demás asteriscos significan que cualquier día, y después, el comando. Antes del comando también se puede poner el usuario que lo ejecuta root, quedando como 30 3 * * * root /usr/bin/php /var/www/html/moodle31/admin/cli/cron.php

Una vez activado, podemos estar seguros que nuestro Moodle se encontrará siempre (en mi caso día tras día... :-) ) optimizado.




12. Moodle en la Raspberry PI. Instalación y Configuración de Moodle

La instalación de Moodle, en general, al menos por el método que he elegido, ha resultado ser lenta y tediosa, lo cual me hace pensar que: primero, es posible que Moodle, al menos en la instalación que estoy haciendo, sea muy lento con la Raspberry (más adelante intentaré explicar la causas de esta lentitud) y, segundo, que la instalación que estoy llevando a cabo está muy alejada de la óptima, con lo cual habría que optar por buscar más información por internet e intentar realizar una instalación optimizada. En fin, siempre habrá tiempo para hacer esto último.

Comentaros que en las instrucciones que siguen el proceso lo he llevado a cabo dos veces; el primero, incompleto, sirvió para darme cuenta que sería bueno instalar unos módulos de php recomendados y, el segundo, el definitivo, se demoró toda una noche (en realidad, porque me fui a dormir y lo dejé trabajando no sé cuanto tardó el proceso, pero os puedo asegurar que más de 4 horas).

 - - -

Instalando Paquetes recomendados.


Abriendo un terminal en la Raspberry (ya sabéis hacerlo) como administrador, instalé los siguientes paquetes:
  • apt-get install php7.0-intl
  • apt-get install php7.0-xmlrpc
  • apt-get install php7.0-xsl
  • apt-get install php-soap
  • Y que no se os olvide, que a mí me pasó, reiniciar después el sistema o con apache2ctl restart o reboot.


Instalando Moodle: Primera Parte.

Básicamente consiste en elegir el idioma de la instalación, indicarle al sistema qué rutas he elegido como directorio de moodle y de datos e indicar los parámetros de conexión a la base de datos MySQL. El sistema mostraría los paquetes php que le hacen falta y su estado, y empezará el proceso de generación de tablas en la base de datos y demás información en el directorio de instalación y en el directorio de datos.


¿Error instalando? Se demora mucho...

A las tres horas aún no ha terminado de generar las tablas

Instalando Moodle: Segunda Parte.

Una vez generada la información que le hace falta a Moodle, el sistema pide los datos del administrador. Es importante elegir un correo electrónico adecuado y una contraseña segura que deberá conservarse (el nivel de seguridad de la contraseña puede cambiarse/modificarse después). A continuación, pide información general para mostrar en Moodle, como el nombre del sitio, por ejemplo, y se accede , por fin, a la primera página, de administración.



Una vez el sistema instalado, en el próximo acceso , sólo tendré que escribir en el navegador http://192.168.1.30/moodle31 (o el nombre que pusiste en la carpeta moodle, u otro), y tras solicitar usuario y contraseña, se accede. 

Y ya podemos dar por concluido el proceso de instalación. A partir de ahora el trabajo se reduce al del administrador de Moodle: configuración del sitio. Pueden hacerse muchas cosas: fundamental, la creación o subida de cursos y la gestión de usuarios,  pero también mejorar el aspecto del sitio, la configuración de una cuenta de correo de envío SMTP, ajuste de parámetros de administración como por ejemplo el nivel de seguridad de las contraseñas, etc.

Por ejemplo, podéis encontrar más información en:


5 de agosto de 2016

11. Moodle en la Raspberry PI. Primeros pasos.

Toda la información de este post se muestra en el vídeo: 



Una guía general para la instalación (https://moodle.org/) se puede encontrar en la página https://docs.moodle.org/31/en/Installation_quick_guide#Basic_Requirements.

Sin embargo, no todos los pasos son absolutamente necesarios hacerlos de esa forma; algunos pueden simplificarse con las herramientas que ya hemos instalado.

Si has seguido las indicaciones de los post anteriores, la configuración de PHP, Apache y MySQL estará completada.
  1. De la página de descargas bájate el fichero ZIP de la última versión estable (en mi caso la 3.1.1). Guárdalo en tu ordenador cliente.
  2. Crea una base de datos entrando en PHPMYADMIN (http://192.168.1.30/phpmyadmin). Yo la he llamado bdmoodle31. Acuérdate del nombre... Si no tienes phpmyadmin puedes, alternativamente, crear la BD como te dice la guía de instalación accediendo a MySQL directamente a través de un terminal.
  3. Crea desde webmin el siguiente directorio /var/moodledata31. Desde el gestor de ficheros de webmin (icono chmod) selecciona la carpeta y dale permisos de escritura/lectura/ejecución para todos (permiso 0777). Si es necesario, Moodle avisará después, durante la instalación, del cambio de permisos que necesita. Observa que este directorio está fuera del directorio público del servidor /var/www/html.
  4. Entra en /var/www/html/ con webmin y sube el fichero zip que descargaste antes en tu ordenador. Descomprímelo. Creará en la raíz una carpeta llamada moodle (si quieres cámbiale el nombre a la carpeta, por ejemplo a moodle31).
  5. Aunque en la instalación habla de permisos, vamos a dejarlo. En la configuración de la instalación, si existen errores, te lo irá indicando sobre la marcha.
  6. Ejecuta en el navegador http://192.168.1.30/moodle (o si cambiaste el nombre de la carpeta /[nombrequepusiste]). Saldrá la página de instalación.
  7. Cambia el idioma a español internacional. Siguiente.
  8. En la siguiente página indica qué extensiones de php faltan. En concreto averiguamos que faltan php-curl y php7.0-zip. Cierra todo lo que estés haciendo, abre un terminal en el servidor (con ssh o directamente en el servidor) y ejecuta los comandos apt-get install php-curl y apt-get install php7.0-zip. Reinicia con apache2ctl restart ...o... reboot. NOTA: es posible que, más adelante, para instalar algo específico hagan falta más paquetes de php que se instalarían de la misma manera.
  9. Comprueba que esa segunda página ya no sale cargando otra vez desde el navegador http://192.168.1.30/moodle. 
  10. Dejamos los siguientes pasos para el siguiente post.

10. Moodle en la Raspberry PI 3. Configuración de php.ini

Toda la información de este post puedes encontrarla en vídeo.


Antes que nada indicar que intentaré instalar Moodle de la misma forma que lo hice en mi otro servidor, que os recuerdo que es un HP Proliant. Ambos tienen 1GB de RAM y unos 65GB de espacio disponible (el primero con discos SCSI y el segundo con una microSD Clase 10) , y, si acaso en mi HP Proliant la velocidad de 3.00GHz mientras que la Raspberry Pi 3 tiene 1.2GHz. Si existen problemas derivados de la diferencia de configuración, los resolveré sobre la marcha o, en su caso, daremos marcha atrás e intentaré la instalación de otra forma, quizás siguiendo las indicaciones de páginas como https://moopi.uk/

Para transferir al servidor ficheros grandes puedo usar FTP. Eso me servirá para cargar paquetes de instalación, contenidos, etc. Los paquetes de instalación pueden cargarse al servidor mediante otros métodos, con wget, con git, etc. Pero hay una circunstancia de carga en la que se usará PHP en particular: dentro de Moodle para subir copias de cursos al mismo. Los cursos son ficheros que pueden ocupar varios megas y, lo habitual, es que PHP no esté habilitado para cargar ficheros muy grandes, así que vamos a permitírselo.

La configuración de PHP viene en un fichero php.ini del que, además, podemos encontrar varias copias distintas en diversas rutas de la instalación (si no, ejecuta el comando whereis php.ini). Tengo que encontrar cuál es el que está usando PHP y donde está. Para ello, en la ruta del servidor /var/www/html crea un fichero phpini.php con el siguiente contenido:


Una vez guardado, ejecuta en el navegador la dirección 192.168.1.30/phpini.php (Recuerda: 192.168.1.30 es mi dirección IP de ejemplo; tú puede que la hayas cambiado. Lee los posts anteriores) , y saldrá una información como...:


En esta página, en la primera línea, aparece la ruta completa al fichero php.ini activo; en mi caso /etc/php/7.0/apache2/php.ini o en la línea de la tabla Loaded Configuration File. Como podréis comprobar este pequeño script muestra la información de todos los parámetros de PHP. 

Si usas Mozilla-Firefox con la tecla CTRL+F accedes a las opciones de búsqueda. Busca los parámetros post_max_size, upload_max_filesize y memory_limit. Comprobarás que no superan los 8MB (8M). Necesito que estos parámetros sean mayores, de 256M.

- - - 

Para cambiarlos sigue los siguientes pasos:
  1. Entra en la webmin del servidor. https://192.168.1.30:10000
  2. Accede con el usuario y contraseña administrador.
  3. En Others (otros), escoge File Manager o Java File Manager (Gestor de archivos o gestor de archivos Java).
  4. Entra en la ruta /etc/php/7.0/apache2 y localiza el fichero php.ini
  5. Haz una copia de este fichero y renómbrala como php_OLD.ini. Si tuvieses algún problema con PHP puedes usar esta copia de nuevo.
  6. Edita el php.ini. Localiza los parámetros anteriores (post_max_size, upload_max_filesize y memory_limit) y cambia sus valores a 256M (los tres). Guarda.
  7. Reinicia el servidor: entra en un terminal como administrador y ejecuta apache2ctl restart. (O bien haz un reboot a la raspberry).
  8. Entra otra vez en la página 192.168.1.30/phpini.php. Localiza los parámetros y comprueba que tienen el nuevo valor de 256M.








4 de agosto de 2016

Listado Raspberry PI

RaspBerry Pi 3 Model B con Ubuntu Server 16.04 Standard


09. Raspberry Pi, Ubuntu Server 16.04. FTP

Es conveniente también usar un servicio FTP; en mi caso usaremos vsftp (very secure ftp). Su utilidad radica en que puedo así subir/bajar ficheros con relativo peso, o muchos en bloque.

Puedo encontrar información en las siguientes webs:
  1. https://xsyscapacitacion.wordpress.com/2012/10/21/pasos-para-configurar-servidor-ftp-en-ubuntu-server/
  2. http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-ftp-vsftpd-conf.html

Los pasos que he dado son los siguientes:
  1. Instalo el servicio apt-get install vsftpd
  2. Hago una copia del fichero de configuración, por si las moscas: cp /etc/vsftpd.conf  /etc/vsftpd.conf.bak
  3. Edito el fichero de configuración: nano /etc/vsftpd.conf 
  4. Después de leer las páginas web, edito el fichero como sigue:
    1. listen=YES
    2. # NO PERMITO EL ACCESO ANONIMO
      anonymous_enable=NO
    3. # PERMITO LA ESCRITURA EN ARCHIVOS
      write_enable=YES
    4. # directorio donde se suben los archivos
      local_root=/home/miusuario/ftp/  (se escribe al final del fichero)
  5. Creo en el servidor una carpeta dentro de /home/miusuario llamada ftp
    1. cd /home/miusuario
    2. mkdir ftp
    3. Cambio permisos para esa carpeta, de escritura/lectura para todos: chown 0777 -Rf /home/miusuario/ftp/
    4. reboot
- - - 

Tras haber configurado el servidor, para que sólo pueda entrarse con las contraseñas y usuarios ya creados en Ubuntu Server , la carpeta donde nos loguearemos para subir o bajar ficheros directamente es la que hemos creado. 

Ahora, en nuestro ordenador cliente tan sólo deberemos instalar un cliente de ftp, como filezilla, y configurarlo como SFTP (secure FTP - puerto 22) con los parámetros de conexión conocidos: IP: 192.168.1.30, usuario y contraseña la de nuestro servidor. La primera vez que se conecte por SSH pide una confirmación.

  1. Para instalar filezilla: apt-get install filezilla
  2. Tutorial de filezilla: https://wiki.filezilla-project.org/FileZilla_Client_Tutorial_(es)

08. Raspberry Pi, Ubuntu Server 16.04. SSH e instalación de webmin.

Ya en una anterior entrada comentamos que nuestro servidor lo manejaríamos desde otro ordenador. Ese otro ordenador, en mi caso, tendrá instalado una versión de Linux (Ubuntu). A partir de ahora lo llamaré "cliente".

De dos formas:

Conexión SSH.

Cuando instalamos el LAMP server, avisamos si estaba marcado el OpenSSH Server. El protocolo SSH permite conexiones seguras entre dos ordenadores. Así que si en mi ordenador cliente abro un terminal (aplicaciones >> herramientas del sistema >> terminal):

  1. Accedo como root o administrador en mi ordenador cliente.
  2. Escribo la orden ssh -p22 nombredeusuario@192.168.1.30 , cambiando, lógicamente, el nombredeusuario por el que tengamos en el servidor.
  3. Accedemos a una terminal como si fuese la del servidor. Observa que cambia el nombre al nombre del servidor que le pusimos. Puede que tengas que confirmar primero, la primera vez, que quieres conectarte.
  4. Para ejecutar comandos en esta terminal en el servidor, todavía tienes que loguearte como administrador en él. Ya sabes... sudo bash. Sí, muchas órdenes y contraseñas, pero funciona.

Instalando webmin


Webmin es una aplicación web que instalamos en nuestro servidor y permite su control completo de forma remota y gráfica. Para instalarla en el servidor accedemos a un terminal (ya sabemos que podemos hacerlo directamente o bien de forma remota desde un cliente con ssh).

  1. Seguir los pasos de este post: https://www.digitalocean.com/community/tutorials/how-to-install-webmin-with-ssl-on-ubuntu-14-04
  2. Y ya, desde el cliente, podemos acceder a ella escribiendo en la barra de direcciones de un navegador https://192.168.1.30:10000 (Importante , protocolo https no http).
  3. Webmin permite controlar servicios, actualizar paquetes, y lo que es más importante: controlar los archivos. Para ingresar en él, escribir el usuario y contraseña de acceso al servidor.
  4. Es importante, en el ordenador cliente, tener actualizado el plugin de Java, y aún más importante, darle permisos en el ControlPanel de Java a la dirección https://192.168.1.30:10000.  Desgraciadamente, el plugin de Java tiene un nivel de seguridad muy alto por defecto y pregunta constantemente si estas seguro que se puede acceder. 



07. Raspberry Pi, Ubuntu Server 16.04. Apagar mi servidor Raspberry Pi

Para apagar mi servidor solamente tengo que ejecutar, como administrador, la orden shutdown -h now.

Recuerdo que para reiniciar simplemente reboot.

06. Raspberry Pi, Ubuntu Server 16.04. LAMP Server y PHPMYADMIN


Llegados a este punto, aún no hemos convertido nuestro servidor en algo que dé honor a su nombre. Todavía no "sirve" nada, no entrega información en respuesta a peticiones. Por lo menos, no lo parece. 

Servicios hay muchos. Nuestro servidor puede ofrecer servicios de DNS, FTP, SSH, Correo, WEB, etc. El propósito de este manual será convertirlo en un servidor web, es decir, capaz de entregar información tipo HTML por el puerto 80 (No un servidor seguro capaz de entregarlas por el puerto 8080) . 

Podemos seguir muchos manuales, y en cada uno habrá formas ligeramente distintas de instalar y configurar. Por ejemplo, podríamos seguir este manual:  manual configuración servidor raspberry pi 3

Pero yo lo hice de una manera distinta. Tengo que instalar y configurar LAMP, es decir: Linux Apache, MySQL y PHP. Todas las entradas anteriores han servido para configurar Ubuntu Server, que es un Linux, así que la primera parte está completada. Ahora necesito instalar Apache, el programa que responde a peticiones web y entrega páginas HTML (su versión Apache2) ; MySQL que es el gestor de base de datos, y PHP un lenguaje de programación en el servidor. Los tres componentes imprescindibles de un servidor web... Además, para tener un GUI (gestor gráfico) de bases de datos instalaremos PHPMYADMIN, pero algo más tarde.
- - - 

LAMP Server con TASKSEL.

La forma más fácil que conozco, que suele funcionar bien, es instalar el selector de tareas tasksel.

apt-get install tasksel y ejecuto después como administrador tasksel.

Y de la pantalla selecciona (con espacio) LAMP Server (y si quieres, comprueba que esté seleccionada OpenSSH Server, para después).


Ejecuta con OK, y sigue las instrucciones. Básicamente preguntará un par de veces por una contraseña para MySQL (anótala y no la pierdas). El proceso completo puede tardar un rato: ten paciencia. A mi me tardó como media hora, con una conexión rápida, y en la instalación de mysql-server y php7-common se demoró bastante (sobre el 78%). En el momento de escribir estas líneas, se ha instala la versión 2.4.18 de Apache, la 7.0.8 de PHP (php7), y la 5.7.13 de MySQL.

Si no da problemas, debe quedar instalado el servidor de forma completa. Como no funciona el reinicio normal de servicios con "/etc/init.d/networking restart" o "service network restart", haz un reboot. O bien , usa los comandos ifdown eth0 y ifup eth0.

- - - 

¿Qué ha cambiado? ¿Qué he hecho?

Para ver que efectivamente funciona, haz estas comprobaciones:


  • En el terminal, como administrador escribe y ejecuta cd /var/www/html y ls -l. Deberá aparecer la siguiente información: -rw-r--r-- 1 root root 11321 ago  3 08:59 index.html. Aquí lo importante es que aparezca el fichero index.html
  • La prueba del algodón: en otro ordenador, conectado a la misma red, abre un navegador y escribe en la barra de direcciones la siguiente dirección: http://192.168.1.30.  



  • Si todo ha ido bien, deberá aparecer esta página:



NOTA: A partir de este momento, y cada vez más, trabajaremos desde otro ordenador. Yo prefiero, y me referiré muchas veces, a uno con un sistema Linux (Ubuntu) normal. Eso no quiere decir que no se pueda usar otro sistema operativo, pero no me referiré a cómo hacerlo en Windows o en MAC. Tanto es así, que llegará un momento en el que no necesitaré conectar mi servidor a un monitor y no necesitará teclado.  Solamente con la tarjeta de 64GB, la conexión eléctrica (lógicamente) y la de red será suficiente. De todas formas, todo lo que se haga a través de terminal podrá seguir haciéndose directamente conectándome directamente al servidor.

- - - 


Instalando PHPMYADMIN

NOTA: La instalación normal de phpmyadmin (referida abajo) parece que no funciona bien con php7. Me da error, pero la dejo porque en algún momento supongo que arreglarán los problemas con php7 y funcionará. 
  1. En un terminal como administrador, teclea y ejecuta apt-get install phpmyadmin. El proceso puede durar varios minutos.
  2. Accede desde otro ordenador escribiendo en la barra de direcciones del navegador http://192.168.1.30/phpmyadmin
  3. Como usuario debes escribir root, y contraseña la que elegiste para MySQL en el paso anterior. Recuerda: phpmyadmin es un gestor de base de datos gráfica de MySQL.
Lo que a mí me ha funcionado...
  • Comprobar que todo está bien instalado. Ejecutar apt-get autoremove y apt-get autoclean para refrescar los paquetes y reparar posibles errores (yo tuve que hacer hasta un apt-get install -f y dpkg --configure -a, y después regenerar el nombre lógico de la tarjeta eth0 como se describe aquí: http://askubuntu.com/questions/767786/changing-network-interfaces-name-ubuntu-16-04 (primera solución propuesta) y todo por instalar siguiendo el proceso normal explicado antes)
  • La solución de http://stackoverflow.com/questions/34060036/have-trouble-installing-phpmyadmin-on-php7-apache-2-4-7-ubuntu y además...
    • Elijo apache2 como web server a configurar
    • Yo preferí a la pregunta "configure the database for phpmyadmin with dbconfig-common?" decir NO. Pero no sé si tendré que configurar algo después.
    • La contraseña, siempre la misma que MySQL. Tanto para acceder a MySQL como para acceder a PHPMYADMIN.
  • Y ya por fin, el punto 2 anterior: accede desde otro ordenador escribiendo en la barra de direcciones del navegador http://192.168.1.30/phpmyadmin








05. Raspberry Pi, Ubuntu Server 16.04. Nombre del servidor e IP fija.

Algo que nos conviene hacer sería cambiar el nombre del servidor. Cuando accedemos con nuestro login al sistema , aparece algo como usuario@ubuntu-standard. Para que aparezca otro nombre (en este y otras circunstancias) haremos lo siguiente:

- - - 

Nombre del servidor


  • nano /etc/hostname; modifico el nombre en el editor que sale y pulso CTRL+O para escribir, y CTRL+X para salir.
  • nano /etc/hosts; en esta pantalla hay varias lineas. Sólo modifico el nombre antiguo donde aparezca por el nuevo, normalmente en la última línea. Guardo y salgo como antes.
  • En algunas páginas de internet donde hablan de cómo cambiar el nombre del servidor y otros servicios, aparece que puede usarse "/etc/init.d/hostname" o "service hostname restart", pero no es efectivo bajo Ubuntu Server para Raspberry. Lo único efectivo es hacer un reboot.

- - - 

IP fija

Ya comentamos que conviene que el servidor tenga una IP fija, no una asignada por la puerta de enlace (el router, normalmente la puerta de enlace,  suele ser servidor de DHCP y asigna él las direcciones de los dispositivos que tenga conectados).  Para hacerlo hay que modificar el fichero "/etc/network/interfaces", con el comando nano /etc/network/interfaces.

NOTA: Antes conviene averiguar las direcciones DNS: en un terminal, usa el comando nmcli device show eth0 | grep IP4.DNS  (para versiones anteriores a la 15, Ubuntu 14 nmcli device show eth0 | grep IP4). Quizás necesites antes instalar el network-manager (apt-get install network-manager). También se puede hacer desde otro ordenador conectado a la misma red. Normalmente las direcciones DNS pertenecen a la compañía suministradora de internet que tengas. 

Pongo el caso ejemplo de mi configuración. El fichero debe quedar como:

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
# source-directory /etc/network/interfaces.d

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
# iface eth0 inet dhcp
address 192.168.1.30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 87.216.1.65 87.216.1.66

Las dos líneas en rojo son las que deberían aparecer por defecto. La segunda se puede borrar, pero he preferido añadirle un comodín "#" y simplemente añadirla como comentario. Se añade la línea anterior, que indica al sistema que la conexión no será por dhcp sino estática. Elijo los parámetros de conexión: dirección IP (address) es la dirección fija de mi servidor. En esta configuración, siempre tendrá la misma; puerta de enlace o gateway, broadcast, dns, etc. Importante: la dirección IP que usaré a partir de ahora será la 192.168.1.30, de ejemplo, pero en tu caso puede ser distinta. Tenlo en cuenta para las siguientes entradas de este blog.

Para una configuración de prueba, en mi servidor, esto es suficiente. Haz un reboot para aceptar los cambios y deberás comprobar, con un ifconfig y un ping www.google.es que la configuración funciona. 

Para una configuración real, deberás configurar tu router, tu puerta de enlace. Y eso ya dependerá del modelo de router que tengas, y de las opciones que traiga, que sea más o menos difícil. ¿Por qué tengo que configurarlo? A ver, tal como está, si mi servidor está apagado y lo enciendo, puede pasar que el router ya haya asignado mi IP fija a otro dispositivo y entre en conflicto. Mi servidor quiere conectarse a la .30 y ya está cogida.

Además, un servidor responde a peticiones externas, del exterior, con lo que conviene que el router tenga abierto al menos el puerto 80 (peticiones HTML) como salida y otros como el 22 o el 21 para SSH y FTP. En definitiva, en el router hay que (conviene) hacer:
  1. Restringir el rango de direcciones concedidas por DHCP. Por ejemplo, si escojo el 192.168.1.30 que el rango sea entre 192.168.1.31 y 192.168.1.200. Si preveo que voy a tener conectados, como máximo, 100 ordenadores a mi red, con ese rango ya los tengo cubiertos, y así me aseguro que el router jamás concederá la dirección .30 por DHCP.
  2. Anotar la MAC del dispositivo eth0, de la tarjeta de mi servidor, y en el router, fijar una IP a dicha MAC. Con eso me aseguro que queda restringida en el router y el mismo sólo la asignará a mi dispositivo esa IP cuando se conecte y no la asignará a otro dispositivo.
  3. Abrir los puertos que cité anteriormente como entrada y salida, en ambas direcciones. Los que vaya a usar, los otros no. Por lo menos, de salida al exterior.
  4. Rederigir las peticiones del puerto 80 (u otro) a la IP de mi servidor (.30). Si un ordenador de otra red solicita una página web a mi servidor, por ejemplo, el router tiene que saber explícitamente a que IP dirigirse dentro de mi red interna. 





04. Raspberry Pi, Ubuntu Server 16.04. IP, ¿cuál tengo?. Repositorios no oficiales.

Antes de seguir con la configuración de nuestro Ubuntu Server propiamente dicho, es conveniente conocer cómo se ha conectado a internet.

- - - 

Conexión a internet


  1. Como administrador, hago un ifconfig.
  2. Me aparecen dos configuraciones: una con la etiqueta eth0 (conexión por ethernet) y otra local lo. El dispositivo eth0 corresponde a mi conexión por cable al router, y, si existen más de una puede aparecer como eth1, eth2,... 
  3. Como debe haberse conectado automáticamente por eth0, me interesa fijarme en los datos que aparecen con esa etiqueta. Por ejemplo, a mí me aparecen:
    • Dirección hardware o MAC o HWaddr: b8:27:eb:--:--:-- (no la escribo entera... :-) )
    • Dirección IP (inet addr): 192.168.1.30
    • Máscara o Mask: 255.255.255.0
    • Broadcasting o Bcast: 192.168.1.255
    • La puerta de enlace no aparece, pero suele ser 192.168.1.1 (para saberla a ciencia cierta, escribe route en el terminal y observa donde pone gateway)
  4. Un ifconfig -a , hace aparecer una conexión más, inalámbrica, wlan0. No es mi propósito usar una conexión inalámbrica. Si más adelante la necesito y la configuro, escribiré otra entrada haciéndolo, pero que sepáis que se puede usar una conexión inalámbrica al dispositivo. 
  5. ¿Qué es lo importante? Lo importante es saber qué rango de IPs tengo. En mi caso, de la máscara de entrada y de mi IP sé que en principio mi dispositivo tendrá una IP que iría de la 192.168.1.2 a la 192.168.1.254 (la 192.168.1.1 la tengo ocupada por mi puerta de enlace, el router). En este caso es la .30, pero mi router puede asignarle,  por ser servidor DHCP, cualquiera en ese rango. Eso no es bueno para un servidor, el no saber siempre que IP tendrá. Más adelante trataremos cómo asignarle una IP fija, siempre la misma.
- - -

Repositorios no oficiales


Antes de continuar, os dejo la dirección de la guía de instalación de raspberry pi con Ubuntu 16.04. En ella, instalé el apartado "Optional PPA", el repositorio que indica. Sin embargo, no creo que sea necesario. Son librerías para mejorar la calidad de vídeo en otra instalación de Ubuntu, pero podría ser útil si decidimos instalar un escitorio. 

sudo add-apt-repository ppa:ubuntu-raspi2/ppa
sudo apt-get update

03. Raspberry Pi, Ubuntu Server 16.04. Tamaño de letra y juego de caracteres. Problema del LOCALE

Como tengo el router al lado de la TV , he optado por conectarla a la RPi3 mediante su conexión HDMI. Funciona perfectamente, pero tengo un problema: la letra es muy pequeña, y no la veo bien. Para aumentar el tamaño de la letra de la consola...

  1. Usar dpkg-reconfigure console-setup (como administrador; ya puedes usar el nuevo usuario del paso anterior). NOTA: a partir de este momento, todas las órdenes y comandos, si no se especifica lo contrario, deben ejecutarse como administrador.
  2. En el programa de menú de opciones que sale he escogido las opciones: Latin2 / TerminusBold / 16x32. Lógicamente, otras son posibles. 
El otro problema es que el teclado , lógicamente en español, no corresponde sus teclas con el juego de caracteres del software, que está en inglés. Como resultado, al pulsar algunas teclas no obtendré el caracter deseado. Una solución puntual es usar el comando loadkeys es, que carga el juego de caracteres en español, pero no permanece. Para que lo haga necesito:

  1. Instalar el paquete console-data: apt-get install console-data.
  2. Reconfigurar el paquete: dpkg-reconfigure console-data. He usado las opciones, "select keymap from full list (usb keyboards)" y "pc/qwerty/spanish/standard/standard".
  3. Uso el paquete dpkg-reconfigure keyboard-configuration para elegir el modelo de teclado. En mi caso, elijo Logitech Generic keyboard / spanish / spanish y resto de opciones por defecto. 
  4. Hago reboot.
Un poco más adelante en el proceso de configuración me tropecé con un problema, quizás causado por la instalación de las opciones que aparecen en esta página. El lenguaje "español" en el sistema (locale) no está bien configurado. Si al hacer un apt-get update aparece en el listado el error del tipo "setting locale failed", haz lo siguiente:
  1. dpkg-reconfigure locales
  2. En la primera pantalla, desmarcar "Todas las configuraciones regionales". Buscar en la lista (cursores arriba-abajo y avanzar/retroceder página)  y elegir (tecla espacio) las opciones "es_ES.UTF-8" y "es_ES@euro ISO-8859-15".
  3. En la siguiente página escoge sólo la opción es_ES.UTF8
  4. Al salir, usa el comando update-locale LANG=es_ES.UTF8 y actualiza las opciones actuales del idioma en el sistema.
  5. Para ver que todo está bien, usa el comando locale. En el resultado, debe aparecer es_ES.UTF8 en casi todas las entradas.
LANG=es_ES.UTF8
LANGUAGE=
LC_CTYPE="es_ES.UTF8"
LC_NUMERIC="es_ES.UTF8"
LC_TIME="es_ES.UTF8"
LC_COLLATE="es_ES.UTF8"
LC_MONETARY="es_ES.UTF8"
LC_MESSAGES="es_ES.UTF8"
LC_PAPER="es_ES.UTF8"
LC_NAME="es_ES.UTF8"
LC_ADDRESS="es_ES.UTF8"
LC_TELEPHONE="es_ES.UTF8"
LC_MEASUREMENT="es_ES.UTF8"
LC_IDENTIFICATION="es_ES.UTF8"
LC_ALL=
  • Haz reboot.









02. Raspberry Pi, Ubuntu Server 16.04. Usuarios

Ubuntu Server 16.04 standard viene configurado con el usuario/contraseña por defecto ubuntu / ubuntu, que sería el usuario administrador. Es conveniente anular este usuario o, al menos, cambiar su contraseña. He optado, en esta configuración, por la segunda opción.
  1. Una vez logueado como ubuntu / ubuntu, deberá aparecer algo como... ubuntu@ubuntu_standard:~$
  2. Escribir el comando sudo bash y, al solicitarlo, volver a introducir ubuntu de contraseña. Con este comando, accedo como administrador (root). Verás como el símbolo "$" cambia a "#".
  3. Cambiar la contraseña escribiendo el comando passwd
Además, he preferido añadir otro usuario como administrador. ¿Cómo lo haría?
  1. Tengo que estar  logueado con "ubuntu" como administrador.
  2. Uso el comando adduser usuario para añadir un nuevo usuario (pon el nombre que quieras en vez de "usuario"). Te preguntará por una contraseña.
  3. Si necesitas cambiar su contraseña, usa el comando passwd usuario.
  4. Para hacerlo administrador, entra con el usuario ubuntu como administrador y añade al nuevo usuario al grupo sudo (administradores) con el comando: adduser usuario sudo.
Recuerda: cambia usuario por el nombre que quieras.

01. Usando la Raspberry Pi con Ubuntu Server. Instalación.

Empiezo con ésta una serie de entradas dedicadas a la Raspberry Pi. Mi intención es replicar la configuración del servidor que tenemos en el instituto, tener un dispositivo relativamente barato y manejable que pudiese reemplazarlo en caso de avería. De hecho, nuestro server, un HP Proliant con discos SCSI (68GB), ya me dio un susto el año pasado y hubo que repararle la placa.

Para esta configuración, he optado por adquirir lo siguiente:
  1. Placa Raspberry Pi 3 Model B. Más información
  2. Tarjeta microSD de 64GB. Recomendado clase 10 (transferencia 10MB/s), que me hará de "disco duro" (prácticamente la capacidad del disco SCSI). (transferencia 10MB/s).
  3. Cargador de 2.5A. Según la Wikipedia el consumo de este modelo es de 800mA (a 5V) luego "sobran" 1.7A que me permitiría, quizás, ampliar el consumo a un disco duro externo en un futuro sin una segunda fuente de alimentación.
  4. Teclado inalámbrico por USB Logitech.
  5. Carcasa oficial para protegerla.
En total, todo ha costado unos 100€. Quizás salga incluso más barato si compramos online, pero opté por hacerlo en una tienda de confianza de mi ciudad: http://fabricadigital.org/

La capacidad de la tarjeta, tan alta como 64GB, no parece suponer un problema para las RPi-3. En la tienda me advirtieron que quizás tuviese que hacer "algo más" para que la aceptara, pero, ya digo, no he tenido problemas en este punto.  Quizás con otros modelos, tipos de tarjeta o configuraciones sí sea un problema.

Para el proceso he usado un ordenador con el sistema operativo Ubuntu y escritorio Mate (basado en Gnome). No quiere decir que no se pueda usar otro sistema operativo, pero el proceso siguiente puede ser distinto.

- - - 

Pasos para la instalación de Ubuntu Server 16.04 en la tarjeta.

  1. Antes que nada, acceder a la web https://ubuntu-pi-flavour-maker.org/download/ y descargarse la versión de Ubuntu que vayamos a usar. Opté por la versión Ubuntu Server Standard 16.04, aunque para otros usos hay versiones distintas disponibles.  
  2. Una vez obtenido el enlace torrent, y con un cliente de descargas de este tipo (para Ubuntu tengo el BitTorrent), te descargas el fichero que debe terminar en .img.xz 
  3. Necesitaré un lector de tarjetas por USB para insertarle nuestra tarjeta,y, usando la utilidad "discos" de Ubuntu que suele encontrarse en Sistema > Preferencias > Hardware > Discos elegir la tarjeta montada y pulsar sobre Restaurar imagen de disco. Busca el fichero de la imagen en tu ordenador, sin descomprimir, y empieza el proceso. NOTA: en la web encontrarás métodos diversos, equivalentes, para Ubuntu y otros sistemas operativos
  4. El proceso restaura una imagen mucho más pequeña que los 64GB, de unos 2GB si no recuerdo mal. El espacio que sobra está inutilizado, vacío. Por ello es interesante modificar la partición creada para que ocupe todo el espacio. Necesito, pues, redimensionarla. Para eso uso el maravilloso programa gparted de Linux. Ten paciencia, el proceso puede tardar varios minutos.
Una vez acabado el proceso, la tarjeta con Ubuntu Server Standard 16.04 estará lista para insertarla en nuestra RPi-3.




26 de junio de 2016

Reto_11: Nubes y lluvia: clonación

La tormenta perfecta

 

En esta pantalla aparecen muchas nubes y muchas gotas de lluvia. Pero sólo hay un objeto de cada. Para que aparezcan muchos deberás COPIARLOS y moverlos de forma independiente. Intenta hacer una "tormenta perfecta" . Fíjate en el programa de los asteroides COMO APARECEN LAS PIEDRAS.

Instrucciones:

Reto_90: Juegos con SCRATCH

Intenta realizar los siguientes juegos:
  1. Ping-Pong
  2. Juego del ahorcado
  3. Invasores del espacio
  4. Juego de baloncesto
  5. El comecocos (pacman)

Lista de entradas SCRATCH

SCRATCH


Reto_09: Arkanoid (clonación)

Deberás conseguir que los ladrillos del proyecto se dispongan en 3 filas y 9 columnas, como en la foto (los colores de los ladrillos son aleatorios). Tienes que utilizar el concepto de CLONACIÓN. Cada vez que llamas a la orden "Crear clon de..." se crea una copia de un objeto.


Instrucciones:
= =  =
Ampliación
En la siguiente ficha se cuenta cómo hacer el juego del arkanoid. ¿Te atreves a hacerlo? NO HAY QUE SEGUIR LAS INSTRUCCIONES AL PIE DE LA LETRA, simplemente es una guía de como hacerlo.

Intenta hacerle mejoras. Explícamelas después, antes o después de mandarme el enlace.


Reto_12: Más sobre asteroides.



Ya conocemos el juego asteroides. ¿Eres capaz de hacer algo más, el disparo de la bala, que las piedras se rompan y salgan dos cuando les disparan, el contador de aciertos? Cualquier cosa que hagas se te puntuará con puntos extra en la evaluación.

Instrucciones:
  • El ejercicio de SCRATCH (Reto_9) anterior, cuando lo resuelvas, hazle una copia.
  • Trabaja la copia y, cuando consigas algo, edita la tarea y vas entregando.

Reto_10: Asteroides

El juego "Asteroides" es uno de los primeros videojuegos aparecidos en el mercado. Puedes leer sobre él en la wikipedia y en más páginas.  Una versión del juego con SCRATCH puedes encontrarla en la dirección:



Presta atención:
Se te pide: que en este ejercicio hagas el control de la nave (SOLO EL CONTROL). Al pulsar la tecla izquierda debe girar a la izquierda y girar a la derecha pulsando la derecha. Si pulsas hacia adelante deberá acelerar y si pulsas hacia atrás decelerar y retroceder. El disparo, las balas, el contador, lo dejamos para otra ocasión.
Instrucciones:

Reto_08: Juego de naves

¿Te atreves con un juego de naves espaciales? La idea es la siguiente:
  1. La nave alienígena debe moverse  de izquierda a derecha (o mejor, de forma aleatoria), por la parte superior de la pantalla.
  2. La nave terrestre, el avión, se mueve al pulsar los cursores de izquierda, derecha, adelante, detrás....
  3. La nave terrestre, al pulsar espacio, dispara bolas amarillas.
  4. Cada vez que una bola amarilla impacta en la nave alienígena enemiga debe aparecer en pantalla las veces que le hemos dado. Para ellos necesitarás algún tipo de variable (ver Datos) y sumarle a esa variable 1 cada vez que se produce un impacto.
  5. Opcional: si impacta 10 veces en la nave alienígena, que esta se destruya.
  6. Opcional: que te dispare la nave alienígena a ti, y si te da diez veces, que te mate.
Instrucciones:

Reto_07 : Juego de Billar

Al principio del juego la bola blanca y la bola morada están situadas en unas posiciones determinadas. Al pulsar la bandera, la bola blanca deberá dirigirse hacia la bola morada, golpearla y la bola morada deberá dirigirse hacia la tronera (boquete) señalada por la flecha. Cuando llegue a la tronera la bola morada deberá desaparecer y aparecerá un mensaje de "Conseguido".

IMPORTANTE: el movimiento de las bolas DEBE SER realista. La bola blanca, al golpear la bola, debe salir rebotada. No se pide que la bola blanca rebote en las bandas de la mesa; puedes intentarlo si consigues lo anterior, pero el rebote con la banda es difícil. Tienes que usar matemáticas y calcular ángulos.

Instrucciones:

= = = 

Variante

Hay que hacer lo mismo que antes, pero debemos tener en cuenta que ahora, al principio, las bolas blanca y azul NO APARECEN siempre en el mismo sitio, así que, de alguna manera, la bola blanca debe "averiguar" dónde está la azul para dirigirse hacia ella.

Instrucciones: