Webserver su Raspberry Pi
Come configurare un Raspberry Pi affinché possa essere utilizzato come server per ospitare un sito web domestico (versione PDF)
Installazione del webserver
Una volta completata la configurazione del sistema, riavviamo il Raspberry Pi (o comunque la macchina virtuale di QEMU, se stiamo operando sull'immagine dal nostro computer) e, dopo aver constatato che tutto funziona alla perfezione, procediamo con l'installazione dei programmi per il webserver.Nota: durante l'installazione di questi programmi,
dpkg
richiederà interattivamente come configurarli (per esempio,
con quale webserver si deve interfacciare phpMyAdmin) e le
password da utilizzare (per esempio, la password di amministrazione del database MySQL).
Onde evitare di perdere inavvertitamente queste preziose informazioni,
consiglio di annotarle in un posto sicuro.
Apache
Logo di Apache WebServer
Installazione di Apache
Per installare Apache (attualmente alla versione 2):# apt-get install apache2Attenzione: per rendere effettiva ogni modifica ai file di configurazione di Apache e PHP, è indispensabile riavviare il webserver (o, al limite, ricaricare la sua configurazione), attraverso uno dei seguenti comandi
# service apache2 restart # riavvia il webserver # service apache2 reload # ricarica la configurazione # service apache2 stop # spegne il webserver # service apache2 start # avvia il webserveroppure riavviando completamente il Raspberry Pi.
Abilitazione dei permessi utente
Anche se può essere configurato diversamente (come vedremo nella Sezione 5.1.3), Apache serve i files presenti sotto la cartella/var/www
;
i file creati in questa cartella da Apache appartengono all'utente www-data:www-data
e hanno permessi 664
(ossia rw-rw-r--
), perciò non possono essere
modificati da un utente normale. Tuttavia, aggiungendo l'utente al gruppo www-data
,
gli verranno garantiti i permessi per poter modificare i file in /var/www
.
Rimane tuttavia un problema: se l'utente crea un nuovo file nella suddetta cartella,
questo verrà creato con appartenenza a utente:utente
e permessi 644
(cioè rw-r--r--
),
e ciò implica che Apache non può più modificarlo.
Perciò, affinché anche i file creati dall'utente possano essere scritti sia da Apache,
sia dall'utente,
si dovrà fare in modo che i file che crea abbiano appartenenza al gruppo www-data
e permessi 664
(ossia rw-rw-r--
).
Per fare questo, ottenere il GID (Group IDentifier) del gruppo www-data
,
con il seguente comando:
$ cat /etc/group | grep www-data | cut -d: -f3supponendo che il GID sia 33, modificare il file
/etc/passwd
alla riga dell'utente interessato, sostituendo il campo relativo al gruppo base
(ossia il quarto) con il GID 33
, affinché assomigli a:
glgprograms:x:1007:33:GLG Programs,,,:/home/glgprograms:/bin/zshDopodiché, abilitare la creazione di file con permessi
664
aggiungendo
al file /etc/profile
la linea
umask 002Nota: per rendere effettive queste modifiche, eseguire nuovamente il login.
Attenzione: se si considera di modificare i file anche montando la cartella da remoto tramite il protocollo
sftp
(con sshfs
oppure FileZilla
,
Sezione 7.1, nel PDF),
modificare anche il file /etc/ssh/sshd_config
alla seguente linea, aggiungendo
-u 002:
Subsystem sftp /usr/lib/openssh/sftp-server -u 002
Configurazione di un Virtual Host
Può sempre risultare utile poter ospitare più siti web sulla stessa macchina, oppure semplicemente separare i contenuti pubblici del sito dalle pagine di amministrazione. Inoltre, si può presentare la necessità di consentire un accesso sicuro al sito, tramite certificato SSL e protocollo HTTPS o di limitare accessi e larghezza di banda: in tutti questi casi, è necessario creare degli host virtuali.Nota:la creazione di un host virtuale è a discrezione dell'amministratore del server; se si è sicuri di non avere nessuna necessità di abilitare, anche in futuro, una delle suddette caratteristiche, allora si può saltare direttamente alla Sezione 5.1.4. In ogni caso, alcune modifiche minori possono essere effettuate anche sul file di configurazione iniziale,
/etc/apache2/sites-available/default
.
Prima di configurare un host virtuale, assicuriamoci che la configurazione base di Apache non possa andare in conflitto con la nostra; in particolare, commentare tutte le linee
Listen
all'interno del file /etc/apache2/ports.conf
,
se queste non sono già commentate (la presenza di queste linee in un file
diverso da quello degli host virtuali veri e propri, è causa di notevoli
mal di testa per molti, compreso il webmaster sottoscritto; una veloce
ricerca con Google su qualche forum chiarirà immediatamente questo concetto).
Per configurare un host virtuale, creiamo due cartelle all'interno di
/var/www
, che ospiteranno i due siti, ad esempio:
$ cd /var/www $ mkdir glgprograms.it $ mkdir glgprograms.glgdopodiché, configuriamo Apache per poter usare i due host virtuali, creando due file (che, per semplicità, chiameremo come le due cartelle) all'interno di
/etc/apache2/sites-available
:
# cd /etc/apache2/sites-available # touch glgprograms.it glgprograms.glgAll'interno di
glgprograms.it
scriviamo:
Listen 80 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin myemail@provider.com ServerName www.glgprograms.it ServerAlias glgprograms.it DocumentRoot "/var/www/glgprograms.it" DirectoryIndex index.html index.htm index.php </VirtualHost>dove
- 80 è la porta sulla quale il webserver Apache deve rimanere in attesa delle connessioni dall'esterno;
- myemail@provider.com è l'indirizzo email dell'amministratore del webserver, che Apache utilizza nei messaggi di errore e/o per notificare eventuali malfunzionamenti all'amministratore stesso;
- ServerName e ServerAlias indicano i dominî ai quali risponde il webserver;
- "/var/www/glgprograms.it" è la cartella all'interno della quale si trovano i file del sito
# a2dissite default # a2ensite glgprograms.it # a2ensite glgprograms.glgRiavviando Apache, noteremo che, interrogandolo con un browser all'indirizzo http://dominio.it/, risponderà col contenuto del primo virtual host, mentre interrogandolo all'indirizzo http://dominio.it:81 risponderà col contenuto del secondo virtual host (dove per dominio.it si intende il dominio vero e proprio associato al Raspberry Pi, oppure il suo indirizzo IP). Nella Sezione 5.1.4, vedremo una primitiva applicazione pratica per gli host virtuali. Per applicazioni più avanzate, consultare la Sezione 8.4.
Ottimizzazione di Apache
Dal momento che le ADSL casalinghe non forniscono molta larghezza di banda, è molto probabile che anche un solo visitatore possa saturarvi la linea scaricando immagini o altri contenuti particolarmente grandi. Per evitare di trovarsi impossibilitati a navigare quando questo accade, si può limitare la banda utilizzata da Apache, così da lasciare sempre almeno qualche K/s libero per la navigazione personale. Per limitare la banda utilizzata da Apache, si può utilizzare il modulomod_bw
.
Per installare mod_bw
:
# apt-get install libapache2-mod-bwdopodiché, all'interno della direttiva
<VirtualHost>
dell'host virtuale
interessato, aggiungere, facendo particolare attenzione alla distinzione
tra lettere maiuscole e minuscole:
BandwidthModule On ForceBandWidthModule On Bandwidth all 35840 MinBandwidth all -1
dove 35840 è la massima larghezza di banda, espressa in bytes al secondo, che Apache può utilizzare complessivamente (ossia indipendentemente da quanti utenti sono collegati) quando serve quel sito; nel caso specifico, Apache invierà dati con una frequenza massima di 35 K/s (35 · 1024), velocità ragionevole con una comune ADSL Telecom da circa 40 K/s in upload.
Pagina scritta da
Giovan Battista