Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Server/Web"
Differenze tra le versioni 3 e 8 (in 5 versioni)
Versione 3 del 08/04/2007 12.57.54
Dimensione: 15856
Commento: è linkata in server. temporaneamente in revisione
Versione 8 del 21/09/2007 20.30.54
Dimensione: 14906
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 5: Linea 5:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice:'''[[BR]][[TableOfContents]]||

= Guida alla configurazione di un server Web =

== Prima di installare ==
||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice:'''[[BR]][[TableOfContents]]||

= Introduzione =
Linea 13: Linea 11:
Tenete conto che probabilmente vi servirà hardware dedicato , se possibile scegliete una soluzione appositamente Tenete conto che probabilmente vi servirà hardware dedicato, se possibile scegliete una soluzione appositamente
Linea 18: Linea 16:
Possibilmente dedicate una partizione apposita per /var/log ed una specifica per /var/www dove ospiterete
i vostri siti : ciò dovrebbe minimizzare i tempi di I/O sia per la scrittura dei log files che per le operazioni
di GET per la lettura dei files legata alle richieste dei clients.

== Installazione ==
Possibilmente dedicate una partizione apposita per `/var/log` ed una specifica per `/var/www` dove ospiterete
i vostri siti: ciò dovrebbe minimizzare i tempi di I/O sia per la scrittura dei log files che per le operazioni
di GET per la lettura dei files legata alle richieste dei client.

= Installazione =
Linea 24: Linea 22:
sudo apt-get -y install apache2
}}}

L'opzione '''-y''' di apt-get non chiede la conferma per le azioni legate al processo di installazione del software.

Apt installerà pertanto apa
che2 risolvendo automaticamente le dipendenze necessarie ed avviando il server web
nella configurazione di default.


== Un'occhiata ai files e alle directories di configurazione ==

In apache2 le principali opzioni di configurazione sono racchiuse nel file '''
apache2.conf''', mentre
il file '''
httpd.conf''' è vuoto (riservato alla personalizzazione della configurazione di apache2) e le porte
su cui il server Web sarà in ascolto all'avvio del servizio sono elencate nel file '''ports.conf'''; questi files si trovano in '''/etc/apache2'''.
La directory '''mods-available''' contiene tutti i moduli disponibili con apache2 (quelli installati di default)
mentre la directory '''sites-available''' contiene le direttive di configurazione relative a tutti i siti
che questo server Web ospita.
I moduli effettivamente caricati all'avvio del servizio apache2 sono elencati nella directory '''mods-enabled''' , così
come i siti effettivamente pubblicati e visibili agli utenti sono elencati nella directory '''sites-enabled'''.
I files contenuti in queste 2 directories sono dei links a quelli contenuti nelle 2 directories '''mods-available''' e
'''
sites-available'''.
sudo apt-get install apache2
}}}

Apt installerà ''apache2'' risolvendo automaticamente le dipendenze necessarie ed avviando il server web nella configurazione di default.


= Configurazione e opzioni globali =

In '''apa
che2''' le principali opzioni di configurazione sono racchiuse nel file `apache2.conf`, mentre il file `httpd.conf` è vuoto (riservato alla personalizzazione della configurazione di apache2) e le porte su cui il server Web sarà in ascolto all'avvio del servizio sono elencate nel file `ports.conf`; questi file si trovano in `/etc/apache2`.
La directory `mods-available` contiene tutti i moduli disponibili con '''apache2''' (quelli installati di default) 
mentre la directory `sites-available` contiene le direttive di configurazione relative a tutti i siti che questo server Web ospita.
I moduli effettivamente caricati all'avvio del servizio apache2 sono elencati nella directory `mods-enabled`, così
come i siti effettivamente pubblicati e visibili agli utenti sono elencati nella directory `sites-enabled`.
I files contenuti in queste due directory sono dei link a quelli contenuti nelle due directory `mods-available` e
`
sites-available`.
Linea 46: Linea 38:
dei links ai file corrispondenti in '''mods-available'''.

Per esempio per supportare ssl occorre immettere comandi: {{{
dei link ai file corrispondenti in `mods-available`.

Per esempio per supportare ssl occorre immettere comandi:
{{{
Linea 50: Linea 43:
Linea 54: Linea 46:
La directory che contiene i file di log su tutti gli accessi è '''/var/log/apache2'''.

La directory che contiene il sito predefinito e che dovrebbe contenere i vostri siti è '''/var/www'''.


==
Parametri di configurazione globali ==

Per
modificare l'installazione di default occorre dare un'occhiata alla directory di configurazione di apache2 ,
'''/etc/apache2'''.

Eseguire al pr
ompt dei comandi: {{{
La directory che contiene i file di log su tutti gli accessi è `/var/log/apache2`.
La directory che contiene il sito predefinito e che dovrebbe contenere i vostri siti è `/var/www`.

Per modificare l'installazione di default occorre dare un'occhiata alla directory di configurazione di '''apache2''',
`/etc/apache2`.

Eseguire al pro
mpt dei comandi:
{{{
Linea 68: Linea 57:
osserverete come output : {{{ Osserverete come output : {{{
Linea 74: Linea 63:
=== Opzioni globali ===

Il file '''/etc/apache2/apache2.conf''' contiene le principali opzioni di configurazione di apache2: {{{
Il file `/etc/apache2/apache2.conf` contiene le principali opzioni di configurazione di '''apache2''':
{{{
Linea 78: Linea 66:
Linea 80: Linea 67:
Linea 82: Linea 68:
Linea 84: Linea 69:
Linea 86: Linea 70:
Linea 88: Linea 71:
Linea 90: Linea 72:
Linea 92: Linea 73:
Linea 94: Linea 74:
Linea 96: Linea 75:
Linea 98: Linea 76:
Linea 100: Linea 77:
Linea 102: Linea 78:
Linea 105: Linea 80:
Linea 107: Linea 81:
Linea 111: Linea 84:
 * '''Server``Root''' : directory base per configurazione , logs ed errori

 * '''Lock``File''' : il lock file sul file di log (da modificare solo se il log file di apache2 è montato via NFS)

 * '''Pid``File''' : il file che contiene il PID del processo padre apache2

 * '''Time``Out''' : il tempo dopo il quale apache2 chiude una connessione client in stato idle

 * '''Keep``Alive On''' : sono permesse connessioni persistenti (ovvero in grado di servire più di una richiesta di uno stesso client)

 * '''Max``Keep``Alive``Requests''' : il massimo numero di richieste che in una singola connessione un client può fare al server (dopo tale numero le richieste verranno scartate)

 * '''Keep``Alive``Timeout''' : numero di secondi da attendere per effettuare un'altra richiesta da parte di uno stesso client su una stessa connessione persistente

 * '''Start``Servers''' : numero di processi server avviati

 * '''Min``Spare``Servers''' : numero minimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)

 * '''Max``Spare``Servers''' : numero massimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)

 * '''Max``Clients''' : massimo numero di processi apache2 che possono essere avviati

 * '''Max``Requests``Per``Child''' : numero massimo di richieste che il server è in grado di processare per ciascun thread

 * '''Include''' : sono le direttive di inclusione. Apache2 si serve di tali direttive per dichiarare indirizzo di binding,porta di ascolto ed altri parametri specifici della vostra configurazione in file distinti.

Come vedete la direttiva '''Error``Log /var/log/apache2/error.log''' è relativa al path del log file,mentre la '''Include /etc/apache2/mods-enabled/*.load''' e quella successiva dicono di includere tutti i moduli elencati in '''mods-enabled'''. Le configurazioni particolari sono in '''/etc/apache2/httpd.conf''' e la porta di ascolto in '''ports.conf'''.

Per modificare l'utente e il gruppo con cui apache2 è avviato dovete editare i parametri nel file '''/etc/apache2/apache2.conf'''
 * `Server``Root`: directory base per configurazione, logs ed errori
 * `Lock``File`: il lock file sul file di log (da modificare solo se il log file di apache2 è montato via NFS)
 * `Pid``File`: il file che contiene il PID del processo padre apache2
 * `Time``Out`: il tempo dopo il quale apache2 chiude una connessione client in stato idle
 * `Keep``Alive On`: sono permesse connessioni persistenti (ovvero in grado di servire più di una richiesta di uno stesso client)
 * `Max``Keep``Alive``Requests`: il massimo numero di richieste che in una singola connessione un client può fare al server (dopo tale numero le richieste verranno scartate)
 * `Keep``Alive``Timeout`: numero di secondi da attendere per effettuare un'altra richiesta da parte di uno stesso client su una stessa connessione persistente
 * `Start``Servers`: numero di processi server avviati
 * `Min``Spare``Servers`: numero minimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)
 * `Max``Spare``Servers`: numero massimo di processi liberi (ovvero avviati per supplire ad improvvisi picchi di carico)
 * `Max``Clients`: massimo numero di processi apache2 che possono essere avviati
 * `Max``Requests``Per``Child`: numero massimo di richieste che il server è in grado di processare per ciascun thread
 * `Include`: sono le direttive di inclusione. Apache2 si serve di tali direttive per dichiarare indirizzo di binding,porta di ascolto ed altri parametri specifici della vostra configurazione in file distinti.

Come vedete la direttiva `Error``Log /var/log/apache2/error.log` è relativa al path del log file, mentre la `Include /etc/apache2/mods-enabled/*.load` e quella successiva dicono di includere tutti i moduli elencati in `mods-enabled`. Le configurazioni particolari sono in `/etc/apache2/httpd.conf` e la porta di ascolto in `ports.conf`.

Per modificare l'utente e il gruppo con cui '''apache2''' è avviato dovete editare i parametri nel file `/etc/apache2/apache2.conf`-
Linea 147: Linea 108:
'''N.B. : ''' apache2 non dovrebbe essere eseguito come root in quanto questo apre numerose falle di sicurezza...

I parametri per la gestione dei carichi di lavoro sono :
{{{
Apache non dovrebbe essere eseguito come root in quanto questo apre numerose falle di sicurezza...

I parametri per la gestione dei carichi di lavoro sono: {{{
Linea 154: Linea 114:
Linea 158: Linea 117:
'''N.B. :''' gli spare servers consentono al Web Server di rispondere + velocemente in caso di improvvisi picchi di richieste , ma occupano anche preziosa memoria dato che in casi di traffico normale non fanno nulla! Gli spare servers consentono al Web Server di rispondere più velocemente in caso di improvvisi picchi di richieste , ma occupano anche preziosa memoria dato che in casi di traffico normale non fanno nulla!
Linea 168: Linea 127:
Linea 172: Linea 130:

=
= Personalizzare il proprio sito ==

I parametri da specificare nel file '''/etc/apache2/sites-enabled/000-default''' sono :

{{{
= Personalizzare il proprio sito =

I parametri da specificare nel file `/etc/apache2/sites-enabled/000-default` sono: {{{
Linea 179: Linea 134:
Linea 181: Linea 135:
Linea 183: Linea 136:
Linea 187: Linea 139:
 * '''Document``Root''' : è la radice dell'albero dei documenti per questo sito

* '''Alias''' e '''Script``Alias''' : sono degli alias names per le directory locali nelle quali si trovano icone e scripts

Esempio : {{{
 * `Document``Root`: è la radice dell'albero dei documenti per questo sito
 * `Alias` e `Script``Alias`: sono degli alias names per le directory locali nelle quali si trovano icone e scripts

Esempio: {{{
Linea 193: Linea 144:
Linea 203: Linea 153:
Linea 205: Linea 154:
Linea 207: Linea 155:
Linea 217: Linea 164:
Linea 219: Linea 165:
Linea 223: Linea 168:
Le direttive per la gestione dinamica dell'albero dei documenti e la redirezione dei documenti
{{{
Le direttive per la gestione dinamica dell'albero dei documenti e la redirezione dei documenti {{{
Linea 226: Linea 170:
Linea 230: Linea 173:
Il client che richiede GIF file viene rediretto verso JPEG files

Le direttive per l'indicizzazione delle directorie: {{{
Il client che richiede file {{{.gif}}} file viene reindirizzato verso file {{{.jpeg}}}.

Le direttive per l'indicizzazione delle cartelle:
{{{
Linea 240: Linea 184:
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: {{{
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:
{{{
Linea 246: Linea 191:
Le direttive per la gestione dell'elenco dei files contenuti in una directory: {{{ Le direttive per la gestione dell'elenco dei files contenuti in una directory:
{{{
Linea 256: Linea 202:
Scelta icone per rappresentazione file: {{{ Scelta icone per rappresentazione file:
{{{
Linea 261: Linea 208:
Linea 263: Linea 209:
Linea 267: Linea 212:
Esempio scelta di icone: {{{ Esempio scelta di icone:
{{{
Linea 269: Linea 215:
Linea 271: Linea 216:
Linea 273: Linea 217:
Linea 275: Linea 218:
Linea 281: Linea 223:
Linea 283: Linea 224:
Linea 285: Linea 225:
Linea 287: Linea 226:
Linea 289: Linea 227:
Linea 293: Linea 230:
 * '''Exec``CGI''' : : esecuzione script CGI

* '''Follow``Sym``Links''' : segue link simbolici

* '''Multi``Views''' : seleziona documento che si avvicina di + alla richiesta del client quando il documento richiesto non esiste

* '''Sym``Links``If``Owner``Match''' : Segue link se owner di src e dst coincidono

=== Direttive protezione sito web ===

 * Autorizzazione
 * Controllo accesso
 * Autorizzazione basata sull'host
 * Autorizzazione basata sull'utente
 * Autenticazione

==== Autorizzazione basata sull'Host ====
 * `Exec``CGI`:esecuzione script CGI
 * `Follow``Sym``Links`: segue link simbolici
 * `Multi``Views`: seleziona documento che si avvicina di + alla richiesta del client quando il documento richiesto non esiste
 * `Sym``Links``If``Owner``Match`: Segue link se owner di src e dst coincidono

== Autorizzazione basata sull'Host ==
Linea 313: Linea 239:
Linea 315: Linea 240:
Linea 319: Linea 243:
==== Autorizzazione basata sull'Utente ==== == Autorizzazione basata sull'Utente ==
Linea 323: Linea 247:
 * Creare file per utenti : '''/usr/local/apache/conf/htuser'''

 * Creare utenti in '''/usr/local/apache/conf/htuser''' con comando: {{{
 * Creare file per utenti: `/usr/local/apache/conf/htuser`
 * Creare utenti in `/usr/local/apache/conf/htuser` con comando: {{{
Linea 328: Linea 251:

* Creare gruppo '''htusers''' nel file  '''/usr/local/apache/conf/htgroup'''

i
l formato del file è il seguente: {{{
 * Creare gruppo `htusers` nel file `/usr/local/apache/conf/htgroup`. Il formato del file è il seguente: {{{
Linea 334: Linea 254:

Direttive per autorizzazione basata sull'utente da inserire nel file '''/etc/apache2/sites-enabled/000-default''':
{{{
 * Direttive per autorizzazione basata sull'utente da inserire nel file `/etc/apache2/sites-enabled/000-default`: {{{
Linea 338: Linea 256:
Linea 341: Linea 258:

Impostazioni controllo accesso: {{{
 * Impostazioni controllo accesso: {{{
Linea 344: Linea 260:
Linea 346: Linea 261:
Linea 349: Linea 263:

* la prima direttiva consente l'accesso a '''username1 username2..'''

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

* la seconda direttiva consente l'accesso solo agli utenti definiti in '''htuser'''

=== Hosting virtuale ===
  * 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 ==
Linea 360: Linea 271:
La gestione dei siti allora può essere fatti nei seguenti modi :
La gestione dei siti allora può essere fatti nei seguenti modi:
Linea 363: Linea 273:
Linea 369: Linea 278:
Linea 371: Linea 279:
Linea 374: Linea 281:
Linea 378: Linea 284:
Linea 380: Linea 285:
Linea 382: Linea 286:
Linea 385: Linea 288:
==== Host based VH ====

Utilizzare la direttiva '''<Virtual``Host>''' da specificare all'interno di '''/etc/apache2/sites-enabled/000-default''' e all'interno delle opzioni di directory come nell'esempio riportato: {{{
=== Host based VH ===

Utilizzare la direttiva `<Virtual``Host>` da specificare all'interno di `/etc/apache2/sites-enabled/000-default` e all'interno delle opzioni di directory come nell'esempio riportato: {{{
Linea 389: Linea 292:
Linea 391: Linea 293:
Linea 393: Linea 294:
Linea 395: Linea 295:
Linea 397: Linea 296:
Linea 399: Linea 297:
Linea 401: Linea 298:
Linea 403: Linea 299:
Linea 407: Linea 302:
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 ====
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 ===
Linea 413: Linea 308:
Linea 415: Linea 309:
Linea 417: Linea 310:
Linea 419: Linea 311:
Linea 421: Linea 312:
Linea 423: Linea 313:
Linea 425: Linea 314:
Linea 427: Linea 315:
Linea 429: Linea 316:
Linea 431: Linea 317:
Linea 433: Linea 318:
Linea 435: Linea 319:
Linea 441: Linea 324:
==== Esecuzione di N istanze su singolo host ==== === Esecuzione di N istanze su singolo host ===
Linea 445: Linea 328:
 * 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 servers

 * Usare nei '''apache2[i].conf''' le diverse direttive specifiche come mostrato in precedenza
 * 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
Linea 453: Linea 333:
Linea 455: Linea 334:
Linea 457: Linea 335:
Linea 461: Linea 338:
== Configurazione di un server Web protetto con OpenSSL == = Configurazione di un server Web protetto con OpenSSL =
Linea 468: Linea 345:
Linea 471: Linea 347:
Linea 474: Linea 349:

* Specificare la direttiva '''Listen 443''' nel file '''/etcapache2/ports.conf'''

 * Modificare '''/etc/apache2/sites-available/default''' aggiungendo le righe: {{{
 * Specificare la direttiva '''Listen 443''' nel file `/etcapache2/ports.conf`
 * Modificare `/etc/apache2/sites-available/default` aggiungendo le righe: {{{
Linea 479: Linea 352:
Linea 483: Linea 355:
Linea 487: Linea 358:
Linea 489: Linea 359:
Linea 491: Linea 360:
Linea 495: Linea 363:
Riavviare apache2 eseguendo da shell il comando '''/etc/init.d/apache2 restart'''

== Supporto PHP ==
Riavviare apache2 eseguendo da shell il comando {{{
/etc/init.d/apache2 restart
}}}


= Supporto PHP =
Linea 501: Linea 371:
Linea 505: Linea 374:
== Controllo dei file di log ==

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

 * access.log

 * error.log 
= Controllo dei file di log =

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

 * `access.log`
 * `error.log`

BR

Introduzione

Prima di cominciare vale la pena di spendere due parole sui requisiti di un server Web.

Tenete conto che probabilmente vi servirà hardware dedicato, se possibile scegliete una soluzione appositamente progettata per il servizio che dovrete ospitare.

Prendetevi il tempo necessario per pianificare un corretto partizionamento del disco.

Possibilmente dedicate una partizione apposita per /var/log ed una specifica per /var/www dove ospiterete i vostri siti: ciò dovrebbe minimizzare i tempi di I/O sia per la scrittura dei log files che per le operazioni di GET per la lettura dei files legata alle richieste dei client.

Installazione

Aprite una shell ed al prompt dei comandi digitate:

sudo apt-get install apache2

Apt installerà apache2 risolvendo automaticamente le dipendenze necessarie ed avviando il server web nella configurazione di default.

Configurazione e opzioni globali

In apache2 le principali opzioni di configurazione sono racchiuse nel file apache2.conf, mentre il file httpd.conf è vuoto (riservato alla personalizzazione della configurazione di apache2) e le porte su cui il server Web sarà in ascolto all'avvio del servizio sono elencate nel file ports.conf; questi file si trovano in /etc/apache2. La directory mods-available contiene tutti i moduli disponibili con apache2 (quelli installati di default) mentre la directory sites-available contiene le direttive di configurazione relative a tutti i siti che questo server Web ospita. I moduli effettivamente caricati all'avvio del servizio apache2 sono elencati nella directory mods-enabled, così come i siti effettivamente pubblicati e visibili agli utenti sono elencati nella directory sites-enabled. I files contenuti in queste due directory sono dei link a quelli contenuti nelle due directory mods-available e sites-available. Questo vuol dire che se dovete supportare l'accesso in modo protetto al vostro sito (usando ssl) dovete creare dei link ai file corrispondenti in mods-available.

Per esempio per supportare ssl occorre immettere comandi:

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

La directory che contiene i file di log su tutti gli accessi è /var/log/apache2. La directory che contiene il sito predefinito e che dovrebbe contenere i vostri siti è /var/www.

Per modificare l'installazione di default occorre dare un'occhiata alla directory di configurazione di apache2, /etc/apache2.

Eseguire al prompt dei comandi:

cd /etc/apache2

Osserverete come output :

README        envvars     mods-available  sites-available
apache2.conf  httpd.conf  mods-enabled    sites-enabled
conf.d        magic       ports.conf      ssl

Il file /etc/apache2/apache2.conf contiene le principali opzioni di configurazione di apache2:

ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile /var/run/apache2.pid
TimeOut 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
StartServers         5
MinSpareServers      5
MaxSpareServers     10
MaxClients          20
MaxRequestsPerChild  0
ErrorLog /var/log/apache2/error.log
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
  • ServerRoot: directory base per configurazione, logs ed 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: numero di 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 (ovvero avviati per supplire ad improvvisi picchi di carico)

  • 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: sono le direttive di inclusione. Apache2 si serve di tali direttive per dichiarare indirizzo di binding,porta di ascolto ed altri parametri specifici della vostra configurazione in file distinti.

Come vedete la direttiva ErrorLog /var/log/apache2/error.log è relativa al path del log file, mentre la Include /etc/apache2/mods-enabled/*.load e quella successiva dicono di includere tutti i moduli elencati in mods-enabled. Le configurazioni particolari sono in /etc/apache2/httpd.conf e la porta di ascolto in ports.conf.

Per modificare l'utente e il gruppo con cui apache2 è avviato dovete editare i parametri nel file /etc/apache2/apache2.conf-

User www-data

Group www-data

Apache non dovrebbe essere eseguito come root in quanto questo apre numerose falle di sicurezza...

I parametri per la gestione dei carichi di lavoro sono:

StartServers <n° processi figli Web Server all'avvio>

MinSpareServers <n° minimo processi figli liberi avviati per supplire picchi di carico> 
MaxSpareServers <n° max processi figli liberi avviati per supplire picchi di carico>

Gli spare servers consentono al Web Server di rispondere più velocemente in caso di improvvisi picchi di richieste , ma occupano anche preziosa memoria dato che in casi di traffico normale non fanno nulla!

MaxClients <max n° client Web server è in grado di supportare simultaneamente>

I parametri per il nome del server sono :

ServerName <hostname (deve essere raggiungibile da URL>
ServerAdmin <mail_web_administrator>

Personalizzare il proprio sito

I parametri da specificare nel file /etc/apache2/sites-enabled/000-default sono:

DocumentRoot /usr/local/apache/htdocs
UserDir <public_html>
Alias /icons/ /usr/local/apache/icons/
ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
  • DocumentRoot: è la radice dell'albero dei documenti per questo sito

  • 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

Caricare i moduli con i comandi da shell:

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

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.


CategoryServer CategoryDaRevisionare