#LANGUAGE it
<
>
<>
<>
= Introduzione =
In questa guida verrà spiegato come installare e configurare il Server Web '''Apache''' e come abilitare il supporto a '''php''' e '''!MySql'''.
Definizione di 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)
= Intallazione =
[[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://apache2|apache2]].
Aprire il proprio [[InternetRete/Navigazione|browser]] e accedere all'indirizzo [[http://127.0.0.1]] oppure [[http://localhost]]. Se l'installazione è 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 =
Di seguito verranno elencati i file e le cartelle presenti all'interno di `/etc/apache2` che sono necessari per la configurazione del server '''Apache''':
* `apache2.conf`: è il file di configurazione principale. In esso sono contenute le impostazioni che saranno applicate globalmente a tutti i siti.
* `conf.d`: cartella che contiene file di configurazione globali. Software che utilizzano il server '''Apache''' per fornire contenuti all'utente finale (per esempio '''!PhpMyAdmin'''), possono aggiungere file o collegamenti simbolici in questa cartella.
* `envvars`: in questo file sono definite e impostate le variabili d'ambiente del server Apache.
* `httpd.conf`: un file di configurazione, inizialmente vuoto, che può essere utilizzato per specifiche direttive impostate dall'utente che agiscono globalmente sul server.
* `mods-available`: in questa cartella sono contenuti i file di configurazione per avviare i moduli del server e per configurare gli stessi. Non tutti i moduli hanno file di configurazione specifici.
* `mods-enabled`: in questa cartella sono presenti dei collegamenti simbolici ai moduli presenti nella cartella `/etc/apache2/mods-available`. Tutti i moduli che hanno un collegamento simbolico in questa cartella 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.
* `sites-available`: in questa cartella sono contenuti i file di configurazione per i Virtual Host (di seguito VH). I VH consentono di avere numerosi siti con configurazioni diverse l'uno dall'altro.
* `sites-enabled`: come per la cartella `mods-enabled`, contiene collegamenti simbolici a `/etc/apache2/sites-available`. Quando una configurazione presente in `sites-available` è collegata all'interno di questa cartella, il sito corrispondente verrà configurato e avviato insieme al server Apache.
File di configurazione aggiuntivi possono essere impostati attraverso la direttiva `Include`. Per esempio, la direttiva {{{
Include /etc/apache2/conf.d/
}}} farà in modo che il server Apache importi le impostazioni presenti all'interno della cartella `/etc/apache2/conf.d/`.
Per rendere effettive le modifiche sui file di configurazione è necessario riavviare il server digitando con [[AmministrazioneSistema/Sudo|permessi di amministrazione]] il seguente comando in una [[AmministrazioneSistema/RigaDiComando|finestra di terminale]]: {{{
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'''. Per ulteriori informazioni, fare riferimento alla [[#Ulteriori_risorse|documentazione ufficiale]].
* '''!ServerRoot''': definisce la cartella in cui sono presenti i file del server. In '''Ubuntu''' è `/etc/apache2` e contiene tutti file di configurazione.
* '''!DocumentRoot''': definisce la cartella in cui sono presenti i file che verranno richiesti al server web. In '''Ubuntu''', in via predefinita, è la cartella `/var/www`.
* '''!ServerAdmin''': definisce l'indirizzo e-mail da includere nei messaggi di errore inviati al client.
* '''!ServerName''': contiente informazioni sull'hostname al quale il server Apache deve rispondere. Può essere specificato un hostname diverso per ogni VH.
* '''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 percorso 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.
* '''!MaxKeep``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.
* '''!KeepAlive``Timeout`''': 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.
* '''Min``Spare``Servers''': 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 ==
In via predefinita, '''Apache''' utilizza un unico file di configurazione globale per la gestione dei VH. Si tratta del file `/etc/apache2/sites-available/default`. Se il server dovrà servire un unico sito è possibile mantenere questa configurazione, personalizzando i campi necessari. In particolare:
* '''!DocumentRoot''': qualora si volesse utilizzare una cartella diversa da quella predefinita (`/var/www`).
* '''!ServerAdmin''': un amministratore diverso può essere specificato per ogni sito;
* '''!ServerName''': è possibile assegnare un valore diverso a questa direttiva per ogni VH 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]]);
||<> ||