Progetto #9 – Lighttpd su Raspberry PI con PHP 7 e MySQL

Quest’oggi vi illustrerò come installare e configurare il web server Lighttpd su Raspberry PI, con la possibilità di sfruttare PHP 7, invece di PHP 5, che garantirà un’ulteriore velocità. Infatti Lighttpd risulta essere uno dei più famosi software per realizzare server web leggeri.

Occorrente:

  1. Raspberry PI (consiglio il modello B da 512 MB di RAM, comunque sia attualmente lo sto facendo su un Raspberry PI 2 Modello B che vanta un processore ARM quad-core da 900 MHz e 1 GB di RAM);
  2. Scheda SD o micro-SD (a seconda del modello di Raspberry PI che possedete) abbastanza capiente (io ne utilizzerò una da 32 GB, acquistata su Amazon per 16 €);
  3. Adattatore WI-FI o cavo ethernet per collegare il Raspberry PI sulla rete;
  4. Il software Lighttpd (che ci permetterà di realizzare il server http);
  5. Raspbian (la distribuzione Linux ufficiale per Raspberry PI, in questo tutorial userò Raspbian Jessie).

Innanzitutto effettuiamo il login (se non lo abbiamo già fatto). Quindi o come utente pi che è quello di default su Raspbian, oppure come root. Una volta fatto ciò bisognerà aggiornare il gestore dei pacchetti disponibili per Raspbian, tramite il comando (come utente pi):

sudo apt-get update

Oppure senza “sudo” come utente root. Da qui in poi eviterò di dirvi di togliere o aggiungere “sudo” prima del comando.

Una volta impartito il comando, si passerà all’installazione vera e propria con:

sudo apt-get install lighttpd

Al termine, andremo ad installare PHP 7. Per farlo, sarà necessario aggiungere un repository esterno, deb.sury.org, che offre i pacchetti di PHP 7 compilati per armhf, quindi compatibili con Raspberry PI, fattibile con i seguenti comandi:

apt-get install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt-get update

Dopodiché installare i pacchetti veri e propri:

apt-get install php7.0-cgi php7.0-curl php7.0-gd php7.0-json php7.0-mcrypt php7.0-mysql php7.0-opcache

Ora bisognerà passare a configurare lighttpd, abilitando le opportune estensioni per poter sfruttare PHP:

sudo lighttpd-enable-mod

Vi verrà richiesto di digitare il nome del modulo da abilitare. Nel nostro caso fastcgi-php, quindi digiteremo:

fastcgi-php

E premeremo invio, ripetendo la stessa operazione per ogni modulo che desideriamo caricare, come ad esempio simple-vhost, un modulo che ci permette di creare dei vhost, un po’ come su Apache2.

Una volta caricati i moduli desiderati, passeremo alla configurazione più dettagliata del web server, modificando il relativo file:

sudo nano /etc/lighttpd/lighttpd.conf

Ciò che dovrete fare sarà semplicemente rimuovere il cancelletto (#) dai vari moduli da caricare, come ad esempio mod_rewrite, alla fine dovreste ottenere un file simile a questo:

# lighttpd - file di configurazione - Risposte Informatiche - https://www.risposteinformatiche.it
server.modules = (
        "mod_access",
        "mod_alias",
        "mod_compress",
        "mod_redirect",
        "mod_rewrite",
)

server.document-root        = "/var/www/html"
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log"
server.pid-file             = "/var/run/lighttpd.pid"
server.username             = "www-data"
server.groupname            = "www-data"
server.port                 = 80

index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny             = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

compress.cache-dir          = "/var/cache/lighttpd/compress/"
compress.filetype           = ( "application/javascript", "text/css", "text/html", "text/plain" )

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
# con questo blocco del file di configurazione è possibile mettere il webserver in ascolto su una porta aggiuntiva (8080 ad esempio)
$SERVER["socket"] == ":8080" {
        # percorso del sito web
        server.document-root = "/var/www/il-mio-sito"
        # percorso del file di log degli errori
        server.errorlog = "/var/log/lighttpd/il-mio-sito.it.error.log"
        # percorso del file di log degli accessi
        accesslog.filename = "/var/log/lighttpd/il-mio-sito.it.access.log"
        # questo parametro specifica chi gestisce gli errori 404 ecc., va decommentato se si utilizza WordPress
        # server.error-handler-404 = "/index.php"
}

Per gestire il vhost invece si tratterà solo di modificare il file:

sudo nano /etc/lighttpd/conf-enabled/10-simple-vhost.conf

Modificando il dominio di default con il vostro.
Dopodiché si tratterà solo di riavviare lighttpd con il comando:

sudo service lighttpd restart

Dovreste aver notato che ho inserito anche il pacchetto php7-opcache. Quest’ultimo dovrebbe migliorare ulteriormente la velocità di PHP 7. Per il resto, se avete la necessità di installare MySQL, basterà utilizzare il comando:

sudo apt-get install mysql-server mysql-client

E con questo avrete configurato correttamente un LAMP completo e veloce, che potrete provare digitando nella barra degli indirizzi del vostro browser l’IP del Raspberry PI, esempio: http://192.168.1.100.