fbpixel
Etiquetas:
0
(0)

O Raspberry Pi pode ser facilmente ligado a uma rede Wifi, por isso pode ser uma boa ideia criar um servidor Apache2 para criar uma interface web para gerir o seu Raspberry Pi. Um servidor web permite-lhe enviar e receber comandos web, desenvolver um site local ou global ou criar uma interface web para configurar ou controlar o seu Raspberry Pi remotamente a partir de um computador ou smartphone.

Neste tutorial, veremos como configurar um servidor Web Apache2 no Raspberry Pi e como criar uma interface HTML acessível localmente.

Hardware

Recuperar o endereço IP e o nome do anfitrião do Raspberry Pi

Quando se trabalha num sistema de rede, é importante conhecer o identificador dos dispositivos que se está a utilizar. No caso de um servidor Apache2, precisamos do endereço IP e do nome do anfitrião.

Para obter o endereço IP, introduza o comando:

ifconfig

O endereço IP (inet) está localizado em wlan0 se o Raspberry Pi estiver ligado à rede através de Wifi e em eth0 se estiver ligado por cabo. Aqui o endereço IP é 192.168.1.9

Para obter o nome do anfitrião, introduza o seguinte comando num terminal:

hostname

Por predefinição, o Raspberry Pi devolve “raspberrypi”. Pode alterar esta definição no assistente de configuração raspi-config.

Nota: Recomendamos vivamente que altere o nome do anfitrião se estiver a utilizar vários Raspberry Pi na mesma rede.

Instalar o Apache2

Para instalar o pacote Apache, basta introduzir o seguinte comando num terminal

sudo apt-get install apache2 -y

N.B: a opção -y aceita automaticamente a instalação.

Para desinstalar o pacote, introduza o comando

sudo apt-get remove apache2 --purge

Nesta fase, pode verificar se o Apache está ativado introduzindo o seguinte na barra de tarefas de um navegador

raspberrypi.local

ou

192.168.1.9

Nota: actualize com o nome de anfitrião e o endereço IP correspondentes ao seu dispositivo. Se o endereço .local não funcionar, é necessário instalar e ativar o serviço avahi.

sudo apt-get install avahi-daemon

Alteração dos direitos

Antes de continuar, é necessário dar ao servidor e a si próprio direitos de acesso de leitura e escrita. Poderemos então modificar os ficheiros sem ter de passar pelo superutilizador root.

Primeiro, adicionamos o utilizador ao grupo www-data (o grupo predefinido do Apache)

sudo usermod -a -G www-data pi

De seguida, atribuímos a propriedade da pasta ao grupo www-data

sudo chown -R -f www-data:www-data /var/www/html

Resultado com ls -l para ver os direitos de acesso

pi@raspberrypi:~ $ ls -l /var/www/
total 4
drwxr-xr-x 2 www-data www-data 4096 mai   16 17:33 html

Finalmente, introduza esta linha de código para criar e modificar ficheiros facilmente

sudo chmod -R 775 /var/www/html/

Instalar o PHP

Para tornar a página Web dinâmica, é necessário utilizar o interpretador PHP

Para instalar os pacotes necessários para usar o PHP, digite o seguinte comando

sudo apt-get install php7.3 php7.3-mbstring php7.3-mysql php7.3-curl php7.3-gd php7.3-zip -y

N.B: a versão 7.3 é a última versão disponível no repositório Raspbian. Você pode instalar versões mais recentes do php compilando os fontes você mesmo.

Se o PHP não funcionar. Pode tentar estas duas linhas de código.

sudo a2dismod mpm_event
sudo a2enmod php7.3
sudo systemctl restart apache2

O primeiro desactiva o mpm_event, que entra em conflito com o mpm_prefork, e o segundo ativa o php, que depende do mpm_prefork.

Criar uma página Web

Para testar a instalação, vamos criar uma página Web simples que apresenta algumas informações sobre o Raspberry Pi. Para o fazer, vamos executar comandos shell utilizando PHP e a função 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

Introduzindo o URL raspberry.local

Resolução de problemas comuns

Se o Apache2 tiver problemas para reiniciar

verificar se o Nginx não está a ser executado ao mesmo tempo

sudo systemctl stop nginx

Também pode desinstalá-lo se não precisar dele

sudo apt-get purge nginx

Se os comandos do Linux não forem iniciados pelo PHP

como o vcgencmd, pode adicionar www-data ao grupo de vídeo e depois reiniciar

sudo usermod -G video www-data

Sources

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?