Objetivos
-
- Instalar un servidor Web en la Raspberry Pi.
- Crear una base de datos Mysql.
- Aprender a usar PHPMyAdmin.
- Crear una página para subir los datos con PHP.
- Aprender cómo se suben los datos a la tabla.
Material requerido.
![]() |
Una Raspberry Pi 3, aunque valen la 2 y la 1
|
![]() |
Una micro SD de al menos 4Gb y preferiblemente de 8Gb, 16 Gb o 32 Gb.
|
![]() |
Una fuente de alimentación externa tipo teléfono móvil con micro USB |
![]() |
Un cable HDMI |
Preparando la Raspi
Para montar un servidor en la Raspberry necesitaremos tener instalado Raspbian, una conexión a Internet y tener asignada una IP estática. Si habéis seguido los tutoriales de Prometec seguro que ya lo habéis hecho, pero si alguien que no la tiene configurada no tiene más que ir a los tutoriales que hay disponibles: https://www.prometec.net/indice-raspberry-pi/
A modo de resumen, para conectaros a Internet y tener una IP estática tenéis que editar el archivo interfaces:
sudo nano /etc/network/interfaces
Y dejarlo tal que así, pero con vuestros parámetros. En nuestro caso está conectada mediante Wifi:
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 auto wlan0 iface wlan0 inet static address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.1 wpa-ssid "Euskaltel-cs7A" wpa-psk "PX9BK7rA"
- Podéis mirar vuestos parámetros con la instrucción Route -ne.
Instalar el servidor Web
Una vez hayamos configurado la IP estática podemos empezar a instalar el sevidor Web. El tipo de servidor que vamos utilizar se denomina LAMP, que es un acrónimo de las herramientas que vamos a usar. No os asustéis si no conocéis alguna de ellas, o incluso ninguna, no nos va hacer falta profundizar mucho. De hecho yo nunca había usado Apache ni PHP
- Linux como el sistema operativo. En nuestro caso Raspbian.
- Apache como servidor web.
- MySQL para gestionar la base de datos.
- PHP como lenguaje de programación.
Lo primero que vamos a hacer es actualizar los repositorios y los programas de nuestra Raspi, si es que no lo habéis hecho antes. Tardará un ratillo…
sudo apt-get update sudo apt-get upgrade
A continuación instalaremos Apache:
sudo apt-get install apache2
Vamos a comprobar que funciona todo hasta el momento escribiendo la IP que hemos otorgado a la Raspberry, en nuestro caso es 192.168.0.100. Deberíais ver una página como esta:

Ahora que sabemos que estamos en el buen camino vamos a instalar PHP, un lenguaje de programación diseñado para crear sitios web dinámicos:
sudo apt-get install php7.0 libapache2-mod-php7.0
Cuando termine reiniciamos la Raspi:
sudo reboot
Cuando vuelva a arrancar, vamos a comprobar que efectivamente funciona correctamente PHP creando este archivo:
sudo nano /var/www/html/info.php
Tenemos que dejarlo así:
<?php phpinfo(); ?>
Volvemos a abrir el navegador e introducimos la IP de la raspberry seguido de /info.php.
Instalación y configuración de MySQL y PHPMyAdmin
En este punto vamos a instala MySQL, un sistema de gestión de bases de datos muy potente. Durante la instalación os pedirá una contraseña, aseguraros de recordarla. Cuando termine reiniciamos de nuevo la Raspberry.
sudo apt-get install mysql-server mysql-client php5-mysql
Una vez hayamos arrancado de nuevo vamos a instalar PHPMyAdmin. Esta herramienta escrita en PHP nos permite manejar la administración de MySQL a través de Internet de una forma relativamente sencilla.
sudo apt-get install php5-mysql phpmyadmin
Durante la instalación nos preguntará qué tipo de servidor estamos usando. Como ya imaginaréis marcaremos Apache. A continuación le diremos que sí queremos configurar una base de datos y nos pedirá que introduzcamos la contraseña que pusimos al instalar MySQL. Además tendremos que elegir una contraseña para acceder a PHPMyAdmin. Nuestro consejo es que pongáis la misma a todo y os dejéis de líos.
Cuando haya terminado el proceso tenemos que editar el siguiente fichero para añadir al final del mismo Include /etc/phpmyadmin/apache.conf
sudo nano /etc/apache2/apache2.conf

Si todo ha ido bien y escribís en el navegador la dirección IP de la Raspi seguida de /phpmyadmin veréis una pantalla en la que os pedirá las credenciales. El usuario es root y la contraseña la que hayáis elegido. En caso de que no os funcione, reiniciad la Raspberry,

Ahora vamos a crear una base de datos. Para ello pulsamos donde pone «Nueva». En la siguiente pantalla pondremos el nombre que elijamos, como nosotros la vamos a usar para subir los datos de un sensor de temperatura DHT11 (ya veremos en otra sesión como hacerlo) le llamaremos de esa de esa forma. En cotejamiento seleccionamos «utf8_general_ci» y pulsamos «Crear».

Si ahora seleccionamos en el menú desplegable de la izquierda la base de datos que hemos creado nos dará la opción de crear una tabla. Nosotros vamos a crear una tabla llamada valores y que tendrá 4 campos.

Los 4 campos serán:
- ID: identificador del registro. Será la clave primaria y marcaremos la casilla de auto incremento.
- Tiempo: este campo almacenará la fecha y la hora en que se ha tomado la muestra. El tipo sera TIMESTAMP y su valor por defecto CURRENT_TIMESTAMP.
- Temperatura: en este campo se almacenará el valor de la temperatura del sensor. Será de tipo INT.
- Humedad: este campo almacenará el valor de la humedad del sensor. Será de tipo INT.

Crear la página para subir valores a la base de datos
Para poder subir datos al servidor tenemos que crear una página con PHP. Para ello necesitamos crear dos archivos. Al primero de ellos lo llamaremos config.php y tendrá la la información necesaria para establecer la conexión con la base de datos que hemos creado. El segundo , dht11.php, es la página que usaremos para subir los datos. Los creamos y los editamos para dejarlo como estos, pero cambiando Prometec por la contraseña que hayáis elegido.
sudo nano /var/www/html/config.php sudo nano /var/www/html/dht11.php
<?php // config.php // Credenciales $dbhost = "localhost"; $dbuser = "root"; $dbpass = "Prometec"; $dbname = "DHT11"; //Conexion con la base de datos $con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); ?>
<?php // dht11.php //Importamos la configuracion require("config.php"); // Leemos los valores que nos llegan por GET $Temperatura = mysqli_real_escape_string($con, $_GET['Temperatura']); $Humedad = mysqli_real_escape_string($con, $_GET['Humedad']); // EInsertamos los valores en la tabla $query = "INSERT INTO Valores(Temperatura, Humedad) VALUES('$Temperatura','$Humedad')"; // Ejecutamos la instruccion mysqli_query($con, $query); mysqli_close($con); echo "Pagina para subir los datos<br />"; echo "<br />Temperatura = $Temperatura ºC<br />"; echo "<br />Humedad = $Humedad %<br />"; ?>
Y ahora sólo nos queda probar que funciona. Para ello vamos a subir un par de datos de temperatura y humedad a mano desde el navegador, por ejemplo 25ºC y 50% de humedad. La forma de hacerlo es poniendo la IP de la Raspberry, seguido de /dht11.php?Temperatura=25&Humedad=50
Si todo ha va como debería, veréis una página como esta:

Y por supuesto estos datos deberían reflejarse en la tabla «Valores» que hemos creado dentro de la base de datos «DHT11». Para comprobarlo abrimos PHPMyAdmin y en el menú desplegable de la izquierda abrimos «DHT11» y seleccionamos «Valores». Veréis como tendremos nuestros primeros datos en la tabla, que son ,ni más ni menos, los que hemos subido nosotros hace un momentillo.

Resumen de la sesión
En esta sesión hemos aprendido varias cosas importantes:
-
- Hemos montado un servidor en la Raspberry usando Apache.
- Instalamos PHP para poder crear contenido dinámico.
- Creamos una base de datos usando MySQL.
- Instalamos PHPMyAdmin para poder administrar la base de datos desde Internet de forma sencilla.
- Creamos una base de datos nueva y una tabla para subir valores.
- Hemos creado una página usando PHP para subir los valores a la tabla.
Buenas;
Al instalar el mysql no me pide password y luego es imposible entrar.
Alguna idea de como solucionarlo?
Un saludo.
Mira a ver si desde ususarios, dentro de phpmyadmin, puedes cambiar los privilegios.
Hola que tal buenas saludos, tengo una consulta no puedo crear una base de datos no encuentro la opcion nueva en la columna izquierda y en la parte central debajo de base de datos me dice que no tengo privilegios como puedo solucionar esto
Hola Miguel, todas las preguntas son importantes. El cable HDMI es para conectarla a una tele o monitor, y el de corriente para poder alimentarlo.
Hola, soy nuevo en utilizar Raspberry y tengo una duda que tal vez sea muy básica. ¿Para qué utilizamos los cables HDMI y el de toma de corriente?
pero eso es otro programa porfa me lo puedes decir en resumen
no lo entiendo me lo podrias explicar
efectivamente yo puse sudo apt-get install libapache2-mod-auth-mysql php7.0-mysql phpmyadmin igual que en el otro cambie php5 por php7.0 y me funciono
Hola Pau,
Hoy ehe seguido este tutorial y me daba el mismo error que tu, la solucion es cambiar el usuario, en vez de root prueba con ‘phpmyadmin’
Un saludo
Hola! Muchísimas gracias por el aporte, actualizaremos la sesión lo antes posible.
He estado siguiendo todos los pasos con una raspberry pi 3 modelo B hasta esta pagina y solo he tenido hasta ahora 2 problemas:
1. configurando la IP estatica,
que no me ha funcionado en la carpeta network, deben haber actualizado porque alli redireccionan a /etc/dhcpcd.conf y alli hay que meterle estas 4 lineas (en mi caso uso cable y no wifi por eso pongo eth0):
interface eth0
static ip_address=192.168.0.200/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
2. Instalando PHP
sudo apt-get install php5 libapache2-mod-php5
esto me ha dado el siguiente error:
———————————————————————————————————
pi@raspberrypi:~ $ sudo apt-get install php5 libapache2-mod-php5
Reading package lists… Done
Building dependency tree
Reading state information… Done
Package php5 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
Package libapache2-mod-php5 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
———————————————————————————————————
y como es un paso esencial aqui me he quedado atascado pero buscando y buscando he dado con una pagina inglesa en la que alguien decia que hay que sustituir PHP5 por PHP7.0 y era solo eso, me ha funcionado perfecto el info.php por lo que os dejo la linea que he usado:
sudo apt-get install php7.0 libapache2-mod-php7.0
Gracias por los tutoriales, muy bien explicados y muy entretenida la historia asociada, se hace mas ameno todo.
!Gracias! Seguido el tutorial hasta el final y funcionando perfecto.
Hola Pau en el comentario justo de arriba del tuyo tienes un enlace que puede ayudarte. Un saludo.
ya hace más de un mes y no he tenido ninguna otra respuesta, no se si es porque se ha olvidado o porque no encuentra ninguna solucion. Alguien me puede ayudar??
Gracias por el aporte Óscar. un saludo.
Tuve el mismo problema, lo solucioné creando otro usuario con todos los privilegios. dejo la descripción acá
MySQL 5.7 changed the secure model: now MySQL root login requires a sudo (while the password still can be blank).
I.e., phpMyAdmin will be not able to use root credentials.
The simplest (and safest) solution will be create a new user and grant required privileges.
1. Connect to mysql
sudo mysql –user=root mysql
2. Create a user for phpMyAdmin
Run the following commands (replacing some_pass by the desired password):
CREATE USER usuario@localhost IDENTIFIED BY ‘some_pass’;
GRANT ALL PRIVILEGES ON *.* TO usuario@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
Tendremos qe actualizar el nuestro entonces.
Seguí este tutorial y me funcionó https://www.linuxbabe.com/debian/install-lamp-stack-debian-9-stretch
La verdad es qwue se hace una tarea difícil ya que tenemos ya mas de 200 tutoriales… pero intentaremos hacerlo poco a poco. Un saludo y gracias.
Disculpa, de pronto puedes ayudarnos con una referencia de tutorial, que ayudo para hacer el servidor web, con raspbian streth, por favor.