Come installare un server web sul Raspberry Pi (Apache + PHP + MySQL)
ⓘ Questo articolo potrebbe essere stato parzialmente o completamente tradotto utilizzando strumenti automatici. Ci scusiamo per eventuali errori che questo può causare.
Dopo aver creato la vostra scheda SD, e dopo aver avviato il vostro Raspberry Pi per la prima volta, ci sono forti probabilità che si desidera utilizzare come server web.
Perché un Raspberry Pi come server web?
Ma perché usare un Raspberry come server web, piuttosto che usare fornitori di servizi specializzati nel web hosting?
In primo luogo, da un punto di vista economico, si deve sapere che i servizi di web hosting non sono gratuiti e che si deve pagare ogni mese / anno. A differenza del Raspberry che hanno solo bisogno di una connessione.
Inoltre, scegliendo Raspberry, si ha la possibilità di modificare i servizi come si desidera (esempi: la dimensione del disco, l’hosting di Database, ecc), che non è generalmente il caso con gli host specializzati , Che spesso vendono hosting condiviso con bassa capacità di configurazione.
Tuttavia, per supportare più utenti, si dovrebbe utilizzare un Raspberry Pi 3 (il Pi 3 può essere trovato qui), il Raspberry Pi con 1 GB di RAM, piuttosto che il Raspberry tipo B + (512 MB di RAM)
La domanda che sorge ora è, come fare un server web su Raspeberry Pi ?Installation du serveur Apache avec Raspbian
Che cos’è Apache ?
Prima di tutto, installeremo Apache, che è il server web in quanto tale.
Quando si parla di un server web, si pensa spesso alla macchina, ma questo termine si riferisce anche al software che permette alla macchina di analizzare le richieste degli utenti (in forma 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).
Come parte di Apache, è il software di cui parliamo.
Al momento, Apache è il server web più utilizzato, con circa il 60% di quota di mercato. Apache ha la sua licenza, usata da molti altri progetti. Inoltre, l’uso massiccio di Apache (che è diventato lo standard per i server web), insieme alla sua alta popolarità, ha portato ad un’enorme abbondanza di documentazione, corsi e altri libri che trattano del suo uso, e della sua sicurezza, come questo libro.
Che sia per il Raspberry Pi e Raspbian, o per una macchina di uso più generale, Apache è quindi una scelta sicura, e le competenze che potrete acquisire sull’argomento saranno sempre utili.
Installazione di Apache
Prima di installare il server, assicuriamoci di avere una macchina aggiornata. Per fare questo dobbiamo avere i diritti di amministratore, sia per il comando sudo.
sudo apt updatesudo apt upgradesudo apt update
Una volta che il Raspberry Pi è aggiornato, installeremo il server Apache.
sudo apt install apache2
A proposito, ne approfitteremo per dare i diritti al file apache che potrete gestire facilmente i vostri siti. Per fare questo, eseguite i seguenti comandi:
sudo chown -R pi:www-data /var/www/html/sudo chmod -R 770 /var/www/html/
Verificate se Apache funziona
Una volta completata l’installazione, possiamo verificare che Apache funzioni correttamente andando all’indirizzo del Raspberry.
Per fare questo, è necessario provare ad accedere al Raspberry dalla porta 80 (questa porta non essendo aperta dall’esterno, dovrà farlo dal Raspberry stesso). Non preoccupatevi, è molto facile. Basta aprire il browser web del Raspberry, e andare su “http://127.0.0.1”. Si dovrebbe quindi ottenere una pagina con un messaggio come “Funziona! “E un sacco di altro testo.
Se non avete già una GUI sul vostro Raspbian, o usate SSH per connettervi al vostro Raspberry, potete usare 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.
Quindi dovrete solo leggere il file con il comando
cat ./check_apache.html
Se vedete segnato in un punto del codice “It works! ” è che Apache sta funzionando.
Apache usa la directory “/var/www/html” come root per il tuo sito. Questo significa che quando chiami il tuo Raspberry sulla porta 80 (http), Apache cerca il file in “/var/www/html”.
Per esempio, se chiami l’indirizzo “http://127.0.0.1/example”, Apache cercherà il file “example” nella directory “/var/www/html”.
Per aggiungere nuovi file, siti, ecc, dovrete aggiungerli a questa directory.
Ora potete usare il vostro Raspberry per fare un sito in HTML, CSS e JavaScript, internamente.
Tuttavia, potreste voler permettere rapidamente interazioni tra il sito e l’utente. Per esempio, per permettere all’utente di registrarsi, ecc. Per questo, avrete bisogno di PHP.
Installazione di PHP sul vostro Raspberry Pi
Che cos’è PHP?
Prima di tutto, dovete sapere che PHP è un linguaggio interpretato. E come nel caso dei server, l’acronimo PHP può avere diversi significati. Infatti, quando si parla di PHP, si può parlare sia del linguaggio che dell’interprete.
Qui, quando si parla di installare PHP, significa che si installerà l’interprete, al fine di utilizzare il linguaggio.
PHP (il linguaggio questa volta) è utilizzato principalmente per rendere un sito dinamico, vale a dire che l’utente invia informazioni al server che restituisce i risultati modificati secondo queste informazioni. Al contrario, un sito statico non si adatta alle informazioni fornite da un utente. È salvato come file una volta per tutte, e fornirà sempre lo stesso contenuto.
PHP è gratuito, e mantenuto dalla PHP Foundation, così come Zend Enterprise, e varie altre società (va notato che Zend è anche l’autore del famoso framework Zend PHP, ampiamente utilizzato e riconosciuto nel mondo del ” business).
È uno dei linguaggi di programmazione più usati, ed è anche il più usato per la programmazione web, con circa il 79% di quota di mercato.
Anche in questo caso, tutte le competenze che puoi acquisire, sul linguaggio, o sull’installazione e configurazione dell’interprete, saranno sempre utili. Quindi non possiamo che consigliarvi di imparare il PHP, che è davvero un linguaggio meraviglioso e troppo spesso sottovalutato.
Come installare PHP
Useremo ancora una volta l’amministratore per installare PHP con la linea di comando.
sudo apt install php php-mbstring
Controllare se PHP funziona
Per sapere se PHP funziona correttamente, non è molto complicato, e il metodo è abbastanza simile a quello usato per Apache.
Prima si cancella il file “index.html” nella directory “/var/www/html”.
sudo rm /var/www/html/index.html
Poi si crea un file “index.php” in questa directory, con questa linea di comando
echo "<?php phpinfo ();?>" > /var/www/html/index.php
Da lì, l’operazione è la stessa del controllo Apache. Prova ad accedere alla tua pagina, e dovresti avere un risultato vicino a questa immagine (se non hai un’interfaccia, usa lo stesso metodo di prima, e cerca le parole “PHP Version”).
Tabella generata dal comando phpinfo su un Raspberry.
Un database MySQL per il tuo server
Un DBMS cos’è ? Perché MySQL?
Ora che abbiamo impostato PHP, probabilmente vorrete memorizzare informazioni da utilizzare nei vostri siti. A questo scopo, i database sono più spesso utilizzati.
Allestiamo quindi un DBMS (Database Management System), cioè MySQL.
MySQL è un DBMS gratuito, potente e molto utilizzato (circa il 56% del mercato dei DBMS gratuiti). Anche qui, MySQL è così essenziale per lo sviluppo, qualunque sia il linguaggio, che bisogna assolutamente impararlo e padroneggiarlo, con questo libro per esempio.
Come installare MySQL
Per fare questo, installeremo mariadb-server e php-mysql (che servirà da collegamento tra php e mysql)
sudo apt install mariadb-server php-mysql
Verificare che MySQL funzioni correttamente
Per verificare il funzionamento di MySQL, questa volta useremo solo la linea di comando. Per farlo, ci collegheremo semplicemente tramite il comando:
sudo mysql --user=root
Non elimineremo l’utente root mysql di default e creeremo un nuovo utente root mysql, perché quello di default può essere usato solo con l’account root di Linux, e quindi non disponibile per il webserver e gli script php.
Per fare ciò, una volta che ti sei connesso a MySQL, esegui semplicemente questi comandi (sostituisci password
con la password che vuoi) :
DROP USER 'root'@'localhost';CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
Ora hai un server web, connesso a PHP e MySQL. Questo è tutto ciò che serve.
(Nelle tue prossime connessioni, sarai in grado di connetterti a mysql senza usare sudo, con il comando mysql --user=root --password=yourmysqlpassword
).
Aggiungere PHPMyAdmin
L’installazione di PHPMyAdmin non è assolutamente necessaria. In questa installazione, non ci occuperemo di alcuna impostazione speciale di sicurezza!
L’installazione di PHPMyAdmin è abbastanza facile e veloce, dobbiamo semplicemente usare il gestore di pacchetti con questo comando :
sudo apt install phpmyadmin
Il programma di installazione di PHPMyAdmin ti farà alcune domande. Per quanto riguarda la parte dbconfig-common
, scegliete di non usarla (dato che abbiamo già configurato il nostro database). Riguardo al server per cui configurare PHPMyAdmin, scegli Apache. E la password di root è quella che hai impostato per MySQL.
Dovresti anche abilitare l’estensione mysqli usando il comando sopra :
sudo phpenmod mysqlisudo /etc/init.d/apache2 restart
Verifica che PHPMyAdmin funzioni correttamente
Per verificare che PHPMyAdmin funzioni, dovrai semplicemente provare ad accedervi, usando l’indirizzo del tuo Raspberry seguito da /phpmyadmin. Per esempio, localmente sarà http://127.0.0.1/phpmyadmin
Se ottieni ancora un errore, potrebbe essere perché PHPMyAdmin si è spostato in un’altra directory. In questo caso, prova il comando
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
Ora, possiamo accedere a PHPMyAdmin dal browser di Raspberry Pi, con l’url : http://127.0.0.1/phpmyadmin
Rendere un server accessibile dal web
Il tuo server web è pronto. Tuttavia, probabilmente non è possibile accedervi da internet. Infatti, sarebbe necessario che il tuo modem reindirizzi le richieste al tuo Raspberry, le porte buone.
Per mettere in atto questi reindirizzamenti, e anche ottenere un URL, dovresti guardare a DynDNS e al port forwarding!