La Raspberry Pi se puede conectar fácilmente a una red Wifi, por lo que puede ser una buena idea crear un servidor Apache2 para crear una interfaz web para gestionar su Raspberry Pi. Un servidor web le permite enviar y recibir comandos web, desarrollar un sitio web local o global o crear una interfaz web para configurar o controlar su Raspberry Pi de forma remota desde un ordenador o smartphone.
En este tutorial, veremos cómo configurar un servidor web Apache2 en Raspberry Pi y cómo crear una interfaz HTML accesible localmente.
Hardware
- Raspberry Pi avec distribution raspbian
- Ordinateur avec accès distant o Ecran+clavier+soris
Recuperar la dirección IP y el nombre de host de la Raspberry Pi
Cuando se trabaja en un sistema de red, es importante conocer el identificador de los dispositivos que se utilizan. En el caso de un servidor Apache2, necesitaremos la dirección IP y el nombre de host.
Para recuperar la dirección IP, introduzca el comando:
ifconfig
La dirección IP (inet) se encuentra en wlan0 si su Raspberry Pi está conectada a la red a través de Wifi y en eth0 si está conectada por cable. Aquí la dirección IP es 192.168.1.9
Para recuperar el nombre de host, introduzca el siguiente comando en un terminal:
hostname
Por defecto, la Raspberry Pi devuelve «raspberrypi». Puede cambiar esta configuración en el asistente de configuración raspi-config.
N.B: Le recomendamos encarecidamente que cambie el nombre de host si está utilizando varias Raspberry Pi en la misma red.
Instalación de Apache2
Para instalar el paquete Apache, basta con introducir el siguiente comando en un terminal
sudo apt-get install apache2 -y
Nota: la opción -y acepta automáticamente la instalación.
Para desinstalar el paquete, introduzca el comando
sudo apt-get remove apache2 --purge
En esta fase puede comprobar que Apache está activado introduciendo lo siguiente en la barra de tareas de un navegador
raspberrypi.local
o
192.168.1.9
N.B: actualiza con el nombre de host y la dirección IP correspondientes a tu dispositivo. Si la dirección .local no funciona, necesitas instalar y activar el servicio avahi.
sudo apt-get install avahi-daemon
Modificación de derechos
Antes de continuar, hay que dar al servidor y a uno mismo derechos de acceso de lectura y escritura. Así podremos modificar los archivos sin tener que pasar por el superusuario root.
En primer lugar, añadimos el usuario al grupo www-data (el grupo por defecto de Apache)
sudo usermod -a -G www-data pi
A continuación, damos la propiedad de la carpeta al grupo www-data
sudo chown -R -f www-data:www-data /var/www/html
Resultados con ls -l para ver los derechos de acceso
pi@raspberrypi:~ $ ls -l /var/www/
total 4
drwxr-xr-x 2 www-data www-data 4096 mai 16 17:33 html
Por último, introduce esta línea de código para crear y modificar archivos fácilmente
sudo chmod -R 775 /var/www/html/
Instalación de PHP
Para que su página web sea dinámica, debe utilizar el intérprete PHP
Para instalar los paquetes necesarios para utilizar PHP, introduzca el siguiente comando
sudo apt-get install php7.3 php7.3-mbstring php7.3-mysql php7.3-curl php7.3-gd php7.3-zip -y
Nota: la versión 7.3 es la última versión disponible en el repositorio de Raspbian. Puede instalar versiones más recientes de php compilando la salida usted mismo.
Si PHP no funciona. Puede probar estas dos líneas de código.
sudo a2dismod mpm_event
sudo a2enmod php7.3
sudo systemctl restart apache2
La primera desactiva mpm_event, que entra en conflicto con mpm_prefork, y la segunda activa php, que depende de mpm_prefork.
Crear una página web
Para probar la instalación, vamos a crear una página web sencilla que muestre parte de la información de la Raspberry Pi. Para ello, ejecutaremos comandos shell utilizando PHP y la función exec().
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>MyRPi Webpage</title> <style> div{ display:block; margin:auto; } label{ display: inline-block; width:80px; } input[type=text]{ width:200px; } table, th, td { border: 1px solid black; border-collapse: collapse; padding:5px; } </style> </head> <body> <div style="width:90%;margin:auto;"> <div id="icon" style="border-bottom: 3px solid #3aaa35; "> <img src="https://i0.wp.com/www.aranacorp.com/wp-content/uploads/logo-100.png"/> </div> <div> <h1>RPi Info</h1> <p><?php echo "Date ".date('Y-m-d H:i:s') ; ?></p> <table> <tr> <th>Info</th> <th>Command</th> <th>Value</th> </tr> <!-- hardware and os info --> <tr> <td>Hardware</td> <td>cat /sys/firmware/devicetree/base/model</td> <td> <?php echo shell_exec('cat /sys/firmware/devicetree/base/model'); ?> </td> </tr> <tr> <td>OS</td> <td>uname -o</td> <td> <?php echo shell_exec('uname -o'); ?> </td> </tr> <tr> <td>Architecture</td> <td>uname -m</td> <td> <?php echo shell_exec('uname -m'); ?> </td> </tr> <tr> <td>OS version</td> <td>. /etc/os-release; echo $PRETTY_NAME</td> <td> <?php echo shell_exec('. /etc/os-release; echo $PRETTY_NAME'); ?> </td> </tr> <!-- hostname info --> <tr> <td>Hostname</td> <td>hostname</td> <td> <?php echo shell_exec('hostname'); ?> </td> </tr> <tr> <td>IP Address</td> <td>hostname -I</td> <td> <?php echo shell_exec('hostname -I'); ?> </td> </tr> <!-- GPU/CPU info --> <tr> <td>GPU temperature</td> <td>vcgencmd measure_temp</td> <td> <?php $output=exec('vcgencmd measure_temp'); $output = str_replace('temp=','',$output); $output = str_replace('\'C','',$output); echo $output;?> </td> </tr> <tr> <td>ARM CPU temperature</td> <td>cat /sys/class/thermal/thermal_zone0/temp</td> <td> <?php $output=exec('cat /sys/class/thermal/thermal_zone0/temp'); echo $output/1000; ?> </td> </tr> <tr> <td>ARM Clock</td> <td>vcgencmd measure_clock arm</td> <td> <?php $output=exec('vcgencmd measure_clock arm'); echo $output; ?> </td> </tr> </table> </div> </div> </body> </html>
Resultados
Introduciendo la url raspberry.local
Résolutions des problèmes corants
Si Apache2 tiene problemas para reiniciarse
compruebe que Nginx no se está ejecutando al mismo tiempo
sudo systemctl stop nginx
También puedes desinstalarlo si no lo necesitas.
sudo apt-get purge nginx
Si los comandos de Linux no son lanzados por PHP
como vcgencmd, puedes añadir www-data al grupo video y luego reiniciar
sudo usermod -G video www-data