Icono del sitio AranaCorp

Configuración de un servidor Apache2 en Raspberry Pi

0
(0)

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

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

Sources

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Salir de la versión móvil