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
- Raspberry Pi avec distribution raspbian
- Ordinateur avec accès distant ou Ecran+clavier+souris
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