Dimensione: 16069
Commento:
|
Dimensione: 16477
Commento:
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 91: | Linea 91: |
il server Apache restituirà solo i dati relativi al sito configurato con questo '''ServerName'''. | il server Apache restituirà solo i dati relativi al sito configurato con questo '''Server``Name'''. * '''Server``Alias''': 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`; |
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;
Alias e ScriptAlias: sono degli alias names per le directory locali nelle quali si trovano icone e scripts
Esempio:
http://example.com/man.html viene tradotto in /usr/local/apache/htdocs/man.html http://example.com/cgi-bin/rpm-query viene tradotto in /usr/local/apache/cgi-bin/rpm-query
Alcune direttive di tipizzazione dei file:
Type/sub-type extension1 [extension2...]
Esempio :
Video/mpeg mpeg mpg mpe Video/quicktime qt mov Video/x-msvideo avi '''AddType''' newtype/newsub-type extension1..
Esempio:
AddType text/doc doc
Alcune direttive per la specifica del linguaggio:
AddEncoding x-gzip gz tgz AddFileType text/html html AddLanguage en .en
Le direttive per la gestione dinamica dell'albero dei documenti e la redirezione dei documenti
Redirect [temporary | permanent] /images http://example.com/icons RedirectMatch (.*)\.gif$ http://example.com$1.jpg
Il client che richiede file .gif file viene reindirizzato verso file .jpeg.
Le direttive per l'indicizzazione delle cartelle:
DirectoryIndex <index dir predefinito>
Esempio:
DirectoryIndex index.html
Se un client richiede http://www.example.com/dir1 ottiene come pagina web index.html.
Le direttive per la generazione di indici dinamici di directory:
Option + Indexes
Le direttive per la gestione dell'elenco dei files contenuti in una directory:
IndexIgnore README* *.txt
Nasconde al client i files README* e tutti i file con estensione .txt.
Altre direttive:
IndexOptions , HeaderName
Scelta icone per rappresentazione file:
AddIcon <icon> <match1> [<match2> .] AddIconByType .. AddIconByEncoding .. DefaultIcon ..
Esempio scelta di icone:
AddIcon /icons/binary.gif .bin .exe AddIcon /icons/text.gif .txt AddIconByType /icons.apache/text.gif text/* AddAltByType TXT text/* DefaultIcon /icons/unknown.gif
Configurazione delle opzioni a livello di directory:
Options All (tutte le opzioni) ExecCGI FollowSymLinks MultiViews SymLinksIfOwnerMatch
ExecCGI:esecuzione script CGI
FollowSymLinks: segue link simbolici
MultiViews: seleziona documento che si avvicina di + alla richiesta del client quando il documento richiesto non esiste
SymLinksIfOwnerMatch: Segue link se owner di src e dst coincidono
Autorizzazione basata sull'Host
Le direttive da usare sono le seguenti:
Deny <hostname> | a.b.c.d/mask Allow <hostname> | a.b.c.d/mask Order allow,deny : Processa le regole nell'ordine indicato
Autorizzazione basata sull'Utente
Per configurare l'autenticazione a livello utente procedere come segue:
Creare file per utenti: /usr/local/apache/conf/htuser
Creare utenti in /usr/local/apache/conf/htuser con comando:
htpasswd -c htuser <nomeutente>
Creare gruppo htusers nel file /usr/local/apache/conf/htgroup. Il formato del file è il seguente:
Groupname: user1 user2 user3 ..
Direttive per autorizzazione basata sull'utente da inserire nel file /etc/apache2/sites-enabled/000-default:
AuthUserFile conf/htuser AuthGroupFile conf/htgroup
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
In generale una singola macchina ospita più di un sito web.
La gestione dei siti allora può essere fatti nei seguenti modi:
- N siti = N * M processi web server (se M è n° processi per singola istanza sito web,vuol dire che M processi gestiscono ciascun sito)
- Virtual host = N siti = M processi web server (sempre 1 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 avete più di indirizzo IP
- basato sul nome (VH name based) : da eseguire quando avete più nomi DNS (alias etc...)
- basato sulla porta (VH port based)
I metodi per la scelta delle tipologie di hosting sono :
- N interfacce di rete : VH host based
- Singola interfaccia di rete : name based VH
- N nomi per host : VH name based
- Necessità di separazione web servers per differenti policies protezione : Non scegliete il VH poichè dovete effettuare una separazione delle istanze del vostro web server
Host based VH
Utilizzare la direttiva <VirtualHost> da specificare all'interno di /etc/apache2/sites-enabled/000-default e all'interno delle opzioni di directory come nell'esempio riportato:
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>
Qui il sito web di default serve site1.example.com, mentre l'IP 192.168.1.2 serve il sito site2.example.com.
Name based VH
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>
Qui come vedete 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.
Esecuzione di N istanze su singolo host
Creare N files di configurazione per N istanze :
Aggiungere righe per start e stop httpd al file /etc/init.d/apache2
In /etc/init.d/apache2 definire gli N diversi files di configurazione apache2[i].conf usati dalle N istanze dei web server
Usare nei apache2[i].conf le diverse direttive specifiche come mostrato in precedenza
Specificare:
BindAddress Port Listen ErrorLog
Configurazione di un server Web protetto con OpenSSL
I comandi da specificare sono :
Comando da shell:
apache2-ssl-certificate -days 3650
sostituite 3650 con la durata del certificato in giorni.
Caricare modulo ssl in /etc/apache2/mods-enabled con comando:
ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
Specificare la direttiva Listen 443 nel file /etcapache2/ports.conf
Modificare /etc/apache2/sites-available/default aggiungendo le righe:
NameVirtualHost *:443 <VirtualHost *:443> #Inserire qui l'indirizzo email dell'amministratore del server ServerAdmin webmaster@localhost #Inserire qui la DocumentRoot del server virtuale #In questa cartella ci sono le pagine che viaggeranno sul canale criptato DocumentRoot /var/www SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem </VirtualHost>
Riavviare apache2 eseguendo da shell il comando
/etc/init.d/apache2 restart
Supporto PHP
Prima di procedere è necessario abilitare il componente main dei repository ufficiali.
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 /etc/init.d/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.