Páginas

lunes, 24 de febrero de 2014

A vueltas con el servidor miniDLNA : Actualizando fácilmente su contenido

No hace mucho que escribí sobre este mismo tema, sobre el modo de transformar mi plataforma Ubuntu en un servidor DLNA (ver Viendo películas de tu plataforma Ubuntu en el monitor de televisión en este mismo blog). Parece que hubo un cierto interés en el asunto, tanto como que uno de los amables lectores me sugirió que hablase sobre una utilidad que facilita la labor de actualización de los contenidos del servidor miniDLNA. En eso va a consistir esta entrada, en actualizar la base de datos asociada al miniDLNA, sin tener que refrescar el método utilizado, que por cierto era algo pedestre.

Primera solución

 Esta primera opción que voy a exponer es la estoy utilizando en la actualidad. Es muy sencilla y a cualquiera se le hubiera podido ocurrir. Nos crearemos un fichero de órdenes, o shell-script, que ejecutaremos desde un terminal, cada vez que queramos actualizar la base de datos del miniDLNA.Sin ser muy original, a este fichero lo he llamado minidlna.sh, situándolo en mi carpeta personal.
user1@user-desktop:~$ cd $HOME
user1@user-desktop:~$ touch minidlna.sh
user1@user-desktop:~$ ls minidlna.sh
minidlna.sh
user1@user-desktop:~$
Lo siguiente que vamos a hacer es editar el fichero recién creado dejándolo como se muestra en la siguiente imagen
La primera línea borra la base de datos, la segunda regenera la base de datos, actualizándola con el contenido que encuentre en las carpetas definidas en el fichero de configuración de miniDLNA, y finalmente, reiniciamos el servidor. Guardamos el fichero y le asignamos permisos de ejecución (x) a todos los usuarios (a).
user1@user-desktop:~$ chmod x+a minidlna.sh
user1@user-desktop:~$ ls -la minidlna.sh
-rwxrwxr-x 1 user1 user 146 feb 24 08:41 minidlna.sh
Ejecutamos minidlna.sh desde un terminal y desde donde se encuentra el fichero de órdenes, que hemos considerado que fuera nuestra carpeta personal:
user1@user-desktop:~$ ./minidlna.sh
[sudo] password for user: 
 * Restarting DLNA/UPnP-AV media server minidlna                         [ OK ] 
user1@user-desktop:~$
Y al finalizar la ejecución de minidlna.sh tendremos actualizada la base de datos asociada.
Como podemos ver, el procedimiento es sencillo y rápido. Pero aún puede ser más sencillo y rápido si lo dejamos accesible en el área de indicadores de la barra de menús, tal y como vamos a mostrar en el siguiente apartado.

Indicador miniDLNA en barra de menús

Lo primero que vamos a realizar será bajarnos el fichero que contiene la aplicación del indicador miniDLNA, utilizando la instrucción wget desde un terminal.
wget https://launchpad.net/minidlna-ai/trunk/initial/+download/minidlna-ai-0.0.2.tar.gz
Sería conveniente comprobar que lo que nos bajamos es la última versión, por lo que no estaría de más buscar en Google por las versiones existentes ('launchpad minidlna-ai'), o yendo directamente a https://launchpad.net/minidlna-ai donde podremos bajarnos la versión más reciente.
Una vez descargado, creamos una carpeta cualquiera, descomprimimos desde la carpeta el fichero descargado y vemos los ficheros que aparecen en la carpeta:
user1@user-desktop:~$ mkdir minidlna
user1@user-desktop:~$ cd minidlna
user1@user-desktop:~/minidlna$ tar -zxvf  ../minidlna-ai-0.0.2.tar.gz  
readme
minidlna-ai.desktop
minidlna-ai24-red.svg
minidlna-ai24-off.svg
minidlna-ai24.svg
minidlna-ai.py
default.conf
user1@user-desktop:~/minidlna$ ls -la
total 76
drwxr-xr-x   2 user1 user  4096 feb 24 12:08 .
drwxr-xr-x 205 user1 user 12288 feb 24 12:07 ..
-rw-r--r--   1 user1 user  2345 ago 13  2012 default.conf
-rw-r--r--   1 user1 user 10892 ago 13  2012 minidlna-ai24-off.svg
-rw-r--r--   1 user1 user 10891 ago 13  2012 minidlna-ai24-red.svg
-rw-r--r--   1 user1 user 12311 ago 14  2012 minidlna-ai24.svg
-rwxr-xr-x   1 user1 user   308 ago 13  2012 minidlna-ai.desktop
-rwxr-xr-x   1 user1 user  5606 ene 25  2013 minidlna-ai.py
-rw-r--r--   1 user1 user  2310 ene 27  2013 readme
user1@user-desktop:~/minidlna$
En el fichero readme vienen las instrucciones, en inglés, para instalar el indicador minidlna. Lo vamos a seguir, comentando paso a paso lo que debemos hacer.

Procedimiento de instalación del indicador miniDLNA

  1. Instalamos el paquete python3-gi, para satisfacer las dependencias del indicador.
  2. Copiamos el contenido de la carpeta en donde hemos descomprimido el archivo descargado en /opt/minidlna-ai/.
  3. Copiamos el fichero minidlna-ai.desktop en la carpeta ~/.config/autostart/ con objeto de que se active en cada sesión de usuario, o en ~/.local/share/applications para acceso desde el escritorio.
  4. detenemos el servicio minidlna, que debe estar ejecutándose como un servicio root.
  5. ejecutamos manualmente el fichero minidlna-ai.py con objeto de que se copie el fichero de configuración existente en ~/.config/minidlna.
  6. Editamos, si es preciso, el fichero ~/.config/minidlna/mindlna.conf con los datos apropiados
media_dir=/path/to/media # ubicación de las carpetas con contenido multimedia
db_dir=/home/<user>/.config/minidlna # ubicación de la base de datos .db
log_dir=/home/<user>/.config/minidlna # ubicación del fichero 'log'
Ni que decir tiene que tendremos que sustituir la etiqueta <user> con el nombre de usuario pertinente.
Resumiendo lo anterior, nos queda como sigue:
 user1@user-desktop:~/minidlna$ sudo apt-get install python3-gi
user1@user-desktop:~/minidlna$ sudo cp *.* /opt/minidlna-ai/
user1@user-desktop:~/minidlna$ cp minidlna-ai.desktop ~/.config/autostart/
user1@user-desktop:~/minidlna$ cp minidlna-ai.desktop ~/.local/share/applications
user1@user-desktop:~/minidlna$ sudo service minidlna stop
user1@user-desktop:~/minidlna$ python minidlna-ai.py 
                  -editamos fichero ~/.config/minidlna/mindlna.conf -
user1@user-desktop:~/minidlna$ sudo service minidlna start
y eso es todo. Reiniciamos el equipo y comprobamos que el indicador minidlna-ui aparece en el área de indicadores de la barra de menús y de que la funcionalidad es la esperada.
En el menú desplegable podemos observar que podemos actualizar la base de datos con nuevo contenido multimedia, desconectar y conectar, así como salir de la aplicación.
Como siempre, aprovecho la ocasión para invitar a los amables lectores a que comenten el artículo, con mejoras, correcciones, sugerencias, etc. así como de nuevas entradas.

Enlaces

- miniDLNA
- minidlna-ai
- Viendo películas de tu plataforma Ubuntu en el monitor de televisión

miércoles, 12 de febrero de 2014

Controlando un relé con una salida del conector GPIO del Raspberry Pi

En entradas anteriores he ido ampliando progresivamente las posibilidades de utilización de la Raspberry Pi, empezando, como no podía ser de otra manera, por la instalación del sistema operativo Raspbian, y he continuado con la implementación de una tarjeta de expansión del GPIO, de 2x13 pines. He sido capaz de utilizar el bus i2c para acceder a un Reloj en Tiempo Real, y de controlar las salidas digitales de un mcp23008 y mcp23017. La he integrado plenamente en mi red local, pudiendo comunicarme desde otro ordenador mediante el uso del comando ssh desde un terminal remoto. He instalado LAMP y phpmyAdmin, con lo que he potenciado mi RaspPi haciendo que pase a ser un servidor dinámico de páginas Web.
¿Qué más puedo hacer? Multitud de cosas. Pero en esta entrada voy a centrarme en el control de una salida digital que actuará un relé, activándolo o desactivándolo, a nuestra conveniencia. Oiremos un leve chasquido cada vez que actuemos sobre el relé, cambiándolo de estado. Pero para que dicho cambio de estado sea más visible (aparte de audible) conectaremos un LED tricolor (utilizaremos sólo dos colores) que cambiará entre dos colores (verde y azul) dependiendo del estado del relé (excitado o desexcitado).

Material necesario

El material que he utilizado para este montaje es el siguiente:

  • 1 relé Finder : Serie 30 - Relé subminiatura D.I.L. 2 A (30.22.7.005.0010), u otro de similares características.
  • 3 resistencias de 330 ohmios.
  • 1 LED tricolor  con cátodo común, o también nos valdría leds sencillos.
  • 1 diodo 1N4001.
  • 1 transistor NPN 2N2222A.
  • 1 protoboard.
  • conector de expansión (desarrollado por mi) para conexión de la protoboard al RaspPi. Ver entrada anterior en este blog (Conectando la Raspberry Pi a una protoboard).
Si he utilizado un LED tricolor ha sido porque no disponía de LEDs sencillos ¿?. Con un par de LEDs podríamos realizar el mismo montaje de prueba.
He probado el montaje con dos relés de distintas marcas pero con características similares, y el montaje ha funcionado perfectamente. 

Diseño del circuito

Para el diseño del circuito hemos utilizado el programa Fritzing. La mayoría de los componentes forman parte de la librería estándar del programa, exceptuando el relé, que he tenido de modificar/adaptar a las características del relé utilizado, y que incluyo el enlace para poder utilizarlo. También incluyo el enlace del componente correspondiente al conector de expansión.
Las partes críticas del diseño corresponden a los valores de las resistencias. Debemos tener en cuenta, por un lado, que los 5Vdc que proporciona la RaspPi a través del conector GPIO P1 de 2x13 pines, están muy limitados ( a menos de 300mA). Además, la corriente que puede proporcionar cada uno de los pines del conector GPIO (en este caso estamos utilizando la salida GPIO25) en teoría se limita a 3mA. Pero parece ser que este límite es en teoría (ver Understanding Outputs), ya que en la práctica se han hecho cálculos de que una salida puede llegar a dar 16mA pero con el límite de 51mA para el conjunto de todas las salidas.
El relé requiere una corriente de excitación de su bobina de al menos 30 mA. Por lo que pondremos un transistor que amplifique suficientemente la corriente del pin GPIO25, para despreocuparnos del asunto, transistor NPN que atacaremos su base con la salida GPIO25. Limitaremos la corriente de salida del GPIO25 con una resistencia de 330 ohmios (3,3V - 0,6V = 2,7V => 2,7/330 = 8,2mA). Con una ganancia del transistor (hFE) de al menos 35, tendría la posibilidad de proporcionar, si fuera preciso, una corriente de 287 mA, corriente que estará de todos modos limitada por la resistencia de la bobina del relé (125Ω) a 32mA (5V - 1Vce = 4Vdc => 4/287=32mA).

Montaje del diseño en la protoboard

Una vez realizadas las comprobaciones pertinentes, pasaremos a montar todos los componentes en la protoboard, con la RaspPi sin tensión. Comprobaremos concienzudamente la polaridad de los diodos y transistores y una vez que estemos seguro de ello, conectaremos el cable plano entre la RaspPi y el conector de expansión y alimentaremos a la RaspPi.

Prueba del montaje

Para comprobar que el montaje funciona bien utilizaré una utilidad que viene con la librería WiringPi, de acceso al conector GPIO. Podemos comprobar que se ha instalado previamente tecleando en la consola remota, abierta con ssh, la instrucción gpio -v. Si nos da un error, deberemos instalarla. Por si no la hubiéramos instalado previamente, indico a continuación las instrucciones a seguir para su instalación:
sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin
cd wiringPi
./build
La primera instrucción será precisa si no tuviéramos instalado el software de control de versiones Git.
Una vez instalada, podemos comprobar que se ha instalado perfectamente tecleando de nuevo:
gpio -v
gpio -h
gpio readall
pudiendo ver en las siguientes imágenes lo que nos muestran estas instrucciones.
Ha funcionado a la perfección. La última sentencia nos ha mostrado el estado de los 20 pines del conector GPIO, y la relación biunívoca entre el pin físico y lógico. Se descartan los pines de alimentación y de puesta a tierra.
Procedamos a cambiar de estado el relé, ejecutando las siguientes instrucciones:
La primera instrucción pone el pin lógico 25 como salida. La siguiente instrucción activa la salida y por tanto el relé, con lo que cambia el color del LED tricolor, y con la última instrucción desactiva la salida y conescuentemente el relé, por lo que el led tricolor recupera el color original. En las instrucciones hemos incluido el parámetro -g para indicarle que estamos utilizando los pines lógicos.
Bien, eso es todo. Como siempre, confío en que esta entrada sea de interés y, también, de nuevo reiterar que agradecería todos los comentarios de los lectores, comentarios que sean para ampliar, mejorar, rectificar, etc. o proponer nuevas entradas que sirvan para resolver y aclarar dudas y aprender nuevos usos de la tarjeta Raspberry Pi, o de otros temas técnicos.

Enlaces

- Finder : Serie 30 - Relé subminiatura D.I.L. 2 A.
Full-Spectrum Multicolor Discrete RGB LEDs with Leads.
- Hoja de características diodo 1N4001.
- Hoja de características transistor NPN 2N2222A.
- Raspberry Pi Wiki Hub.
- GPIO current specifications.
- Understanding Outputs
- How to use GPIOs on raspberry pi (Simple I/O, PWM and UART)
- Raspberry Pi – Driving a Relay using GPIO.
- Raspberry Pi, interactuando con GPIO desde la línea de comandos.
- Git (software de control de versiones).
- Wiring Pi.
- The GPIO utility.
- Fritzing.
RelayControlledByRaspPi.

jueves, 6 de febrero de 2014

Conectándonos al RaspberryPi en red local

En esta nueva entrada voy a tratar de abarcar todo lo que necesitamos realizar para conectarnos a nuestro RaspPi de forma remota, primero, a través de nuestra red local; y lo completaremos con el modo de acceder sin problemas desde cualquier parte del mundo (que tenga acceso a Internet).
El modo fácil de comunicarnos con nuestro RaspPi es conectando 1) la salida HDMI (o de vídeo) a un televisor y 2) un teclado+ratón inalámbricos a través de uno de los puertos USB de los que dispone la RaspPi (v2). Éste ha sido el modo que he utilizado para instalar el sistema operativo Raspbian y una serie de paquetes que me permitirán conectarme de forma remota, pudiendo prescindir del monitor de televisión y del teclado+ratón inalámbricos. Estamos hablado de la versión 2 de la Raspberry Pi. Si fuéramos a utilizar la versión 1 de la RaspPi, debemos tener en cuenta que no disponemos de conector RJ-45 y solo dispone de un puerto USB.

Accediendo desde nuestra red local

La RaspPi trae de origen un conector RJ-45 para conectarnos a una red local mediante un cable Ethernet que enchufemos a nuestro router/switcher. Si éste va a ser el modo de acceder, nos podemos saltar el siguiente apartado e ir directamente a Accediendo mediante el comando ssh.
También tenemos la posibilidad de conectarnos a través de una línea serie (en Enlaces se explica el modo de implementarlo), accediendo directamente a la consola de comandos del sistema Raspbian, opción que vamos a descartar, al ser algo más complejo el montaje requerido y no aportar nada interesante.

Configuración de la red WiFi

También podemos acceder por WiFi, siempre y cuando conectemos un adaptador USB-WiFi a uno de los dos puertos USB con que viene dotado nuestra RaspPi (Modelo B). Habrá que elegir, de entre todas las visibles, la red WiFi a la que nos queramos y podamos conectar, red que probablemente estará protegida por contraseña, y que tendremos que introducir para ser aceptados como usuarios de este red local.
Pero ¿cómo podemos conectarnos a una red WiFi? El modo más sencillo sería entrado a través de la interfaz gráfica LXDE que trae por defecto Raspbian y pulsar sobre el icono WiFi Config. Seleccionaríamos la red e introduciríamos la correspondiente contraseña.
¿y si por el motivo que sea no tenemos modo de conectarnos a la red local? El modo que tendremos de  configurar el acceso a la red WiFi consistirá en editar los ficheros de configuración en donde se guardan los datos de la conexión, edición que podemos hacer desde otro PC.
Extraeremos la SDcard del RaspPi, la insertaremos en nuestro PC, nos iremos a la partición en donde se encuentre nuestro sistema operativo Raspbian y procederemos a editar los ficheros pertinentes.
Raspbian necesita dos ficheros para configurar el acceso a una red WiFi protegida por contraseña y encriptación WPA2/WPA (WiFi Protected Access), más segura que con la obsoleta WEP (Wired Equivalent Privacy):
/etc/network/interfaces
/etc/wpa_suplicant/wpa_suplicant.conf
Desde nuestro PC, y en modo root editaremos el fichero interfaces, o nos aseguraremos de que, al menos, contiene las siguientes líneas de código:
Podemos sustituir wpa-roam por wpa-conf si queremos que la conexión se realice por WiFi, a pesar de que estemos conectados por un cable Ethernet. Si lo que hemos puesto es wpa-roam, en el momento que conectemos un cable de red se desactivará la conexión WiFi, y si lo desenchufamos tratará de establecer una conexión por WiFi, buscando entre todas las redes que detecte en este momento y que estén habilitadas en el fichero wpa_suplicant.conf, fichero que vamos a editar, también en modo root:
Nos crearemos un bloque, similar al que en la imagen anterior hemos realzado en verde, y similar al resto de bloques que tengamos. Introduciremos el nombre de la red a la que queremos conectarnos y la contraseña válida para poder acceder. Comprobaremos que los demás parámetros son adecuados.
# Identificador de RED SSID
ssid="Identificador de Red"

# contraseña válida para la red a la que queremos acceder
psk="la contraseña asociada a esta red"

# tipo de protocolo: RSN (para WPA2) y WPA (para WPA1)
proto=WPA

# tipo de gestión de contraseñas:
#   - WPA-PSK (Pre-Shared) o
#   - WPA-EAP (Enterprise)
key_mgmt=WPA-PSK

# tipo de apareamiento: CCMP (WPA2) o TKIP (WPA1)
pairwise=TKIP

# opciones de autorización: OPEN (WPA1/WPA2)
# otras posibles opciones poco frecuentes: SHARED y LEAP
auth_alg=OPEN
Extraeremos la SDcard, y la insertaremos en la RaspPi. Al finalizar el arranque, y si lo hemos hecho correctamente, será capaz de conectarse, si está en cobertura, a la nueva red WiFi.

Accediendo mediante el comando ssh

Averiguaremos si está en red, y la IP que le ha sido asignada, y de este modo entraremos a través del comando ssh. Los detalles de estos pasos vienen explicados aquí, y que corresponde a una entrada previa de este blog. La posibilidad de utilizar el comando ssh puede ser determinado en fase de instalación del sistema Raspbian:
Activado el servidor ssh, podemos invocarlo desde el terminal de comandos que abrimos en otro PC tecleando lo siguiente:
en donde hemos indicado el usuario (pi) y la dirección IP (192.168.1.105) de la sesión que queremos abrir en la RaspPi. Pero ¿no sería más fácil si utilizásemos el nombre de la RaspPi en vez de una ristra de números? Pues eso es lo que vamos a realizar. Para tal fin, vamos a instalar en la RaspPi el servidor Avahi, y utilidades complementarias. Avahi permite a los programas publicar y descubrir servicios y servidores que se están ejecutando en una red local sin una configuración específica.
sudo apt-get install avahi-daemon
sudo apt-get install avahi-utils
una vez instalado, debemos ejecutar el siguiente comando:
sudo insserv avahi-daemon
de este modo, el servicio se activará a cada arranque que realicemos del RaspPi.
Con la instrucción avahi-browse -a -d local se nos mostrarán todos los dispositivos que publican sus servicios a través de ZeroConfig/Bonjour en el dominio .local.
A partir de ahora, y por mucho que cambie la IP de nuestro RaspPi, no tendremos que estar averiguando la IP que tenga en este momento. Nos dirigiremos con el nombre que tenga asignado seguido por .local. Así si el nombre continua siendo raspberrypi, en vez de la IP pondremos raspberrypi.local. Si tenemos activado un servidor Web, introduciremos en el navegador raspberrypi.local. Para acceder mediante una consola remota podremos hacerlo tecleando ssh pi@raspberrypi.local, si queremos hacer un ping, también será posible tecleando ping raspberry.local, y así con todos los servicios instalados en la RaspPi.

Cambiando el hostname

Si queremos cambiar el hostname, lo podemos hacer de dos maneras:
1) ejecutando sudo raspi-config en la consola de comandos, o bien
2) de forma manual, con el siguiente procedimiento:
sudo nano /etc/hosts
sudo nano /etc/hostname
sudo /etc/init.d/hostname.sh
sudo reboot
En los dos ficheros que editemos sustituiremos el nombre actual, raspberrypi, con el nombre por el que queramos sea reconocido nuestro RaspPi.
Para hacer que sean los cambios permanentes, actualizando el kernel con el nuevo nombre, ejecutamos sudo /etc/init.d/hostname.sh y rearrancamos el equipo con la sentencia sudo reboot.

Enlaces

- Raspian
- Raspberry Pi - Installing a RS232 Serial Port
- Raspberry Pi - RS232 Serial Interface Options (Revisit)
- Configuración de la red y acceso a Internet
- How to Setup Wi-Fi On Your Raspberry Pi via the Command Line
- What's the difference between `wpa-roam` and `wpa-conf` in the /etc/network/interfaces file?
- Setting up for WiFi Roaming with wpa
- WPA support in Debian
- Linux WPA/WPA2/IEEE 802.1X Supplicant
- RPi Advanced Setup
- Avahi
- ¿Que es avahi y para que sirve?
- Advertising Linux Services via Avahi/Bonjour
- avahi-daemon man
- Zero-Configuration Networking

lunes, 3 de febrero de 2014

Instalando por enésima vez LAMP y phpMyAdmin, pero esta vez en Raspberry

No es la primera vez, ni será la última que me propongo instalar el paquete LAMP. Pero hace ya bastantes años que con anterioridad a LAMP, instalé WAMP. Eran los tiempos en que aún utilizaba Windows y que empezaba a hacer mis pinitos con Linux. Lo que LAMP significa para el entorno Linux, WAMP lo es para Windows.
LAMP no deja de ser un acrónimo que en su origen significaba: Linux (sistema operativo) , Apache (servidor Web), MySQL (Gestor de base de datos) y PHP ( lenguaje de programación diseñado para el desarrollo web de contenido dinámico). Y si cambiamos la L inicial por la W, se entiende lo de las siglas WAMP para el entorno Windows.
El conjunto de estas 4 piezas de software hizo posible desarrollar portales dinámicos capaces de atender simultáneamente decenas de miles de usuarios en red, a un coste ridículo.
Los cuatro elementos que componen LAMP pertenecen al mundo del Software libre y de Código abierto, una garantía para el usuario de no terminar a la larga siendo cautivo de intereses abusivos.
Con el tiempo, este paradigma de programación ha ido evolucionando e integrando otros módulos pero, a pesar de todo, conservando el acrónimo. Así para la letra P se han incorporado el lenguaje Perl o Python, para la M las bases de datos MariaDB y MongoDB, elementos que han continuado siendo de Software libre y Código abierto.
Aunque existen multitud de páginas (ver en la sección de Enlaces en esta misma entrada) que nos explican con todo lujo de detalles el procedimiento que hay que seguir para instalar este conjunto de programas, voy a intentar describir el modo en el que yo lo he hecho, ampliando algunos apartados que en estas páginas no venían descritas.

Procedimiento de instalación de LAMP

Lo vamos a realizar desde un terminal remoto conectándonos por ssh a Raspberry. Para ello, indicaremos el usuario con el que queremos conectarnos y averiguaremos la dirección IP en la que dentro de nuestra red local se encuentra nuestro RaspPi, pasando a ejecutar la sentencia ssh. Introduciremos la contraseña, lo que nos permitirá conectarnos a la RaspPi de forma remota.
¿Cómo he averiguado la dirección IP? Existen múltiples posibilidades. Si nos vamos al router de nuestra red local podremos averiguar la IP del equipo que tiene por nombre raspberry. Yo utilizo Fing, porque me es más cómodo, y porque tengo la aplicación instalada en mi Android. En este caso, el RaspPi me aparece como Edimax Technology. Pero ¿cómo sé que corresponde mi adaptador WiFi con Edimax Technology? Muy sencillo. Utilizo la instrucción lsusb de Linux para ver los dispositivos USB que tengo instalado en mi RaspPi.
Y de ahí identifico el vendedor del WiFi-USB, y con la aplicación Fing saco la dirección IP, asociada al vendedor identificado. Pero, qué duda cabe, es mucho más rápido utilizar la instrucción de linux ifconfig desde el propio terminal del RaspPi.
 Lo siguiente que vamos a hacer será instalar todos estos paquetes, tecleando por el terminal remoto lo siguiente:
sudo su
apt-get update && apt-get upgrade
apt-get install apache2 php5 mysql-client mysql-server
En el proceso de instalación de mysql se nos pedirá que introduzcamos una contraseña para el usuario root que se crea por defecto, lo que deberemos hacer, guardando en nuestra memoria la que hemos utilizado. Será la única manera de poder acceder a los servicios proporcionados por mysql.
Y ahora pasemos a probar si se nos han instalado y funcionan bien. Para ello, en un navegador introduciremos la dirección a la que responderá el servidor Web recién instalado en RaspberryPi, que coincide con su dirección IP. Se nos mostrará la página por defecto, que podemos editar para dejarla a nuestra entera satisfacción:
sudo nano /var/www/index.html
Al invocar este fichero desde un navegador (fichero que se abrirá como indicábamos con anterioridad simplemente introduciendo la dirección IP del RaspPi) podremos ver la página Web:
Prueba superada. Funciona el servidor Apache Web.
Ahora pasemos a probar que nos funciona el gestor de bases de datos que hemos instalado. En este caso, vamos a utilizar un acceso remoto a través del uso del comando ssh, como ya hemos hecho en otras ocasiones. Una vez hayamos establecido el acceso remoto con nuestro RaspPi, nos conectaremos al servidor mySQL, tecleando mysql --user=root -p. Si tecleamos correctamente la contraseña que nos solicita, que debe coincidir con la que introdujimos en fase de instalación de mySQL, entraremos en el monitor mySQL a nivel de comandos, tal como se muestra en la imagen siguiente. A partir de ahí podremos hacer uso de mysql, crear bases de datos, tablas, usuarios, introducir registros y todo aquello que solemos hacer con una base de datos.
Otra prueba superada. También funciona el servidor/gestor de bases de datos mySQL. Ahora, el siguiente en discordia, el que tenemos que probar que se ha instalado y funciona a la perfección, va a ser el PHP. Con tal fin, vamos a crearnos un fichero con el editor nano y con el contenido que se muestra en la imagen siguiente. Una vez guardado, lo invocaremos desde el navegador que utilicemos.
sudo nano /var/www/test.php
Lo llamamos desde el navegador que utilicemos y, si la instalación del PHP ha sido correcta y funciona, nos aparecerá lo siguiente:
Ya tenemos los tres paquetes básicos que conforman LAMP (además del sistema operativo Linux) funcionando a la perfección. Es el momento de instalar phpMyAdmin, una utilidad muy potente que se apoya en LAMP y que nos permite gestionar la base de dato MySQL desde un navegador.

Instalación de phpMyAdmin

De nuevo vamos a hacer uso de la consola remota para instalar phpMyAdmin.
sudo apt-get install phpmyadmin
Durante la instalación se nos pedirá que indiquemos 1) el servidor Web que utilizará phpAdmin por defecto, 2) los datos para crear la base de datos asociada a phpMyAdmin para su funcionamiento, y 3) la contraseña a utilizar por el usuario root, creado al instalar mySQL. Podemos utilizar la misma contraseña que introducimos. Ya tendremos tiempo de cambiarla o de crear nuevos usuarios con contraseñas y permisos específicos. En cuanto a la base de datos, yo he dejado los valores que por defecto sugiere utilizar.
Para que phpMyAdmin sea reconocido por el servidor Apache tendremos que editar el siguiente fichero:
sudo nano /etc/apache2/apache2.conf
Nos iremos al final del fichero y añadiremos la siguiente línea:
Include /etc/phpmyadmin/apache.conf
Finalmente reaarracaremos el servidor Apache:
sudo /etc/init.d/apache2 restart
y comprobaremos que phpMyAdmin es accesible desde nuestro navegador tecleando:
<IP del RaspPi>/phpmyadmin/
apareciéndonos en nuestro navegador lo siguiente:
Introduciremos el usuario (En este momento solo podemos acceder como usuario root) y la contraseña que hayamos considerado en la instalación de phpMyAdmin, redirigiéndonos a la página principal de gestión de bases de datos de MySQL:
A partir de ahora podremos gestionar MySQL de dos maneras: 1) utilizando la consola de comandos, tecleando mysql --user=root -p,  o 2) utilizando phpMyAdmin. Dependerá de lo que realmente queramos hacer para que nos decantemos para un modo u otro de gestión.
Podríamos continuar con ejemplos de cómo importar bases de datos, crear nuevos usuarios, acceder desde una aplicación JAVA que hayamos desarrollado. Pero por hoy considero suficiente lo avanzado, dejándolo para otra entrada los ejemplos que he propuesto.
Como siempre, estoy a las sugerencias de todos los lectores, que me propongan nuevos entradas o simples ampliaciones o mejoras a estas entradas existentes.

Enlaces

- LAMP (software bundle) en Wikipedia
- Software Libre y de Código Abierto, en Wikipedia
- RPi A Simple Wheezy LAMP install
- How to install LAMP on Raspberry Pi
- Raspberry Pi : Instalando LAMP y phpMyAdmin
- Turning your Raspberry Pi into a personal web server
- A vueltas con LAMP
- Fing - Network Tools (en play store)
- Apache HTTP Server
- MySQL
- phpMyAdmin
- Tutorial – Install PhpMyAdmin on your Raspberry Pi
- lsusb