GLG Programs fa uso di cookie per migliorare l'esperienza di navigazione degli utenti, ma non per tracciarne un profilo. Proseguendo nella navigazione, si accetta implicitamente l'utilizzo dei cookie.
[OK]Note legaliNon mi importa
Logo GLGPrograms Logo GLGPrograms

Webserver su Raspberry Pi

[Icona della Guida] 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

Apache webserver logo Logo di Apache WebServer
Sebbene esista Lighttpd che è molto più leggero, Apache, essendo più diffuso, è più facilmente personalizzabile ed espandibile, mettendo a disposizione una vasta gamma di moduli.

Installazione di Apache

Per installare Apache (attualmente alla versione 2):
# apt-get install apache2
Attenzione: 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 webserver
oppure 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: -f3
supponendo 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/zsh
Dopodiché, abilitare la creazione di file con permessi 664 aggiungendo al file /etc/profile la linea
  umask 002
Nota: 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.glg
dopodiché, 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.glg
All'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 Analogamente, creiamo il file di configurazione per l'altro sito, modificando la porta di ascolto e la DocumentRoot, ad esempio, 81 e /var/www/glgprograms.glg. Per ulteriori dettagli, si rimanda alla risorsa ufficiale di Apache. Infine, disabilitiamo l'host di default, e abilitiamo i nostri:
# a2dissite default
# a2ensite glgprograms.it
# a2ensite glgprograms.glg
Riavviando 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

Grafico dell'attività di rete bandwidthd mostra i limiti imposti alle velocità di connessione
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 modulo mod_bw. Per installare mod_bw:
# apt-get install libapache2-mod-bw
dopodiché, 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 BattistaGiovan Battista

Hai una domanda? Scrivici!
Questa pagina ti è piaciuta? Condividila!
Share on Facebook Share on Google+ Share on linkedin