Raspberry Pi

Un server web con NGINX e PHP su RPi

Nel seguente articolo vedremo come utilizzare Raspberry Pi per la gestione di richieste via http di pagine web html tramite un browser, nonché interpretare il codice php di applicazioni web e pagine dinamiche.

NGINX

NGINX (pronuncia engine x) è un’applicazione web server molto leggera in termini di risorse richieste, quindi ideale per essere installata su RPi.

Installazione

Il modo più semplice per installare NGINX nella versione open source, è utilizzare il pacchetto disponibile sul repository di Raspbian, sebbene generalmente non aggiornato all’ultima release.

  • Aggiornare il packet manager con lo stato del repository
sudo apt-get update
  • Scaricare ed installare nginx
sudo apt-get install nginx
  • Verificare l’installazione e leggere la versione
sudo nginx -v

A questo punto il web server verrà caricato automaticamente all’avvio. La cartella di default dove sono ubicate le pagine html di nginx è /var/www/html su Raspbian.

Testare il web server

Da un PC collegato in rete locale, aprire il browser e nella barra di navigazione digitare l’indirizzo IP del Raspberry. Dovrebbe aprirsi la pagina di test di nginx.

Web server – nginx pagina benvenuto

PHP

PHP (Hypertext Preprocessor) è un linguaggio di scripting molto utilizzato per la programmazione di pagine dinamiche e lo sviluppo di applicazioni web interpretate lato server.

Installazione

NGINX richiede PHP in implementazione FPM (Fast-CGI Process Manager), disponibile direttamente sul repository Raspbian. La versione attualmente disponibile è la 7.3.

  • Scaricare ed installare php
sudo apt-get install php7.3-fpm
  • Editare il file di configurazione di nginx per abilitare le pagine php
cd /etc/nginx
sudo nano sites-enabled/default

Trovare la linea index ed aggiungere index.php come prima voce

index index.php index.html index.htm;

Continuare a scorrere il file fino alla sezione relativa al PHP, togliere il simbolo di commento # in modo che risulti grossomodo così

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}

Salvare con Ctrl+O e chiudere il file con Ctrl+X.

  • Ricaricare il web server
sudo /etc/init.d/nginx reload

Testare php

  • Creare un file di prova in php
cd /var/www/html/
sudo nano index.php

All’interno scrivere

<?php echo phpinfo(); ?>

Salvare con Ctrl+O e chiudere il file con Ctrl+X.

Da un PC collegato in rete locale, aprire il browser e nella barra di navigazione digitare l’indirizzo IP del Raspberry. Dovrebbe aprirsi la pagina di test di php con le informazioni sulla versione installata e la configurazione.

Web server – php pagina informazioni

Permessi

Per consentire a PHP di scrivere file nella cartella del web server è necessario fornire i permessi all’user www-data.

  • Assegnamo all’user e al gruppo www-data la proprietà della cartella /var/www/html con permesso di scrittura
sudo chown -R www-data:www-data /var/www/html
sudo chmod 775 /var/www/html
  • Aggiungiamo il nostro utente pi al gruppo www-data
sudo usermod -a -G www-data pi

In caso sia necessario mantenere maggiore sicurezza, si può decidere di assegnare i permessi di scrittura ai soli file specifici, anziché tutta la cartella.

Raggiungere il web server da internet

Se si desidera raggiungere il web server da rete internet, configurare sul proprio router l’inoltro della porta 80, protocollo TCP, verso l’indirizzo IP locale del server RPi.

Individuare il proprio indirizzo IP pubblico dal router stesso o tramite un servizio web come Mio-IP.it. Digitare sul browser di un dispositivo connesso in internet l’indirizzo appena trovato e verificare che si apra la pagina di prova vista in precedenza.

Poiché il proprio IP pubblico non è statico, ma cambia nel tempo con una certa frequenza, è utile disporre di un servizio di DNS dinamico. Ovvero una tecnologia che tiene traccia dell’indirizzo del nostro server e gli associa un nome. Ma di questo ne parleremo in un successivo articolo.

Riferimenti


Licenza Creative Commons Questa opera è distribuita con:
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia.

Si declina ogni responsabilità per eventuali errori ed omissioni e gli eventuali danni che ne dovessero conseguire. Per ulteriori informazioni consultare le note legali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *