Come installare un server web su Raspberry Pi (Apache + PHP + MySQL)

Dopo aver avviato per la prima volta il tuo Raspberry Pi, e terminata la fase di prima installazione del sistema operativo, hai tutto il necessario e, quindi, sei pronto per installare un server web su Raspberry Pi.

PerchƩ un Raspberry Pi come server web?

Innanzitutto, cā€™ĆØ una domanda che ci viene spontanea ma che al tempo stesso esige una risposta: ā€œperchĆ© utilizzare un Raspberry come server web, invece di utilizzare fornitori di servizi specializzati in web hosting?ā€

Diciamo che, da un punto di vista puramente economico, dovresti sapere che i servizi di web hosting non essendo gratuiti, hanno un costo, che varia da provider a provider e che comunque ti vincolano a pagare, una quota fissa ogni mese o annualmente per la gestione di tutti i servizi correlati al tuo dominio. 

Questa quota puĆ² variare da qualche decina di euro allā€™anno a qualche centinaio di euro allā€™anno per la gestione di un dominio senza molte pretese.

A differenza del Raspberry che, avendo bisogno solo di una connessione a internet, ti mette nelle condizioni di modificare i tuoi servizi come desideri ad esempio: la dimensione del disco, l’hosting del Database, ecc., cosa che, generalmente, un provider di servizi web, non concede al proprietario del dominio ospitato.

ƈ opportuno precisare che, tutti i provider di servizi web, hanno un servizio gratuito di helpdesk che mettono a disposizione degli utenti per le piĆ¹ disparate esigenze che man mano gli vengono esposte. Tra queste anche la configurazione di tutti gli aspetti riguardanti il tuo dominio.
Ma torniamo alla configurazione del nostro ā€œSingle Board Computerā€ cosƬ come viene chiamato in gergo tecnico il nostro Raspberry.

ƈ opportune precisare che per supportare la multiutenza, funzionalitƠ richiesta per un server web, dovresti utilizzare almeno un Raspberry Pi 4, con almeno 4 GB di RAM).

La domanda che ora potrebbe sorgerti ĆØ: come creare un server web su Raspeberry Pi? CioĆØ come faccio a installare un server web su Raspbian?


Leggi anche: come installare windows 10 su Raspberry Pi 4 e Pi 3


Cosa ĆØ Apache?

Per prima cosa installeremo Apache, Apache ĆØ un server web opensource.
Quando parliamo di un web server, spesso si pensa alla macchina o comunque a un hardware dalle caratteristiche particolari, ma questo termine si riferisce anche al software che permette alla macchina di analizzare le richieste dell’utente (in formato http), e di restituire il file corrispondente alla richiesta o un errore se il file non viene trovato o la query formulata in modo errato.

Al momento Apache risulta essere il server web piĆ¹ utilizzato dalla maggior parte dei provider, con una quota di mercato superior al 60%. 

Apache, inoltre, ha una propria licenza, utilizzata da molti altri progetti open source. Inoltre, l’uso massiccio di Apache, diventato ormai lo standard per i server web, insieme alla sua altissima popolaritĆ , mette ogni sviluppatore web nelle condizioni di reperire documentazione, corsi e altri libri che si occupano del suo utilizzo e della sua sicurezza, spesso necessary allo sviluppo web e alla configurazione e gestione.

Sia per Raspberry Pi, sia per una macchina piĆ¹ generic come potrebbe essere anche un comunissimo pc, Apache ĆØ senzā€™altro una scelta eccellente, e le competenze che sarai in grado di acquisire sull’argomento ti saranno sempre utili.

Installazione di Apache

Prima di installare il server web, assicurati di avere una macchina aggiornata. Per fare questo dobbiamo possedere i diritti di amministrazione, questo perchĆØ abbiamo la necessitĆ  di lanciare comandi con il prefisso sudo.

sudo apt update
sudo apt upgrade
sudo apt update

Una volta aggiornato il Raspberry Pi, installeremo il server Apache con questo comando.

sudo apt install apache2

ƈ necessario quindi dare i diritti amministrativi a tutti i file di configurazione di Apache, questa operazione ti permetterĆ  di gestire facilmente tutti i tuoi siti. A tale scopo, esegui i seguenti comandi:

sudo chown -R pi: www-data /var/www/html/
sudo chmod -R 770 /var/www/html/

Controlla se Apache web server funziona

Una volta completata l’installazione, possiamo verificare che Apache funzioni correttamente.

Per fare ciĆ² ĆØ necessario provare ad accedere al Raspberry dalla porta 80, questa porta non essendo aperta verso l’esterno, dovrai fare questa operazione direttamente dal Raspberry stesso. 

Questo non ti deve preoccupare, in quanto lā€™operazione ĆØ molto semplice. Basta aprire il browser web installato su Raspberry e digitare, nella barra degli indirizzi il seguente indirizzo: “http://127.0.0.1”

A questo punto, dovresti ottenere una pagina con un messaggio indicante il corretto funzionamento del server web.

Se non hai a disposizione una interfaccia grafica sul tuo Raspbian, puoi usare SSH per connetterti al tuo Raspberry, tramite il seguente comando:

wget -O check_apache.html http://127.0.0.1

Questo comando salverĆ  il codice HTML della pagina nel file ā€œcheck_apache.htmlā€ nella directory corrente. A questo punto, devi solo leggere il file, prodotto, con il comando:

cat ./check_apache.html

Dalla lettura e visualizzazione di questo file, non ĆØ complicato capire se Apache funzioni correttamente o meno.

Apache, su tutti I sistemi Linux e Raspbian non fa eccezione, utilizza la directory “/var/www/html” come root del tuo server web. CiĆ² significa che quando chiami il tuo Raspberry sulla porta 80 (http), Apache cerca il file in “/var/www/html”.

Ad esempio, se chiami l’indirizzo “http://127.0.0.1/example.html”, Apache cercherĆ  il file “example.html” nella directory “/var/www/html”.
Per aggiungere nuovi file, siti, ecc., SarĆ  necessario aggiungerli a questa directory.

Ora puoi utilizzare il tuo Raspberry per creare un sito in HTML, CSS e JavaScript, ed effettuare le tue prime prove.

Tuttavia, per consentire allā€™utente di interagire con le tue pagine web, ad esempio, per dare la possibilitĆ  all’utente di registrarsi, ecc. avrai bisogno di PHP.

Installazione di PHP sul tuo Raspberry Pi, Cosa ĆØ PHP?

Prima di tutto, dovresti sapere che PHP ĆØ un linguaggio interpretato. E come molti altri tools nel mondo dello sviluppo del software, l’acronimo PHP puĆ² avere diversi significati. Infatti, quando parliamo di PHP, possiamo parlare sia del linguaggio che dell’interprete stesso dei comandi di questo fantastico linguaggio. Qui, quando parliamo di installazione di PHP, significa che installeremo l’interprete, per poter utilizzare il linguaggio.

PHP (e questa volta mi riferisco al linguaggio di programmazione) ĆØ principalmente utilizzato per rendere dinamico un sito, vale a dire che l’utente invia informazioni al server che restituisce i risultati modificati in base allā€™elaborazione di queste informazioni

Al contrario, un sito statico non si adatta alle informazioni fornite da un utente. Il suo contenuto viene salvato nel file, in fase di sviluppo, pertanto la sua elaborazione da parte del server web, fornirĆ  sempre lo stesso risultato.

PHP ĆØ gratuito e mantenuto dalla PHP Foundation, cosƬ come da Zend Enterprise e da varie altre societĆ  (va precisato che Zend ĆØ anche l’autore del famoso framework Zend PHP, ampiamente utilizzato e riconosciuto nel mondo dello “sviluppo webā€).

ƈ uno dei framework per lo sviluppo web piĆ¹ utilizzati in ambito di sviluppo di siti web interattivi, con una quota di mercato di circa il 79%.

Anche in questo caso, tutte le competenze che puoi acquisire, sul linguaggio, o sull’installazione e configurazione dell’interprete, ti saranno sempre utili in futuro. 

Quindi non posso che consigliarti di imparare il PHP, che ĆØ davvero un linguaggio meraviglioso e troppo spesso sottovalutato.

Come installare PHP

Useremo di nuovo la riga di comando. Digita questo commando, da terminale, e il gioco ĆØ fatto:

sudo apt install php php-mbstring

Controlla se PHP funziona

Per sapere se PHP funziona correttamente, non ĆØ molto complicato e il metodo ĆØ abbastanza simile a quello utilizzato per Apache.

Elimina prima il file “index.html” nella directory “/var/www/html”, con questo commando:

sudo rm /var/www/html/index.html

Adesso crea un file “index.php” in questa directory, con questa riga di comando:

echo "<? php phpinfo ();?>"> /var/www/html/index.php

Da qui, l’operazione ĆØ la stessa effettuata per Apache. Accedere alla tua pagina e dovresti avere un risultato simile a quanto raffigurato nellā€™immagine.

server web su raspberry pi

Un altro pĆ² di pazienza e abbiamo finite. A questo punto ci serve un database MySQL per il tuo server web. Vediamo come installarlo.

Che cosa ĆØ MySQL?

Ora che abbiamo installato PHP, probabilmente vorrai memorizzare le tue informazioni da utilizzare nei tuoi siti web. A tale scopo, vengono utilizzati i database.


Installeremo quindi un DBMS (Database Management System), ovvero MySQL.

MySQL ĆØ un DBMS gratuito, potente e ampiamente utilizzato, con una quota di mercato pari a circa il 56%. 

Anche in questo caso, MySQL ĆØ essenziale per lo sviluppo, tanto che, qualunque sia il linguaggio di programmazione utilizzato, devi assolutamente conoscere e imparare a gestire.

Come installare MySQL

Per fare questo, installeremo mariadb-server e php-mysql (che fungerĆ  da collegamento tra php e mysql), con questo commando:

sudo apt installa mariadb-server php-mysql

Verifica che MySQL funzioni correttamente

Per verificare il funzionamento di MySQL, questa volta useremo solo la riga di comando. Quindi, ci collegheremo semplicemente tramite il comando:

sudo mysql --user = root

Non elimineremo l’utente root mysql predefinito ma creeremo un nuovo utente root mysql, perchĆ© quello predefinito puĆ² essere utilizzato solo con l’account root di Linux e quindi non ĆØ disponibile per il server web e gli script php. Per fare ciĆ², una volta connesso a MySQL, esegui semplicemente questi comandi (sostituisci password con la password che desideri):

DROP USER 'root' @ 'localhost';
CREATE USER 'root' @ 'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *. * TO 'root' @ 'localhost' WITH GRANT OPTION;

Quindi ora hai un server web, con PHP e MySQL integrati al suo interno, e per un server web ĆØ tutto ciĆ² serve.

Da questo momento in avanti, sarai in grado di connetterti a mysql senza usare il commando amministrativo sudo, ma digitando direttamente da terminale il seguente codice:

mysql --user=root ā€“password=miaMysqlPassword

Aggiungi PHPMyAdmin

L’installazione di PHPMyAdmin non ĆØ assolutamente necessaria. In questa installazione, non ci occuperemo di alcuna impostazione di sicurezza speciale!

L’installazione di PHPMyAdmin ĆØ piuttosto semplice e veloce, dobbiamo semplicemente usare il packet manager con questo comando:

sudo apt install phpmyadmin

La web application PHPMyAdmin ti sarĆ  utile nel momento in cui dovrai gestire database e tabelle MySQL direttamente da interfaccia grafica e senza utilizzare alcuna riga di commando specifica. 

PhpMyAdmin ĆØ un tool assolutamente necessario in fase di sviluppo di siti web interattivi, capaci di leggere informazioni da banche dati.

Pertanto per accedere a questo applicativo da browser devi conoscere la password di accesso che ĆØ esattamente identica a quella impostata per MySQL.

ƈ importante ricordarti che dovresti abilitare l’estensione mysqli usando questo comando:

sudo phpenmod mysqli
sudo /etc/init.d/apache2 restart

Leggi anche: come controllare i pin GPIO, di ingresso e uscita, del Raspberry, senza utilizzare un linguaggio di programmazione


Verifica che PHPMyAdmin funzioni correttamente

Per verificare che PHPMyAdmin funzioni, proveremo semplicemente ad accedervi, utilizzando l’indirizzo IP del tuo Raspberry seguito da /phpmyadmin. Ad esempio, localmente lo sarĆ  http://127.0.0.1/phpmyadmin.

Se ricevi un errore, potrebbe essere perchĆ© PHPMyAdmin ĆØ stato installato in una directory diversa da phpmyadmin. In tal caso, prova questo commando:

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

Ora puoi accedere a PHPMyAdmin da Chromium, il browser predefinito installato su Raspbian, attraverso questo url: http://127.0.0.1/phpmyadmin

Rendere un server raggiungibile via web

Il tuo server web adesso ĆØ pronto ed ĆØ del tutto simile a quanto fornito dai vari provider web. Tuttavia, probabilmente non puoi raggiungerlo da Internet. Infatti, sarebbe necessario che il tuo modem reindirizzi le richieste al tuo Raspberry, utilizzando le porte corrette.
Per mettere in atto questi reindirizzamenti, dovresti dare unā€™occhiata a DynDNS e al port forwarding.

In questo video, ti viene fornita una rapida guida su come creare in casa un server web con il Raspberry Pi, su come sfruttarlo al massimo delle sue potenzialitĆ  e come esporlo su Internet.

Come creare un tuo proprio server web

Antonio Lamorgese

Amministratore di rete e sviluppatore. Dopo anni di esperienza nel settore, ho ideato un sistema di gestione dati MYSQL in PHP senza scrivere una sola riga di codice. Scopri di piĆ¹....