+Pacchetti da installare::
+
+ apache2 apache2-doc
+
+Con la release 2.0 di Apache viene automaticamente resa disponibile anche la versione SSL (Secure Socket Layer, cpnnessioni criptate ) del web server.
+
+
+Configurazione di Apache
+----------------------------
+
+I file di configurazione di apache si trovano nella cartella: ``/etc/apache2`` e sono strutturati come descritto nel file ``/usr/share/doc/apache2/README.Debian.gz`` . Sostanzialmente lo schema e' il seguente:
+
+apache2.conf
+ File di configurazione principale del servizio
+ httpd.conf e' il vecchio file di configurazione di Apache1, presente per motivi di retrocompatibilita' e' generalemente vuoto.
+
+ports.conf
+ In questo file vengono specificate le porte sulle quali resta in ascolto il server web. Si noti che utilizzando dei virtual hosts generalmente viene specificata per questi la porta su cui ascoltare nel file di configurazione del virtual host, ad es: ``<VirtualHost *:80>``
+
+sites-available
+ In questa cartella vengono raccolti i file di configurazione dei virtual host disponibili.
+
+sites-enabled
+ In questa cartella sono contenuti dei link simbolici ai files in ../sites-available : se il link e' presente in questa cartella il virtual host e' abilitato.
+
+mods-available
+ Stesso metodo per i moduli: in questa cartella ci sono i moduli veri e propri che verranno poi abilitati grazie all'esistenza di link simbolici nella cartella mods-enabled .
+
+mods-enabled
+ Moduli abilitati, effettivamente caricati.
+
+apache.conf
+----------------
+
+File di configurazione del servizio Apache, contiene le impostazioni generiche (ad esempio utilizzo della RAM e risorse di sistema) dell'intero servizio. Nella configurazione di default per Debian non viene definito un vero e proprio sito di default ma solo dei virtual hosts.
+
+Guardiamo alcune direttive interessanti:
+
+timeout
+ Numero di secondi da aspettare prima di chiudere la connessione con il client. Questo parametro serve a liberare le risorse di sistema nel caso che un client, magar a causa di una connessione particolarmente lenta o instabili, tenga attivo indefinitivamente un processo di apache.
+
+KeepAlive
+ L'estensione keep-alive (http 1.0) congiuntamente alle connessioni persistenti (http 1.1) permettono al server di rispondere a piu' richieste dei client mediante la stessa connessione. Il protocoll http per sua natura e' connectio-less e senza stato, quindi ogni risorsa richiesta (per pagine web si pensi ad esempio alle immagini) dal client necessita di una connessione autonoma. Keep-alive permette di ottimizzare la connessione anche fino al 50% a seconda delle situazioni e contenuti.
+
+Server-Pool Size Regulation
+ Questi parametri (StartServers, MinSpareServers, ecc. Tutti spiegati nel manuale di apache) servono per attribuire le risorse di sistema disponibili al server Apache. Tenere questi parametri bassi serve a limitare il rischio di Denial of Service per il server, nel caso offra altri servizi. I settagi di default sono come sempre abbastanza conservativi, se si conta di usare il proprio Apache per servire un sito web con molti visitatori sara' necessario aumentare sensibilmente le impostazioni di base.
+
+AccessFileName
+ Il nome del file che viene onorato per modificare le impostazioni per una singola directory, legato alla direttiva AllowOverride .
+
+Installazione di PHP
+---------------------
+
+Pacchetti da installare: ``php5 php-pear``
+
+Test del modulo php
+~~~~~~~~~~~~~~~~~~~~
+
+Creare nella cartella ``/var/www`` (o altra cartella visibile) un file con estensione \*.php (es ``/var/ww/info.php`` contenete codice php eseguibile dall'interprete, ad es::
+
+ <?php phpinfo() ; ?>
+
+Questa funzione di php generera' la tipica pagina con le impostazioni attuali per php, se richiamando la pagina (es: ``http://localhost/info.php`` ) verra generata la pagina e resa disponibile tramite apache agli utenti allora l'integrazione tra PHP e Apache sara' corretta. In caso contrario se il client http proporra di scaricare la pagina invece che visualizzarla nel browser: non funziona l'interprete di php o sono mal configurati i MIME-type.
+
+
+Installazione del supporto per Mysql
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Installare i pacchetti::
+
+ php5-mysql phpmyadmin
+
+Controllare tramite la pagina php.info che sia abilitato il supporto per Mysql (ripartito Apache, ricaricare la pagina e cercare con CTRL+f ``mysql``).
+
+phpmyadmin
+~~~~~~~~~~~~~~~~~~~~~
+
+L'interfaccia web Phpmyadmin non richede necessariamente la presenza di un database Mysql locale, puo' infatti essere utilizzata per gestire databases remoti (il suo file di configurazione: ``/etc/phpmyadmin/config.inc.php`` ). Nel caso si voglia installare localmente Mysql si utilizzi il pacchetto ``mysql-server`` .
+
+Phpmyadmin dovrebbe essere disponibile all'URL: ``http://localhost/phpmyadmin/``, se cosi non fosse controllare che sia incluso il file ``/etc/phpmyadmin/apache.conf`` in ``/etc/apache2/conf.d/`` .
+
+
+
+
+Installazione del supporto per Postgresql
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Installare i pacchetti::
+
+ php5-pgsql phppgadmin
+
+Controllare tramite la pagina php.info che sia abilitato il supporto per PostgreSQL (ripartito Apache, ricaricare la pagina e cercare con CTRL+f ``pgsql``).
+
+Virtual hosts
+--------------------
+
+ * http://www.apacheweek.com/features/vhost
+
+ * http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html
+
+I virtual host permettono di avere piu' siti internet disponibile tramite lo stesso server web, eventualmente mappati su un solo indirizzo ip. Sono generalemente di due tipi:
+
+ * Basati su indirizzi ip diversi.
+ Se si ha la possibilita' di avere piu' indirizzi ip dedicati per i diversi siti che si vuole servire. ES: <VirtualHost 192.168.0.2:80> . Soluzione dispendiosa, si tende ad usarla solo se servono certificati di sicurezza (SSL ) dedicati per ogni sito.
+
+ * Basati su nomi di dominio diversi che puntano allo stesso ip.
+ Soluzione piu' economica e diffusa che si basa sulle funzionalita' di http 1.1 .
+
+Prenderemo in esame la gestione di virtual hosts basati su nomi di dominio.
+
+Gestione DNS
+~~~~~~~~~~~~~~~
+
+Prima di tutto per poter impostare i virtual hosts dovete avere un server DNS che risolva i vostri nomi di dominio sull'indirizzo ip del server. Questo si puo' ottenere in vari modi, ad es:
+
+ * Bind
+ Impostare i campi A nelle proprie zone gestite dal server dns Bind. Ad es: ``papo A 212.22.136.248``
+
+ * Servizio DNS dinamico on line.
+ Utilizzare un servizio come ad es: https://www.dyndns.com/ per mappare nomi di dominio sul proprio indirizzo ip, comodo ad esempio se si dispone di un indirzzo ip pubblico (anche se dinamico) per la propria connessione ad internet.
+
+ * Dnsmasq
+ Utilizzabile a livello locale per fare dei test, utilizzando direttive come: ``address=/davide.piffa.net/10.10.208.178``
+
+ * /etc/hosts
+ Per prove *strettamente a livello locale* potete impostare i nomi dei vostri virtual server nel file /etc/hosts .
+
+
+Testare con dig (disponibile nel pacchetto ``dnsutils`` ) il nome di dominio che si vuole utilizzare::
+
+ # dig 177.piffa.net
+
+ ; <<>> DiG 9.5.1-P1 <<>> 177.piffa.net
+ ;; global options: printcmd
+ ;; Got answer:
+ ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38036
+ ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
+
+ ;; QUESTION SECTION:
+ ;177.piffa.net. IN A
+
+ ;; ANSWER SECTION:
+ 177.piffa.net. 0 IN A 10.10.208.177
+
+ ;; Query time: 12 msec
+ ;; SERVER: 10.10.208.254#53(10.10.208.254)
+ ;; WHEN: Wed May 6 12:27:08 2009
+ ;; MSG SIZE rcvd: 47
+
+La parte interessante e' ``177.piffa.net. 0 IN A 10.10.208.177`` . Il nome di dominio 177.piffa.net viene risolto sull'ip 10.10.208.177 , nel nostro Apache (che risponde all'ip 10.10.208.177 ) dovra' essere disponibile un virtual host che corrisponde al nome ``177.piffa.net`` .
+
+Virtual host
+~~~~~~~~~~~~~~
+
+Esempio di Virtual host
+
+User Authentication
+------------------------
+
+link: http://www.apacheweek.com/features/userauth
+
+
+Cavets
+-----------
+
+Problemi di cache:
+
+ * Proxy: nei settaggi del browser specificare di non utilizzare un server proxy http per il sito web locale (o per gli altri che si stanno monitorando). Se si ha il controllo del proxy server: stopparlo, ricaricare la pagina (operazione che fallira'), far ripartire il proxy, ricaricare la pagina.
+
+ * Provare con un altro browser, o cercare di svuotare la cache chiudere/riaprire l'applicativo. Provare a fermare Apache, ricaricare la pagina (operazione che fallira'), far ripartire il Apache, ricaricare la pagina.
+
+