Ciao ragazzi!
Con quello di oggi voglio inaugurare una nuova
serie di video dedicati al fai da te. L'idea
è quella di realizzare in ogni puntata un
piccolo progettino che in qualche modo sia
stato scelto anche da voi.
Essendo questa la prima tappa, ho scelto io
la tematica ma ho selezionato proprio questo
argomento perché ciò di cui parleremo oggi
potrà essere la base di molti altri video
futuri.
All'inizio di ogni tutorial sarà presente
un sondaggio, che troverete nelle schede del
video ed apparire qui in alto, in cui vi proporrò
un paio di possibili idee per i prossimi focus.
Ma ovviamente potrete sempre suggerirne di
alternative nei commenti, sul blog, sui social,
etc... E allora sotto con i voti! =P
Vorrei che fosse una cosa collaborativa e
che serva effettivamente a qualcosa (e a più
persone possibili). Chiaramente le tematiche
spazieranno sempre nel mondo della tecnologia
e saranno legate ai dispositivi di volta in
volta in mio possesso, ma sono aperto a qualsiasi
tipo di possibilità se la reputerò
-e reputerete- valida.
Bene. Non perdiamo altro tempo e... iniziamo
questa nuova serie di tutorial!
Come saprete con il raspberry pi è possibile
fare praticamente di tutto, l'unico limite
è la nostra immaginazione. Molti degli usi
più interessanti però, secondo me, derivano
dalla possibilità di controllare da remoto
il piccoletto: è comodo poter avviare una
particolare funzione direttamente dal pi,
ma lo è ancor di più poterlo fare dal nostro
PC, tablet o smartphone che abbiamo sempre
con noi; è divertente eseguire determinati
comandi con tastiera, mouse e lo schermo connessi
alle porte del microcomputer, ma lo è ancor
di più poterli lanciare da remoto senza fili
in giro per casa... Insomma, avete capito
dove voglio andare a parare...
Per questo motivo uno dei primi passi da fare
è configurare il raspberry pi a mo' di piccolo
server domestico: per una panoramica generale,
se ancora non lo aveste visto, rimando al
video che pubblicai mesi fa sui possibili
sistemi operativi che, appunto, possono essere
utilizzati proprio per tale scopo.
Io ne ho scelto uno tra i tanti esistenti,
ma sappiate che le stesse identiche cose è
possibile farle con ognuno di essi.
OK. La distribuzione Linux che ho scelto di
utilizzare è Ubuntu Server 16.04 (trovate
il link per scaricarla e la guida per installarla
in descrizione). E l'ho selezionata per diversi
motivi: è sufficientemente stabile, è molto
rapida ad avviarsi ovviamente se utilizzerete
una microSD almeno di classe 10, non ha preinstallato
un inutile-per-i-nostri-scopi ambiente grafico
(quindi: meno risorse saranno occupate ed
avremo performance migliori). E poi perché
Ubuntu ha sui repository ufficiali tutti i
pacchetti che ci servono già belli che pronti:
le versioni presenti forse non saranno sempre
le più recenti, ma ci possiamo più che accontentare!
Inoltre, proprio l'assenza del desktop grafico
(che, volendo, si può comunque aggiungere
in ogni momento) ci spingerà ad utilizzare
il sistema, per qualsiasi operazione, da remoto
--ad esempio dal nostro PC via SSH--.
Quello che andremo a costruire, in particolare,
sarà un web server "domestico", il quale
ci permetterà di installare su di esso una
applicazione che faciliterà in seguito l'esecuzione
di comandi da remoto. Una volta sviluppato
ciò che desideriamo sul pi, basterà poi
utilizzare il browser web del nostro PC, tablet
o smartphone per controllarlo. Non dovremo
quindi preoccuparci anche di eventuali app
per i client, ma ci limiteremo solo al server
presente e in esecuzione sul raspberry pi.
Cercherò comunque di restare il più possibile sul
generico, sul semplice, e di concentrarmi
più che altro su quello che c'è dietro piuttosto
che sull'utilizzo finale. Anche perché quest'ultimo
dipenderà molto dal progetto che vorrete
realizzare.
Una volta installato il sistema operativo
come descritto nella guida che vi ho linkato
in descrizione, c'è una sequenza di operazioni
più o meno opzionali che può valer la pena
eseguire:
1) se la microSD che avete impiegato ha
una dimensione maggiore ai 4GB
allora potrete voler espandere il FS
2) se il layout della vostra tastiera non è quello statunitense allora dovrete cambiare il layout
3) se vorrete potrete configurare la
connessione Wi-Fi per far si che
il raspberry pi si colleghi al vostro router
tramite il Wi-Fi appunto
4) potrete creare un nuovo utente per 
utilizzare Ubuntu Server oppure utilizzare
quello di default (ubuntu, password ubuntu)
ma magari appunto cambiare la password
5) poi dovrete necessariamente aggiornare
i pacchetti installati
Fatto ciò, il primo passo successivo è quello di 
installare il server apache. L'installazione su Ubuntu
è davvero banale: basterà infatti richiedere
il pacchetto apache2 con il comando
, confermare ed
attendere che il gestore termini le sue operazioni.
Il secondo passo è quello di scegliere un
linguaggio di programmazione che ci permetta
di sviluppare ciò che vogliamo qui sul pi
e allo stesso tempo di poter essere richiamato
da remoto. Per semplicità e per gli scopi
di questo video, puntiamo sul PHP: non solo
questo linguaggio è facile se vorrete impararlo,
ma è anche utilizzato in tantissimi prodotti
open-source gratuiti che si possono scaricare
da Internet, e che possono essere usati come
punto di partenza per i nostri e vostri progettini.
Installare PHP è davvero semplice, al pari di apache
con la sola accortezza di installare oltre
al linguaggio stesso anche i pacchetti che
permettono ad apache di interpretarlo. Andrà
richiesta quindi la libapache2-mod-php, perché
essa non solo installerà come si intuisce
dal nome il PHP, ma porterà
con sé tutto il necessario per apache.
A questo punto potremmo anche fermarci qui
ed iniziare a giochicchiare con il nostro
web server. Il servizio apache che
dovrebbe essere già attivo,
per controllarne lo stato basterà digitare
. Come possiamo
vedere il server è su, ma nel qual caso non
lo fosse, il comando per avviarlo sarà identico
al precedente con al posto di "status" la
parola "start".
Allo stesso modo, se aveste necessità di
riavviarlo oppure fermarlo, potrete usare
i comandi "restart" e "stop".
A questo punto per verificare che la configurazione
base funzioni, basterà aprire il browser del vostro
PC/tablet/smartphone connessi ovviamente alla
stessa rete a cui è collegato il rasbperry pi
e digitare l'indirizzo IP assegnato al
pi stesso. Per sapere quale è l'indirizzo
IP attualmente in uso dal pi, basterà digitare
il comando  e, a seconda che siate
connessi in Wi-Fi o via LAN, l'IP sarà rispettivamente
quello indicato nella voce "wlan0" oppure
"eth0".
Digitato sul browser web del vostro PC, tablet o
smartphone, apparirà la pagina di benvenuto che
ci confermerà come tutto stia funzionando correttamente.
Apro una parentesi: apache è un server potentissimo,
uno dei più utilizzati dietro praticamente
ogni sito web a cui accedete quotidianamente
su internet, e per questo motivo ha una miriade
di configurazioni e possibilità d'uso. In
questo tutorial non entrerò nel merito altrimenti
non basterebbero ore di video; ma se siete
curiosi fatemelo sapere perché si potrebbe
approfondire qualcosa al riguardo...
Allo stesso modo, anche la configurazione
di PHP andrebbe effettuata punto per punto,
a seconda di cosa stiate realizzando. Ma come
per apache non entrerò nel merito perché
tra moduli, estensioni e possibilità non
si finirebbe più!
Abbiamo visto che apache risponde correttamente
digitando l'indirizzo IP del nostro raspberry pi
ma non abbiamo verificato se il PHP venga
correttamente interpretato e che quindi funzioni
a dovere...
Per verificare, dobbiamo entrare nella directory
del server in cui apache va a cercare i contenuti
che deve fornire al browser del client che
li sta richiedendo. La configurazione base
cerca tutte le risorse a partire dal percorso
, ed è proprio qui dentro
che troviamo il file "index.html" che era
quella pagina che poc'anzi ci era apparsa
sul browser del nostro PC, tablet o smartphone.
Creiamo un nuovo file all'interno di questa
cartella. Ora farò una cosa bruttissima (=P)
che non andrebbe mai fatta su un sistema
Linux: per evitare di complicare la situazione
con la gestione di utenti, permessi e così
via (tutte cose che invece dovreste necessariamente
tenere in considerazione per questioni di
sicurezza), utilizzerò direttamente i permessi
da amministratore così da non doverci preoccupare
appunto di andare a configurare gli accessi,
etc...
Con il comando  andremo
a creare un nuovo file chiamato appunto "index.php"
e automaticamente anche a modificarne il contenuto.
Per fare una prova velocissima, premiamo la
lettera I sulla tastiera, cosa che ci permette
di scrivere sul file, e digitiamo il seguente
contenuto:

Il tag di apertura "<?php" va sempre utilizzato
in PHP quando stiamo inserendo del codice
scritto in tale linguaggio, e serve per far
capire ad apache che deve interpretarlo come
tale. Il tag di chiusura, cioè "?>" non è
necessario se lo script finisce e non c'è
altro codice successivo, quindi
volendo potremmo ometterlo.
Per salvare ciò che abbiamo scritto, occorre
premere il tasto "ESC" sulla tastiera quindi
digitare ":wq", che significa salva (write)
ed esci (quit).
A questo punto possiamo tornare sui nostri
dispositivi PC, tablet o smartphone e aggiungere
dopo l'indirizzo IP il nome della risorsa
che desideriamo, cioè "/index.php". Apache
andrà a cercare in  tale risorsa,
e vedremo che ci sarà mostrato proprio il
messaggio che avevamo scritto in quel file
all'iterno delle doppie virgolette.
Ricapitolando: 1) apache risponde correttamente e
2) interpreta correttamente il PHP. Questo
significa che abbiamo creato il nostro web
server e che possiamo iniziare a pensare a
come utilizzarlo!
A questo punto voglio soffermarmi su qualche
piccola idea per sfruttare il raspberry pi
con questa configurazione minimale, e quali
possono essere i passi successivi.
Visto che stiamo parlando di web server, uno
degli utilizzi più scontati è quello di
metterci su un piccolo sito web, un blog o
qualcosa che comunque non richieda prestazioni
elevate e soprattutto non generi eccessivo traffico
di rete per non intasarvi la connessione di casa
o se non avete traffico illimitato.
Potreste pensare di utilizzare uno dei tanti
CMS o framework scaricabili gratuitamente
dal web come Drupal, Joomla o Wordpress ed
iniziare da lì, piuttosto che fare tutto
a mano da zero, cosa che è fantastica per
iniziare e soprattutto per imparare ma assolutamente
sconsigliata se cercate un minimo di affidabilità,
o se non volete diventare matti: io l'ho fatto,
per tanti anni... ma erano altri tempi...
Per installare un CMS avrete sicuramente la
necessità di installare sul sistema anche
un gestore di database sul quale memorizzare
i contenuti da mostrare a chi accede al sito
web. Per facilitare la questione, potete puntare
su mysql o mariaDB, che vanno aggiunti con
il solito comando  seguito
da "mariadb-server" o "mysql-server" a seconda
della vostra scelta.
Una volta installato uno dei due, esso deve
essere configurato e ci sono una miriade di
guide online su come farlo. C'è anche uno
script di partenza fornito direttamente nel
pacchetto di installazione che è un ottimo
inizio. Ad ogni modo, anche in questo caso
se siete interessati fatemelo sapere ché
si può approfondire la questione.
Installato il database, dovrete scaricare
il framework o CMS di vostra scelta, ad esempio
Drupal. Per far ciò da riga di comando, vi
basterà digitare il comando "wget" seguito
dalla URL sui cui si trova il prodotto.
In alternativa, per rendere le cose più semplici,
potreste utilizzare un qualsiasi client SCP
sul vostro PC, come FileZilla, che vi permetterà
di collegarvi da remoto al rasbperry pi e
di trascinare il pacchetto del CMS dal vostro
PC direttamente sul pi appunto.
Occhio ad aver impostato i permessi per accedere
alle cartelle in cui andrete a copiare i file.
Come per il nostro file "index.php", il CMS
o framework andrà presumibilmente inserito
nella directory , a meno che
non abbiate fatto altre configurazioni.
Inoltre, solitamente i prodotti vengono forniti
in archivi compressi che vanno scompattati,
a meno di non copiarli già pronti dal PC.
E ci sarà poi tutta una procedura guidata
da seguire per iniziare ad utilizzarli.
Ma questa è solo una tra le tante possibilità.
Il fatto di utilizzare il PHP e poterlo richiedere
da web vi potrà permettere di eseguire comandi
di varia natura sul raspberry pi. Infatti
con il PHP non solo si può scrivere codice
che genera HTML cioè ciò che il browser
del nostro PC/smartphone/tablet interpreta
e ci mostra. Con il PHP si possono anche eseguire
comandi sul server, come scrivere del testo
su di un file, lanciare processi e quant'altro.
Ad esempio potremmo creare degli script PHP
chiamati --con molta originalità-- chessò
"script1.php" o "script2.php", quindi richiamabili
da un qualsiasi browser web con ad esempio
"/script1.php", che vanno a
compiere una determinata operazione, ad esempio
avviare una applicazione sul raspberry pi
oppure interagire con un dispositivo collegato
via USB al piccolo computerino.
E così via...
Apro una doverosa parentesi. Finché rimarrete
all'interno della vostra rete locale,
potrete immaginare e pensare tutto
ciò che vorrete senza farvi
troppi problemi. Nel momento in cui vorrete
invece esporre su internet il vostro lavoro,
così da poterlo eventualmente eseguire anche
quando siete fuori casa: beh fate molta attenzione!
A quel punto sarà indispensabile accertarsi
che non ci siano falle di sicurezza.
Per esporre su internet il vostro web server
dovrete avere un router in grado di girare
al raspberry pi le richieste che arrivano
verso l'indirizzo IP della vostra connessione
domestica.
Per far ciò dovrete poter accedere alla configurazione
interna del router (cosa solitamente non possibile
sui modem/router forniti dagli operatori telefonici),
e far sì che le richieste che provengono
dall'esterno siano ruotate automaticamente
verso l'indirizzo IP interno a cui risponde
il vostro pi. Per facilitare la cosa vi conviene
impostare un indirizzo statico per il raspberry
pi, in modo che ogni volta che esso provi
a connettersi alla rete, il router gli assegni
sempre lo stesso indirizzo IP.
A questo punto sapendo quale è l'indirizzo
IP che il gestore della vostra connessione
ad internet vi ha assegnato, digitandolo sul
browser web da PC/smartphone o tablet, il
vostro router riceverà la richiesta e la
manderà al raspberry pi; quindi apache e
PHP valuteranno ciò che gli avrete richiesto
e vi sarà fornirà indietro la risposta.
Per rendere il tutto ancora più "potente",
registrando l'IP che vi viene fornito dall'operatore
su di un servizio DNS (e molti router integrano
questa funzione in modo da far loro tutto
in autonomia), non dovrete nemmeno più essere
a conoscenza dell'indirizzo IP della vostra
connessione (ed è comodo visto che esso può
variare ogni volta che collegate il router
ad internet): l'unica cosa che dovrete sapere
sarà il nome che avrete scelto sul DNS.
Insomma diventerà un po' come accedere a
Google o Facebook o qualsiasi altro sito web:
digiterete , e sarete automaticamente
redirezionati sul vostro pi, ricevendo da
lui risposta sul browser.
Bene. Evito di dilungarmi ancora anche perché
l'argomento è talmente vasto che non si finirebbe
più. Spero di avervi dato tanti spunti e,
se ci sono domande in merito, come sapete
mi trovate qui nei commenti, sui social e
sul blog. Tutti i link sono come sempre in descrizione.
E a proposito del blog: ho intenzione di aprire
lì una sezione dedicata proprio a questi
tutorial, e magari anche ad altri per i quali
non farò video focus. Quando sarà pronta
troverete il link qui in descrizione e anche
linkato nelle schede di questo video
ed ovviamente tra le pagine principali del blog.
Credo che quella sezione mi permetterà di
eventualmente approfondire meglio gli argomenti
trattati e semplificati nei video, e voi potrete
trovare più dettagli anche in forma scritta
che, nel caso delle guide -secondo me-, è
la cosa migliore da avere.
Spero che questo video vi sia piaciuto, che
l'abbiate trovato utile o interessante, e
che vi piaccia l'idea di questi tutorial.
In caso, lasciate un like e se ancora non
lo aveste fatto iscrivetevi al canale attivando
le notifiche per essere prontamente avvisati
quando nuovi focus e nuovi tutorial saranno
disponibili. Tutorial che cercherò di pubblicare
su base per lo meno mensile, in aggiunta a
tutti gli altri contenuti.
Vi ricordo di partecipare al sondaggio
presente nelle schede di YouTube,
raggiungibile anche cliccando
sul punto esclamativo in alto a destra.
Non mi resta altro che salutarvi.
Alla prossima puntata.
Ciao!
