Web Server con Raspberry

Utilizzare Raspberry Pi zero 2 come web server 

 

Di cosa hai bisogno:

  • Raspberry PI zero 2
  • Alimentatore 5V per Raspberry (2A)
  • Micro SD (16 GB)

Dopo aver installato l'OS Lite sulla micro SD, è necessario impostare il Raspberry con indirizzo IP statico e quello del gateway che corrisponde all'indirizzo del modem, ciò ci permetterà di accedere dall'esterno; tali configurazioni, devono essere fatte nel file dhcpcd.conf che si trova nella directory etc editando il seguente comando:

pi@raspberrypi: sudo nano /etc/dhcpcd.conf

 ESCAPE='HTML'

Scorrere lo script ed eliminare i commenti sulle righe che riguardano l'indirizzo IP statico:

pi@raspberrypi: static ip_address=192.xxx.xxx.xxx (indirizzo IP che desiderate associare al Raspberry)

pi@raspberrypi: static routers=192.xxx.xxx.xxx (indirizzo IP del modem)

pi@raspberrypi: static domain_name_servers=192.xxx.xxx.xxx (indirizzo IP del modem, uguale allo static routers)

 ESCAPE='HTML'

Fatto questo, salvate e riavviate il Raspberry con il comando:

pi@raspberrypi: sudo reboot

A questo punto, prima di procedere con l'installazione di Apache, dell'interprete PHP e del MySQL, assicuriamoci di aggiornare del sistema con i soliti comandi:

pi@raspberrypi: sudo apt update

pi@raspberrypi: sudo apt upgrade

Attendere che il tutto venga aggiornato; ci potrebbe impiegare alcuni minuti.

 

INSTALLAZIONE APACHE

Molto semplicemente per installare l'Apache, dare il comando seguente:

pi@raspberrypi: sudo apt install apache2

Il pacchetto Apache, ci serve per trasformare il nostro dispositivo Raspberry in un web server al fine di poter realizzare pagine web e di gestire le richieste che provengono dagli utenti. 

Dopo l'istallazione, abilitiamo Apache con i seguenti comandi:

pi@raspberrypi: sudo chown -R pi:www-data var/www/html

pi@raspberrypi: sudo chmod -R 770 /var/www/html

All'interno della directory /var/www/html, verranno inserite le nostre pagine web a cui accederemo o da rete locale o dall'esterno.

Controlleremo se il tutto funziona dopo aver installato l'interprete PHP.

 

INSTALLAZIONE PHP

Per installare il PHP digitiamo il seguente comando:

pi@raspberrypi: sudo apt install php php-mbstring

A questo punto possimo verificare se il tutto funziona creando uno script php e lo chiameremo index.php, quindi cancelleremo il file index.html presente nel percorso /var/www/html e lo sostituiremo con index.php:

pi@raspberrypi: sudo nano index.php

all'interno del file inseriamo:

<?php

echo "My Server";

?>

Salvare il tutto con "Ctrl + X", confermiamo con "Y" + "Invio".

 ESCAPE='HTML'

Verifica del funzionamento

Ora possiamo verificare che tutto il lavoro fatto fino ad ora sia andato a buon fine, per fare cio' basta semplicemente aprire un browser da un PC collegato alla stessa rete wifi dov'è collegato lo stesso Raspberry, quello che state usando con il Putty va benissimo, digitate l'IP del Rasp nella riga degli indirizzi del browser e se tutto funziona dovrebbe apparire a schemo la stringa My Server che ci restituisce il comando echo inserito nel file index.php che abbiamo appena fatto.

 ESCAPE='HTML'

INSTALLAZIONE DI MySQL

Eseguiamo il seguente comando:

pi@raspberrypi: sudo apt install mariadb-server php-mysql

A questo punto ci collegheremo al mysql per creare un nuovo utente root con una nostra password al fine di rendere il database disponibile dai futuri nostri scripts php:

pi@raspberrypi: sudo mysql --user=root

Stabilita la connessione con MySQL, è necessario digitare le seguenti righe di comando per creare il nuovo utente root cambiando la password con quella desiderata:

DROP USER 'root'@'localhost';

CREATE USER 'root'@'localhost' IDENTIFIED BY 'vostra password';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

Fatto questo uscire con il comando exit

N.B. In questo modo, possiamo avere accesso al DB solo in locale, cioè possiamo creare, cancellare, modificare tabelle del DB e quant'altro solo se il programma che lo gestisce gira sullo stesso dispositivo in cui è presente il DB, nel nostro caso il RaspBerry. Per questo si utilizza il linguaggio PHP perchè esegue le istruzioni in locale anche se richieste dall'esterno. Tuttavia è possibile gestire il DB dall'esteno senza richiamare script in php che risiedono nel dispositivo stesso, creando un altro accesso diverso da 'root'@'localhost' che possiamo chiamare come vogliamo purchè al posto di localhost inseriamo '%'; spiegerò meglio quanto descritto nella pagina Python & MySQL.

 Ora per poter gestire il data base in maniera pratica e non da linee di comando, installeremo il PHPMyAdmin al fine di realizzare le vostre tabelle in maniera visuale.

 

INSTALLAZIONE DI PHPMyAdmin

Digitiamo il seguente comando per l'installazione di PHPMyAdmin:

pi@raspberrypi: sudo apt install phpmyadmin

Ora sposteremo la directory phpmyadmin sotto la dir /var/www/html con il seguente comando:

pi@raspberrypi: sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

Ora proviamo se tutto è andato a buon fine, digitando nel browser l'IP del RaspBerry + "/phpmyadmin"

Se abbiamo eseguito tutto correttamente dovrebbe apparire l'immagine seguente:

 

 ESCAPE='HTML'

 

Inserire utente e password (root e Vosta Password)  per poter accedere alla pagina di gestione del data base MySQL:

 

 ESCAPE='HTML'

 

Bene, ora siete in  possesso di un Web server completo di data base sul vostro Raspberry pi zero 2; potete utilizzare php, html, e python per realizzare pagine web al fine di interagire con dispositivi WiFi IoT di Vostra realizzazione ad esempio con il noto ESP8266 o ESP32.

Ma questo è sufficente a gestire il tutto su una rete locale wifi, per gestire il nostro Web server dall'esteno, è necessario conoscere l'indirizzo IP pubblico del Vostro modem, che non è detto che rimanga lo stesso a tempo indeterminato anzi viene modificato dal gestore della linea telefonica o ad ogni riavvio del modem a causa di blackout sulla rete elettrica.

Per ovviare a questo inconveniente, avete due possibilità:

- Richiedere un indirizzo IP statico al Vostro gestore, ciò però comporterà un incremento di prezzo

- Utilizzare un host DDNS che reindirizza il Vostro nome host all'IP dinamico a Voi associato in quel momento (es. NO-IP  oppure DynDDNS)

Però portebbe esserci una terza soluzione molto più semplice; se siete fortunati, molto probabilmente siete in possesso di un Modem che mette a disposizione un server al fine di gestire l'accesso da remoto esteno per poter modificare le impostazioni dello stesso.

Molte marche di Modem presenti sul mercato mettono a disposizione gratuitamente questo servizio pervio registrazione del prodotto, io posseggo un Fritz Box 7530.

Di seguito potete osservare li raspberry presente nella rete wifi locale:

 

 ESCAPE='HTML'

 

Se avete registrato il prodotto, nel menù Internet -> Abilitazioni nella scheda Servizi Fritz!Box, trovate l'host name per poter accedere dall'esterno, di solito è un codice con una serie di lettere.myfritz.net :

 

 ESCAPE='HTML'

Ora un'altro piccolo passaggio e saremo pronti; nella scheda  Abilitazioni porte, dobbiamo inserire l'indirizzo IP del Raspberry, come di seguito:

 ESCAPE='HTML'

A questo punto se digitate l'host fornito da FritzBox nella barra degli indirizzi del browser, anche da un telefonino che non è connesso alla rete locale, potrete accedere al Vostro web server.

BENE questo è tutto, spero che la procedura sia stata utile e se avete un Modem di un'altra marca, potete verificare su Internet se è predisposto a questo tipo di servizio.