Web server LAMP su Raspberry in pochi passi

LAMP web server

L’utilizzo di un Raspberry come web server è ormai funzionalità collaudata, stabile e veloce. Tuttavia occorrono alcuni passi per eseguire la configurazione iniziale poiché la distribuzione Linux di default (Raspbian) non ha integrata tale funzionalità.

Oggi ci occuperemo di installare un web server LAMP (Linux Apache MySql PHP) + alcuni software utili (Samba e Git) da riga di comando, accedendo da terminale in SSH al nostro Raspberry precedentemente configurato in rete.

Oltre ai pacchetti di default di Raspbian, andremo ad installare:

  • apache2 (web server)
  • mariadb-server, default-libmysqlclient-dev (database e strumenti di sviluppo)
  • php , php-xml , php-curlphp-mysql,  libapache2modphp (linguaggio di programmazione PHP)
  • samba , samba-common-bin (accesso via condivisione SMB)
  • git (version control)

Una prima e buona operazione iniziale è quella di riconfigurare ora/data e timezone del Raspberry:

sudo dpkg-reconfigure tzdata

Successivamente, procediamo con l’upgrade e con l’installazione di tutti i pacchetti necessari (il flag “-y” conferma automaticamente l’installazione):

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install apache2 mariadb-server default-libmysqlclient-dev php php-xml php-curl php-mysql libapache2-mod-php samba samba-common-bin git -y

Sistemiamo i permessi:

sudo chown www-data:www-data /var/www -R
sudo usermod -a -G www-data pi

Avviamo il server Apache (o riavviamo il Raspberry):

sudo systemctl start apache2

Apache è pronto e funzionante! Provate a digitare l’indirizzo IP del Raspberry nel browser e apparirà la schermata di benvenuto di Apache2. Funziona? Bene!

web server Apache2

Procediamo ora a garantire accesso al database MySql ai computer nella stessa LAN.

Nota: l’operazione non è obbligatoria, ma necessaria in caso volessimo usare il database sul Raspberry da altri computer in rete, ad esempio da un pc locale o attraverso altri gestori database o da script personalizzato. Se vogliamo che sia solo il Raspberry ad accedere al db, saltate i prossimi step.

Editiamo il file 50-server.cnf:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

E commentiamo la riga “bind-address” aggiungendo il cancelletto “#” in testa:

#bind-address           = 127.0.0.1

Usciamo dall’editor (CTRL+X) e salviamo.
Riavviamo il servizio MySql:

sudo systemctl restart mysql

Con questo comando accediamo alla console in riga di comando di MySql come root:

sudo mysql -u root

Inseriamo ora queste 2 query, ricordandoci il punto e virgola al termine (inserite la vostra password dell’utente “pi”, non “root”):

GRANT ALL PRIVILEGES ON *.* TO 'pi'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ora qualsiasi host in rete locale può collegarsi a MySql su Raspberry con le credenziali dell’account “pi”.

Passiamo ora a SambaLa directory di default del webserver, dove posizionare i progetti web, è /var/www/html ma non ci risulta ancora accessibile dalla rete.
Procediamo quindi a configurare la condivisione Samba (SMB) su questa cartella, editando il file /etc/samba/smb.conf.

sudo nano /etc/samba/smb.conf

E aggiungiamo le seguenti righe in coda al file, inserendo tra parentesi quadre il nome della cartella che diventerà visibile in rete (modificatelo a piacimento):

[html]
path = /var/www/html
read only = no
Comment = Apache2 default web parent folder
Browseable = yes
Writeable = Yes

Usciamo dall’editor (CTRL+X) e salviamo.
Successivamente, impostiamo una password SMB dell’account “pi”:

sudo smbpasswd -a pi

Attenzione: la password SMB dell’utente “pi” può essere diversa dalla password di sistema (per accedere via SSH ad esempio), non confondetele!

Infine, riavviamo il demone SMB per ottenere la nuova configurazione.

sudo /etc/init.d/samba restart

Fatto! Ora siete pronti per copiare i vostri progetti nella share “html” e puntare direttamente via browser a http://IP_Raspberry/progetto1

Alla prossima!

Commenti

Ancora nessun commento. Perché non inizi una discussione?

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.