Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 29 del 13/01/2012 12.55.58

Nascondi questo messaggio


Questa guida è presente anche nella documentazione ufficiale

Introduzione

Prima di cominciare si ritiene necessario chiarire cosa si intende con Server Web:

  • "Un server web è un servizio, e per estensione il computer su cui è in esecuzione, che si occupa di fornire, tramite software dedicato e su richiesta dell'utente, file di qualsiasi tipo, tra cui pagine web (successivamente visualizzabili dal browser sul PC dell'utente). Le informazioni inviate dal server web all'utente viaggiano in rete trasportate dal protocollo HTTP. L'insieme di server web dà vita al World Wide Web, uno dei servizi più utilizzati di Internet." (cit. Wikipedia)

Un Server Web viene solitamente utilizzato per due scopi:

  • Personale: per il test e la progettazione di siti web o applicativi;

  • Commerciale: per fornire servizi di Web Hosting da vendere a terzi.

Apache Web Server

Intallazione

Installare il pacchetto apache2.

Verifica del funzionamento

Aprire il proprio browser preferito e puntare all'indirizzo http://127.0.0.1 oppure http://localhost. Se l'installazione del server apache è andata a buon fine sarà possibile leggere il messaggio:

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

Configurazione

Per procedere alla configurazione del server Apache è necessario agire sui file contenuti nella cartella /etc/apache2, in particolare si dovrà agire su:

  • apache2.conf: è il file di confugurazione globale del server Apache. In esso sono contenute le direttive che saranno applicate globalmente a tutti i siti contenuti nel server;

  • conf.d: anche questo file si occupa della configurazione globale del server Apache. Altri software che utilizzano il server Apache per fornire contenuti all'utente finale, possono aggiungere files o link simbolici attraverso questo file.

  • envvars: in questo file sono definite e impostate le variabili di ambiente del server Apache.

  • httpd.conf: ancora un file di configurazione che inizialmente è vuoto. Può essere utilizzato per specifiche direttive impostate dall'utente che agiscono globalmente sul server Apache.

  • mods-available: in questa directory sono contenuti i file di configurazione per avviare i moduli del server Apache e per configurare gli stessi. Non tutti i moduli hanno file di configurazione specifici.

  • mods-enabled: in questa directory sono posti dei link simbolici ai moduli presenti nella directory /etc/apache2/mods-available. tutti i moduli che hanno un link simbolico in questa directory sono abilitati e avviati all'interno del server Apache.

  • ports.conf: contiene le direttive per impostare le porte TCP sulle quali il server Apache resterà in ascolto di richieste dall'utente.

  • sites-available: in questa directory sono contenuti i file di configurazione per i Virtual Host del server Apache. I Virtual Hosts consentono avere, all'interno del server Apache, numerosi siti con configurazioni diverse uno dall'altro.

  • sites-enabled: così come per mods-enabled, questa directory contiene link simbolici a /etc/apache2/sites-available. Quando una configurazione presente in sites-available è linkata all'interno di questa directory, il sito corrispondente verrà configurato e avviato insieme al server Apache

File di configurazione aggiuntivi possono essere impostati attraverso la direttiva Include, ad esempio la direttiva

Include /etc/apache2/conf.d/

farà in modo che il server Apache vada a importare le impostazioni presenti nel file conf.d.

Ogni qualvolta si effettui una modifica sui file di configurazione sarà necessario riavviare il server Apache attraverso il comando

sudo service apache2 restart

Configurazione di Base

In questa sezione vengono fornite e commentate le direttive più importanti per il funzionamento e la configurazione del server Apache. Fare riferimento alla documentazione ufficiale di Apache raggiungibile attraverso i link forniti alla fine di questa pagina.

  • ServerRoot: definisce la directory principale di lavoro del server Apache. In questa directory sono contenuti tutti file di configurazione;

  • ServerAdmin; definisce le informazioni sull'amministratore del server, ad esempio la sua e-mail. Se i siti configurati nel server hanno problemi di qualche tipo, il server Apache stamperà a schermo un messaggio di errore contenente questi dati per segnalare il problema;

  • ServerName: contiente informazioni sull'hostname al quale il server Apache deve rispondere. Può essere specificato un hostname diverso per ogni Virtual Host;

  • Listen: definisce la porta sulla quale il server è in ascolto;

  • User e Group: definiscono l'utente e il gruppo proprietari del processo. Il server Apache non dovrebbe mai essere avviato dall'utente root;

  • ErrorLog: definisce il path per i file di log degli errori;

  • LockFile: il lock file sul file di log (da modificare solo se il log file di apache2 è montato via NFS);

  • PidFile: il file che contiene il PID del processo padre apache2;

  • TimeOut: il tempo dopo il quale apache2 chiude una connessione client in stato idle;

  • KeepAlive On: sono permesse connessioni persistenti, ovvero in grado di servire più di una richiesta di uno stesso client;

  • MaxKeepAliveRequests: il massimo numero di richieste che in una singola connessione un client può fare al server. Dopo tale numero le richieste verranno scartate;

  • KeepAliveTimeout`: tempo, in secondi, da attendere per effettuare un'altra richiesta da parte di uno stesso client su una stessa connessione persistente;

  • StartServers: numero di processi server avviati;

  • MinSpareServers: numero minimo di processi liberi,ovvero avviati per supplire ad improvvisi picchi di carico;

  • MaxSpareServers: numero massimo di processi liberi;

  • MaxClients: massimo numero di processi apache2 che possono essere avviati;

  • MaxRequestsPerChild: numero massimo di richieste che il server è in grado di processare per ciascun thread;

  • Include: direttive di inclusione. Apache2 si serve di tali direttive per dichiarare indirizzo di binding,porta di ascolto ed altri parametri specifici di configurazione in file distinti.

Personalizzare il proprio sito

Il server Apache, alla sua installazione, utilizza un unico sito chiamato default la cui configurazione è specificata attraverso il file /etc/apache2/sites-available/default. Se il vostro server dovra servire un unico sito è possibile mantenere questa configurazione, personalizzando i campi necessari. In particolare:

  • DocumentRoot: questa direttiva specifica dove, il server Apache, deve recuperare i files che costruiscono il sito. Il valore di default è /var/www. Questo implica che, se non diversamente specificato, Apache restituirà nel browser tutti e solo i file presenti all'interno della directory /var/www. È possibile specificare una qualsiasi directory, ad esempio /home/utente/sito;

  • ServerName: è possibile assegnare un valore diverso a questa direttiva per ogni Virtual Host configurato. Se, ad esempio, si imposta la direttiva come

    ServerName host.example

    si otterrà che, digitando nel browser l'indirizzo

    http://host.example

    il server Apache restituirà solo i dati relativi al sito configurato con questo ServerName.

  • ServerAlias: attraverso questa direttiva è possibile definire altri alias che puntino sempre al sito http://host.example. Per meglio comprendere la funzione di questa direttiva, se si imposta

    ServerAlias *.host.example

    si otterrà che il sito rispondente al dominio host.example sarà richiamato ogni qual volta nel browser si digiti un indirizzo che termini con host.example (http://www.host.example, http://pippo.host.example, http://foo.host.example);

  • ServerAdmin: un amministratore diverso può essere specificato per ogni sito;

Creare un nuovo sito

Se si vuole creare un proprio sito con una configurazione personalizzata, senza modificare il sito default è possibile comunque partire da questo file e utilizzarlo come template per il nuovo sito. Fare riferimento al paragrafo 4. Hosting Virtuale per avere informazioni più dettagliate.

  1. Creare una copia del file di configurazione del sito default con il comando

    sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/miosito

    miosito sarà il file di configurazione del nuovo sito che si vuole impostare;

  2. Personalizzare la configurazione di miosito utilizzando le direttive necessarie;

  3. Abilitare il sito con il comando

    sudo a2ensite miosito
  4. Riavviare il server Apache per rendere effettive le modifiche con il comando

    sudo service apache2 restart
  5. Per disabilitare un sito precedentemente abilitato si usa il comando

    sudo a2dissite miosito

Altre direttive utili

Molte altre direttive possono esse impostate per ogni sito che si ha la necessità di configurare. Per un elenco completo si può fare riferimento alla documentazione ufficiale. Alcune di queste che posso essere utili vengono riportate di seguito:

  • Alias: questa direttiva serve a specificare un percorso diverso da quello impostato in DocumentRoot per una richiesta. Ad esempio, impostando

    Alias /image /home/utente/immagini

    si otterrà che, digitando nel browser il collegamento

    http://host.example/image/casa.jpg

    il file richiesto sarà caricato dalla posizione

    /home/utente/immagini/casa.jpg
  • Allow from e Deny from: attraverso queste direttive è possibile specificare gli indirizzi IP o gli hostname ai quali è permesso accedere al sito (Allow) e quelli ai quali ciò è impedito (Deny). Ad esempio, per impedire ad uno specifico IP di accedere al sito si può usare la direttiva

    Deny from 10.252.46.165 
  • DirectoryIndex: questa direttiva specifica il file da cercare quando un utente cerca di accedere ad una determinata posizione nel sito. Ad esempio, impostando

    DocumentIndex index.html

    se si tenta di accedere all'indirizzo

    http://host.example/template

    si verrà reindirizzati al file

    http://host.example/template/index.html

    È possibile specificare più di un DocumentIndex nella forma

    DocumentIndex index.html index.php error.html

    In questo modo se, nella posizione specificata non esiste né il file index.html né il file index.php si verrà reindirizzati al file error.html.

  • IndexIgnore: permette di nascondere alcuni files al client. Ad esempio, se si specifica

    IndexIgnore README* *.txt 

    tutti i files README* e tutti i file con estensione .txt vengono nascosti al client.

Autorizzazione basata sull'Utente

Per configurare l'autenticazione a livello utente procedere come segue:

  1. Creare file per utenti: /usr/local/apache/conf/htuser

  2. Creare utenti in /usr/local/apache/conf/htuser con comando:

    htpasswd -c htuser <nomeutente>
  3. Creare gruppo htusers nel file /usr/local/apache/conf/htgroup. Il formato del file è il seguente:

    Groupname: user1 user2 user3 ..
  4. Inserire nel file /etc/apache2/sites-available/default le seguenti direttive:

    AuthUserFile conf/htuser
    AuthGroupFile  conf/htgroup
  5. Impostazioni controllo accesso:

    Require user username1 username2  
    Require group groupname1 groupname2 
    Require valid-user 
    • la prima direttiva consente l'accesso a username1 username2..

    • la seconda direttiva consente l'accesso a groupname1 groupname2..

    • la terza direttiva consente l'accesso solo agli utenti definiti in htuser

Hosting virtuale

Come già visto nel paragrafo precedente un singolo server può ospitare più siti.

La gestione dei siti può essere fatti nei seguenti modi:

  • N siti = N * M processi web server. se M è il numero di processi per singola istanza del sito web, vuol dire che M processi gestiscono ciascun sito.
  • Virtual host = N siti = M processi web server. Si ha sempre una singola istanza web, ovvero gli M processi gestiscono tutti gli N siti web.

È possibile identificare tre tipi di hosting virtuale :

  • basato sull'IP (VH host based) : da eseguire quando si hanno più indirizzi IP;
  • basato sul nome (VH name based) : da eseguire quando si hanno più nomi DNS;
  • basato sulla porta (VH port based).

Per scegliere tra le diverse configurazioni si possono seguire i punti successivi come linee guida:

  • N interfacce di rete: VH host based;
  • Singola interfaccia di rete: VH name based ;
  • N nomi per host: VH name based;
  • Necessità di separare i web servers per differenti politiche di sicurezza: si sconsiglia il VH in quanto si deve effettuare una separazione delle istanze del server Web.

VH Host based

Si utilizza la direttiva <VirtualHost> da specificare all'interno del file /etc/apache2/sites-availabe/miosito e all'interno delle opzioni di directory come nell'esempio riportato:

</VirtualHost>
BindAddress 0.0.0.0
Port 80
DocumentRoot /usr/local/apache/htdocs
ServerName site1.example.com
<VirtualHost 192.168.1.2>
DocumentRoot /usr/local/apache/htdocs2
ServerName site2.example.com
...
</VirtualHost> 

In questo caso il sito web di default serve site1.example.com, mentre l'IP 192.168.1.2 serve il sito site2.example.com.

VH Name based

Esempio:

Listen 192.168.1.232
NameVirtualHost 192.168.1.232
<VirtualHost 192.168.1.232>
DocumentRoot /home/httpd/ex1
ServerName www1.example.com
..
</VirtualHost>
..
<VirtualHost 192.168.1.232>
DocumentRoot /var/apache/htdocs2
ServerName www2.example.com
..
</VirtualHost>

In questo caso si ha un unico IP ma due nomi server distinti (due nomi nel DNS,di cui uno sarà un alias name) che servono due siti distinti.

Server HTTPS

Il modulo ssl fornisce al server Apache la capacità di criptare la comunicazione con il client. Quando questo tipo di comunicazione criptata è attivo, l'URL del sito che si sta visitando è preceduto dal prefisso https://. Per utilizzare questa estensione è sufficiente:

  1. Abilitare il modulo digitando in una finestra di Terminale, il comando

    sudo a2enmod ssl
    • Con l'installazione base di Apache viene fornito un sito, chiamato default-ssl, utilizzabile come base di partenza per la configurazione del proprio sito protetto con SSL. Come configurazione di partenza, questo sito utilizza una chiave ed un certificato generati automaticamente dal pacchetto ssl-cert.

  2. Abilitare il sito default-ssl con il comando

    sudo a2ensite default-ssl
  3. Modificare le direttive
    • SSLCertificateFile;
    • SSLCertificateKeyFile;
    in modo che puntino alle directory dove sono collocati i file relativi al certificato e alla chiave del vostro sito;
  4. Riavviare il server Apache con il comando

    sudo service apache2 restart

Controllo dei file di log

Tutti i file di log si trovano nella directory /var/log/apache2 e sono:

  • access.log

  • error.log

Forniscono utili informazioni per il debugging dei problemi che si possono presentare.

Supporto PHP e MySQL

PHP

Installare i seguenti pacchetti:

  • libapache2-mod-php5

  • php5-cli

  • php5-common

  • php5-cgi

Caricare i moduli con i comandi da shell:

sudo ln -s /etc/apache2/mods-available/php.conf /etc/apache2/mods-enabled/php.conf
sudo ln -s /etc/apache2/mods-available/php.load /etc/apache2/mods-enabled/php.load

Riavviare apache digitando in una finestra di terminale:

sudo service apache2 restart

MySQL

Seguire la relativa guida

Installazione All-in-One

Se si vogliono installare comtamporaneamente i pacchetti Apache2 con supporto PHP e MySQL, ovvero se si vuole disporre di un server LAMP (Linux-Apache-MySql-Php) è possibile procedere in modo veloce con la seguente procedura:

  1. Installare il pacchetto tasksel

  2. Installare il server LAMP con il comando

    sudo tasksel install lamp-server

Collegamenti


CategoryHomepage