Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 7ce9f5a38ba3a7d20482e74d18086033 > files > 13

howto-text-it-2006-5mdv2010.0.noarch.rpm


Apache Compile HOWTOLuc de Louw

              luc at delouw.ch

   Diario delle revisioni
   Revisione 1.9.18 2003-02-09
   Aggiunto il supporto XML e Sablotron a PHP, eliminato il supporto per
   mod_jserv, aggiunto il supporto mod_jk, migliorato il supporto per
   Tomcat, aggiornato il software menzionato nell'HOWTO, minori
   miglioramenti al codice SGML.
   Revisione 1.9.17 2002-10-16
   Aggiornato il software menzionato. Ulteriori miglioramenti e riordini
   al codice SGML, quali metadata, chiamate e altro.
   Revisione 1.9.16 2002-07-04
   Aggiornato il software menzionato, aggiunta la configurazione
   LogFormat per mod_gzip. Aggiunto gdbm ai prerequisiti. Molti
   miglioramenti al codice SGML, come maggiori metadata e una sezione FAQ
   revisionata.
   Revisione 1.9.15 2002-06-19
   Aggiornato a mod_ssl-2.8.9-1.3.26 e rimossa la patch temporanea.
   Revisione 1.9.14 2002-06-19
   Aggiornato ad Apache 1.3.26 per correggere il buco di sicurezza CERT
   CA-2002-17 è fortemente raccomandato che gli utenti aggiornino
   immediatamente. Aggiunta (temporaneamente) la patch per ottenere che
   mod_ssl 2.8.8 funzioni con 1.3.26, Aggiunto --without-debug al
   configure di MySQL.
   Revisione 1.9.13 2002-06-15
   Aggiornamenti dei software menzionati, aggiunto come associare MySQL
   ad un IP specifico, alcuni piccoli cambiamenti e correzioni.
   Revisione 1.9.12 2002-04-22
   Aggiunti mod_gzip e mod_gunzip. Corretti alcuni errori, aggiornamenti
   dei software menzionati, separati i moduli addizionali in una propria
   sezione.
   Revisione 1.9.11 2002-04-07
   Corretti molti errori (non tecnici), aggiornamenti dei software
   menzionati.
   Revisione 1.9.11-pre1 2002-03-15
   Corretti alcuni errori di grammatica, aggiornamenti dei software
   menzionati.
   Revisione 1.9.10 2002-03-09
   Corretti alcuni errori di grammatica, aggiornamenti dei software
   menzionati.
   Revisione 1.9.9 2002-02-11
   Risolto un bug importante nel config di openssl, ristrutturato il
   documento, aggiunte fonti per ulteriori informazioni.
   Revisione 1.9.8 2002-02-08
   Aggiornamenti dei software menzionati e corretti alcuni errori.
   Revisione 1.9.7 2001-12-26
   Aggiornamenti dei software menzionati, provate le procedure dell'HOWTO
   con Linux in esecuzione su macchine IBM S/390 (zSeries) (Si veda
   "piattaforme" per maggiori informazioni). Aggiunto del supporto di
   base per Tomcat (solo Binari).
   Revisione 1.9.6 2001-10-27
   Aggiornamenti dei software menzionati e corretti alcuni errori.
   Revisione 1.9.5 2001-08-27
   Ancora un'altra riscrittura in DocBook 3.1.
   Revisione 1.9.4 2001-08-26
   Aggiornate le versioni dei software menzionati nel documento, corretti
   alcuni errori di battitura.
   Revisione 1.9.3 2001-06-23
   Attuale versione 2.0.0-pre3 nel formato Linux DocBook.
   Revisione 1.0.0 2000-08-05
   Prima pubblicazione del documento basato su html.

   Questo documento descrive come compilare il Webserver Apache con i
   moduli più importanti come mod_perl, mod_dav, mod_auth_ldap,
   mod_dynvhost, mod_roaming, mod_jserv e mod_php.

   Traduzione a cura di Michele Ferritto
   (m.ferritto@toglimi.virgilio.it), revisione a cura di Giuseppe Briotti
   (g.briotti@toglimi.mclink.it).
     _________________________________________________________________

   Sommario
   1. Introduzione

        1.1. Collaboratori e Contatti
        1.2. Perché ho scritto questo documento
        1.3. Cosa si suppone che sia questo documento
        1.4. Cosa questo documento non fa
        1.5. Piattaforme
        1.6. Informazioni sul Copyright
        1.7. Liberatoria
        1.8. Nuove Versioni
        1.9. Ringraziamenti
        1.10. Indicazioni
        1.11. Traduzioni
        1.12. A proposito dell'autore

   2. Prerequisiti

        2.1. Generali
        2.2. OpenSSL
        2.3. GNU Database System
        2.4. MySQL
        2.5. Compilare mm

   3. Ottenere, compilare e installare Apache con i suoi moduli di base

        3.1. Ottenere e ed estrarre i sorgenti di Apache
        3.2. mod_ssl
        3.3. mod_perl
        3.4. Configurare e compilare Apache

   4. Moduli aggiuntivi

        4.1. mod_dav
        4.2. auth_ldap
        4.3. mod_auth_mysql
        4.4. mod_dynvhost
        4.5. mod_roaming

   5. Distribuizione compressa

        5.1. mod_gzip
        5.2. mod_gunzip

   6. mod_php e i suoi prerequisiti

        6.1. Cosa è mod_php
        6.2. Prerequisiti
        6.3. Compilazione e installazione di PHP4

   7. PHP extensions

        7.1. APC (Alternative PHP-cache)
        7.2. Zend-Optimizer (_NON_ associare con APC-Cache!)

   8. Jakarta Tomcat

        8.1. Cosa è Tomcat
        8.2. Prerequisiti
        8.3. Download dei binari
        8.4. mod_jk

   9. Ulteriori Informazioni

        9.1. Gruppi di discussione
        9.2. Mailing List
        9.3. HOWTO
        9.4. Risorse Locali
        9.5. Siti Web

   10. Domande e Risposte

   Falla di Sicurezza in Apache inferiore alla versione 1.3.26

   NON usare nessuna versione di Apache più vecchia della 1.3.26. Si veda
   http://www.cert.org/advisories/CA-2002-17.html per maggiori
   informazioni
     _________________________________________________________________

1. Introduzione

1.1. Collaboratori e Contatti

Innanzitutto voglio ringraziare tutte quelle persone che hanno inviato
domande e suggerimenti rendendo possibile l'ulteriore sviluppo di questo
documento. Mi ha dimostrato che la condivisione del sapere è la strada
giusta. Vi incoraggio a mandarmi maggiori suggerimenti, semplicemente
scrivetemi un e-mail <luc at delouw.ch>.
     _________________________________________________________________

1.2. Perché ho scritto questo documento

Tutte le distribuzioni Linux che ho testato, hanno una configurazione
predefinita per Apache non ottimale. Inoltre, le maggiori distribuzioni non
hanno versioni aggiornate di Apache.

Infine, la maggior parte degli Unix commerciali vengono consegnati senza
Apache preinstallato, oppure utilizzano una configurazione molto insolita.

Poiché installo un gran numero di server web personalizzati su Unix
differenti, ho scritto un documento in formato testo e l'ho messo sul mio
sito web affinché potessi accederci al lavoro. In seguito un amico postò
l'URL su di una mailing list e arrivò la prima domanda. Per questo decisi di
aggiungere informazioni alla pagina.

Dopo che molte persone richiesero il documento come HOWTO »ufficiale«
scritto in SGML, ho deciso di prepararlo per farcelo diventare.
     _________________________________________________________________

1.3. Cosa si suppone che sia questo documento

Compilare tutti gli elementi descritti più avanti necessita di molte opzioni
di configurazione che nessuno può imparare a memoria. Si suppone che sia un
testo da copia-e-incolla per compilare Apache e i suoi compari.

Inoltre, si dovrebbe imparare come costruire da se un server web Apache
completo, per rimanere indipendente da qualsiasi distributore Linux.
     _________________________________________________________________

1.4. Cosa questo documento non fa

È semplicemente un documento, non uno script che fa il lavoro al proprio
posto. Si devono eseguire tutti i passi da soli.
     _________________________________________________________________

1.5. Piattaforme

Il documento originale era valido per tutte le piattaforme Unix più
conosciute. Attualmente gli HOWTO sono separati per ciascuna piattaforma. Si
può trovare lo stesso documento addattato per:

     * Linux (Questo Documento)
     * IBM AIX 4.3 e 5.1L
     * Sun Solaris 6/7/8
     * Hewlett-Packard HP-UX 11
     * {Free|Net|Open}-BSD

   Nota importante per gli utenti che eseguono Linux su IBM S/390
   (zSeries): PostgreSQL e Jserv non si compilano su questo sistema.
   Tutti gli altri programmi e moduli menzionati nell'HOWTO funzionano
   perfettamente

   Altre piattaforme Unix: Sentitevi liberi di creare un account ospite
   per me sulla vostra piattaforma Unix, così che possa dare uno sguardo
   alle differenze.

   Utenti Windows: Mi dispiace, sono troppo giovane per un infarto, avete
   bisogno di aggiornare la vostra macchina con un »vero« sistema
   operativo ;-)
     _________________________________________________________________

1.6. Informazioni sul Copyright

This document is copyrighted (c) 2000, 2001, 2002, 2003 Luc de Louw and is
distributed under the terms of the Linux Documentation Project (LDP)
license, stated below.

Unless otherwise stated, Linux HOWTO documents are copyrighted by their
respective authors. Linux HOWTO documents may be reproduced and distributed
in whole or in part, in any medium physical or electronic, as long as this
copyright notice is retained on all copies. Commercial redistribution is
allowed and encouraged; however, the author would like to be notified of any
such distributions.

All translations, derivative works, or aggregate works incorporating any
Linux HOWTO documents must be covered under this copyright notice. That is,
you may not produce a derivative work from a HOWTO and impose additional
restrictions on its distribution. Exceptions to these rules may be granted
under certain conditions; please contact the Linux HOWTO coordinator at the
address given below.

In short, we wish to promote dissemination of this information through as
many channels as possible. However, we do wish to retain copyright on the
HOWTO documents, and would like to be notified of any plans to redistribute
the HOWTOs.

If you have any questions, please contact <linux-howto at metalab.unc.edu>
     _________________________________________________________________

1.7. Liberatoria

Non può essere accettata nessuna responsabilità per il contenuto di questo
documento. Si usino i concetti, gli esempi e altri contenuti, a proprio
rischio e pericolo. Essendo questo documento una nuova edizione, potrebbero
esserci errori ed inaccuratezze che potrebbero danneggiare il proprio
sistema. Si proceda con cautela e, sebbene sia altamente sgradevole,
l'autore(i) non si prende nessuna responsabilità.

Tutti i copyright appartengono ai rispettivi proprietari, se non
diversamente specificato. L'uso di un termine in questo documento non
dovrebbe interessare la validità di alcun marchio registrato o di servizio.

La nomina di particolari prodotti o marchi non deve essere vista come un
sostegno.

Si raccomanda fortemente di effettuare il backup del proprio sistema prima
di effettuare installazioni importanti e continuare a farlo ad intervalli
regolari.
     _________________________________________________________________

1.8. Nuove Versioni

Questa è la 15ma Versione

Nuove versioni di questo documento saranno annunciate presso
http://freshmeat.net/projects/apache-compile-howto/?topic_id=905

L'ultima versione di questo documento si può trovare presso
http://www.delouw.ch/linux

     * HTML.
     * Postscript (formato ISO A4).
     * Acrobat PDF.
     * Sorgente SGML.
     * tarball gzip HTML.
     _________________________________________________________________

1.9. Ringraziamenti

Voglio ringraziare tutte le simpatiche persone presso <discuss at
linuxdoc.org> per avermi supportato nella stesura degli HOWTO
     _________________________________________________________________

1.10. Indicazioni

Le indicazioni sono sicuramente benvenute per questo documento. Senza i
vostri contributi e suggerimenti, non esisterebbe. Per favore inviate le
vostre aggiunte, commenti e critiche al seguente indirizzo email: <luc at
delouw.ch>.
     _________________________________________________________________

1.11. Traduzioni

Al momento esistono traduzioni in:

     * Tedesco
     * Francese

   Le traduzioni in altre lingue sono sempre benvenute. Se si traduce
   questo documento, per favore me lo si faccia sapere, così che possa
   inserire un link qui.
     _________________________________________________________________

1.12. A proposito dell'autore

Luc (in inglese Luke) ha 29 anni e traffica con i computer da 20.
Attualmente lavora come Unix System Engineer per una società IT a Kloten
(Zurigo), Svizzera. L'obiettivo principale è sviluppare tutte le varietà di
Sistemi innovativi che girano su Linux (e altri Un*x) . Inoltre, tutti i
lavori "impossibili" per le più importanti piattaforme Un*x finiscono sulla
sua scrivania (si, è divertente e lui lo adora!)
     _________________________________________________________________

2. Prerequisiti

2.1. Generali

     * flex 2.54
     * bison 1.28
     * autoconf 2.52
     * automake 1.4
     * libtool 1.4
     * yacc 91.7.30
     * freetype2-devel [1]
     * re2c [2]

   Segue...

   Tutte le più importanti distribuzioni dovrebbero includere questi
   prerequisiti generali.
     _________________________________________________________________

2.2. OpenSSL

2.2.1. Cosa è OpenSSL



   Il progetto OpenSSL è uno sforzo collaborativo per sviluppare un
   insieme di strumenti robusto, di qualità commerciale, completo e Open
   Source che implementi i Secure Socket Layer (SSL v2/v3) e i protocolli
   Transport Layer Security (TLS v1) così pure una libreria per la
   crittografia per usi generici assolutamente robusta. Il progetto viene
   gestito da una comunità di volontari sparsa per il mondo, che usa
   Internet per trasmettere, pianificare e sviluppare l'insieme di
   strumenti OpenSSL e la documentazione relativa.

   OpenSSL si basa sulla eccellente libreria SSLeay sviluppata da Eric A.
   Young e Tim J. Hudson. L'insieme di strumenti OpenSSL viene rilasciato
   sotto una licenza stile Apache, che fondamentalmente significa che si
   è liberi di ottenerli e utilizzarli per usi commerciali e non
   commerciali assoggetandosi ad alcune semplici condizioni di licenza.

   Dal punto di vista degli autori, è la base per costruire un server
   Unix sicuro con software Open Source, è necessario per tutti i più
   importanti prodotti come mod_ssl, OpenSSH e molta altra roba che
   fornisce l'elaborazione dei dati crittografata

--www.openssl.org

   OpenSSL fornisce le librerie e i file include necessari ai prodotti
   menzionati precedentemente e fornisce inoltre una Applicazione per
   creare Certificati Server e client.
     _________________________________________________________________

2.2.2. Download dei sorgenti

Sito di origine http://www.openssl.org
     _________________________________________________________________

2.2.3. Compilazione e installazione
cd /usr/local
tar -xvzf openssl-0.9.7.tar.gz

cd openssl-0.9.7

./config shared

make
make test
make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig

     Selezionare la propria CPU per migliorare la velocità: Di default
     il Makefile genera il codice per la CPU i486. Si può cambiare ciò
     editando il Makefile dopo aver eseguito config shared. Si cerchi
     -m486 e lo si sostituisca, per esempio, con -march=athlon
     _________________________________________________________________

2.3. GNU Database System

2.3.1. Cosa è gdbm



   GNU dbm è un set di routine di database, che usa l'hashing
   estensibile. Funziona in modo simile alle routine standard Unix dbm.

--www.gnu.org/software/gdbm

   GNU dbm è una applicazione molto importante utilizzata da quasi tutte
   le distribuzioni. Perciò viene installata per convenzione su tutte le
   distribuzioni che ho provato.

   Con tutta probabilità i necessari file header, vincolanti per
   compilare Apache con mod_rewrite e PHP, normalmente non sono
   installati. Per favore si consultino i CD/DVD della distribuzione e si
   installi il relativo pacchetto devel (La versione può variare):
rpm -i gdbm-devel-1.8.0-546

   Questa procedura è stata verificata per SuSE e Redhat. Per favore si
   confermi per altri sistemi basati su RPM come Mandrake. Debian seguirà
   prima possibile.

   Gli utenti di sistemi basati su Debian possono installare gdbm con il
   seguente:
apt-get install libgdbmg1-dev
     _________________________________________________________________

2.3.2. Compilare e installare da se

Nell'improbabile caso che la propria distribuzione non contenga gdbm qui ci
sono le istruzioni per compilarlo.
./configure

make
make install

ldconfig
     _________________________________________________________________

2.4. MySQL

2.4.1. Cose'è MySQL

MySQL è un Database molto veloce, potente e piacevole da maneggiare.

Specialmente per applicazioni web dove la maggior parte degli accessi sono
in lettura e pochi in scrittura, MySQL è la scelta migliore. La versione più
recente è anche in grado di gestire le transazioni. Se si pianifica una
applicazione web che deve scrivere parecchi Dati nel database, forse
PostgreSQL è più adatto, si veda la Sezione 6.2.4 per i suggerimenti
sull'installazione

Si necessita della C-API da MySQL per compilare PHP se si desidera il
supporto a MySQL in PHP. È anche necessaria se si vuole utilizzare
mod_authmysql, si veda la Sezione 4.3 per maggiori informazioni
     _________________________________________________________________

2.4.2. Download

Sito di origine: http://www.mysql.com/downloads/
     _________________________________________________________________

2.4.3. Compilazione e installazione
cd /usr/local
tar -xvzf mysql-3.23.55.tar.gz
cd mysql-3.23.55

./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-innodb \
--without-debug

make
make install

/usr/local/mysql/bin/mysql_install_db
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf
ldconfig

   Per migliorare la sicurezza, si aggiunga un utente MySQL sul proprio
   sistema ad es. »mysql«.
chown -R mysql /usr/local/mysql/var

   Si potrebbe desiderare di lanciare automaticamente MySQL all'avvio, si
   copi /usr/local/mysql/share/mysql/mysql.server dentro /etc/init.d/ (o
   dovunque si trovino i propri script rc) e si crei il corrispondente
   link simbolico nelle directory runlevel.
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/

ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/S20mysql
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/K20mysql
     _________________________________________________________________

2.4.4. Rendere sicuro MySQL

Questa parte è opzionale e descrive come associare il demone MySQL all'IP
localhost

Suggerisco semplicemente di associare MySQL all'interfaccia di loopback
127.0.0.1. Ciò assicura che nessuno possa connettersi al Demone MySQL
tramite la rete. Ma naturalmente, questo ha senso solo se MySQL gira sulla
stessa macchina del server web.

si modifichi la linea 107 del file /etc/init.d/mysql.server come mostrato di
seguito:

Linea originale:
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&

   Linea modificata:

$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--bind-address=127.0.0.1&  (1)

   (1) 
          Qui si può definire a quale interfaccia MySQL deve essere
          associato

   In alternativa, si può completamente disabilitare la funzionalità di
   rete di MySQL.
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--skip-networking &
     _________________________________________________________________

2.5. Compilare mm

2.5.1. Cosa è mm



   MM è una libreria di astrazione di livello 2 che semplifica l'utilizzo
   della memoria condivisa tra i processi biforcati (e in questo modo
   fortemente collegati) sulle piattaforme Unix. Sul primo strato
   nasconde tutti i dettagli di implementazione dipendenti dalla
   piattaforma (allocazione e locking), mentre negozia con i segmenti di
   memoria condivisa, e sul secondo strato fornisce una API di alto
   livello stile malloc(3) per un conveniente e ben noto modo di lavorare
   con le strutture dati contenute all'interno di questi segmenti di
   memoria condivisa.

--www.engelschall.com

   È una libreria comune che permette ai programmatori Unix di
   semplificare gli accessi shm (Memoria condivisa). Viene utilizzata in
   molti prodotti, ad es. PHP e mod_ssl
     _________________________________________________________________

2.5.2. Download

Sito di origine: ftp://ftp.ossp.org/pkg/lib/mm/mm-1.2.2.tar.gz
     _________________________________________________________________

2.5.3. Compilazione e installazione
cd /usr/local

tar -xvzf mm-1.2.2.tar.gz

cd mm-1.2.2

./configure
make
make test
make install

ldconfig
     _________________________________________________________________

3. Ottenere, compilare e installare Apache con i suoi moduli di base

3.1. Ottenere e ed estrarre i sorgenti di Apache

3.1.1. Cosa è Apache



   Il progetto Apache è uno sforzo collaborativo di sviluppo software che
   aspira a creare una implementazione robusta, di livello commerciale,
   completa e con il codice sorgente liberamente disponibile, di un
   server (Web) HTTP. Il progetto è gestito congiuntamente da un gruppo
   di volontari in giro per il mondo, che usano Internet e il Web per
   trasmettere, pianificare e sviluppare il server e la documentazione
   relativa. Questi volontari sono conosciuti come Gruppo Apache. In
   aggiunta, centinaia di utenti hanno contribuito al progetto con idee,
   codice e documentazione. Questo file è volto a descrivere brevemente
   la storia del Gruppo Apache e riconoscerne i vari collaboratori.

--www.apache.org

   È semplicemente il miglior software per Server Web, molto flessibile
   da configurare per sopperire alle proprie necessità, ed è
   E-S-T-R-E-M-A-M-E-N-T-E stabile. Personalmente non ho mai avuto
   esperienze di crash in un ambiente di produzione (=materiale non
   sperimentale)
     _________________________________________________________________

3.1.2. Download dei sorgenti

Sito di origine http://www.apache.org/dist/httpd/
cd /usr/local/

tar -xvzf apache_1.3.27.tar.gz
     _________________________________________________________________

3.1.3. Patch per siti di larga scala

Se il proprio server web deve rispondere a molte richieste
contemporaneamente e la macchina è sufficientemente robusta per fare questo,
si può modificare il limite massimo di processi in esecuzione

Si faccia il download della patch da:
http://www.delouw.ch/linux/apache-patch_HARD_SERVER_LIMIT.txt
--- httpd.h     Thu Mar 21 18:07:34 2002
+++ httpd.h-new Sun Apr  7 13:34:11 2002
@@ -320,7 +320,7 @@
 #elif defined(NETWARE)
 #define HARD_SERVER_LIMIT 2048
 #else
-#define HARD_SERVER_LIMIT 256
+#define HARD_SERVER_LIMIT 512
 #endif
 #endif

   Questa patch aumenta il numero massimo di client concorrenti a 512. Ci
   si senta liberi di aumentarlo ulteriormente, se si è riusciti a
   modificare il proprio kernel ed il file /etc/security/limits.conf

   Evitare di esaurire i task

   Con le impostazioni sbagliate ciò potrebbe portare ad un
   »self-denial-of-service-attack«. Ci si assicuri di aver lasciato
   sufficienti processi per root

   Si applichi la patch con:
cd /usr/local/apache_1.3.27/src/include

patch -p0 < apache-patch_HARD_SERVER_LIMIT.txt
     _________________________________________________________________

3.2. mod_ssl

3.2.1. Cosa è mod_ssl



   Questo modulo fornisce la crittografia forte per il server web Apache
   1.3 tramite i Secure Socket Layer (SSL v2/v3) e i protocolli Transport
   Layer Security (TLS v1) con l'aiuto dell'insieme di strumenti Open
   Source SSL/TLS OpenSSL, il quale si basa su SSLeay di Eric A. Young e
   Tim J. Hudson.

--www.modssl.org

   Questo modulo è necessario per abilitare Apache per le richieste SSL
   (https). Applica una patch al codice sorgente ed estende le sue API
   (Application Programming Interface). Il risultato viene chiamato EAPI
   (Extended Application Programming Interface).

   Uso delle opzioni del compilatore durante la compilazione dei moduli

   Ci si assicuri che ogni modulo per il proprio server Apache sia
   compilato con l'opzione -DEAPI, altrimenti il Server web potrebbe
   bloccarsi o non avviarsi affatto.

   Quasi tutti i moduli che conosco aggiungono l'opzione -DEAPI da soli,
   eccettuati mod_jserv e mod_jk
     _________________________________________________________________

3.2.2. Download dei sorgenti

Sito di origine:http://www.modssl.org
     _________________________________________________________________

3.2.3. Applicazione della patch ai sorgenti di Apache
cd /usr/local/

tar -xvzf mod_ssl-2.8.12-1.3.27.tar.gz
cd mod_ssl-2.8.12-1.3.27/

./configure --with-apache=../apache_1.3.27
     _________________________________________________________________

3.3. mod_perl

3.3.1. Cosa è mod_perl



   Con mod_perl è possibile scrivere moduli Apache interamente in Perl.
   In aggiunta, l'interprete persistente, incorporato nel server, evita
   il sovraccarico di lanciare un interprete esterno e la penalizzazione
   del tempo di avvio del Perl.

--perl.apache.org

   mod_perl è una alternativa ai cgi-bin. I cgi tipicamente generano un
   nuovo processo per ogni richiesta e producono sovraccarico. Con
   mod_perl, l'interprete perl viene caricato in modo persistente nel
   server Apache e non ha bisogno di generare i processi per ogni
   richiesta.
     _________________________________________________________________

3.3.2. Download dei sorgenti

Sito di origine: http://www.apache.org/dist/perl
     _________________________________________________________________

3.3.3. Compilazione e installazione
cd /usr/local

tar -xvzf mod_perl-1.27.tar.gz

cd mod_perl-1.27

perl Makefile.PL \
EVERYTHING=1 \
APACHE_SRC=../apache_1.3.27/src \
USE_APACI=1 \
PREP_HTTPD=1 \
DO_HTTPD=1

make
make install

   Mod_perl non può essere compilato come DSO

   Non si compili mod_perl come DSO (Dynamic Shared Object)! Secondo
   varie fonti, Apache potrebbe bloccarsi (non ho mai provato).
     _________________________________________________________________

3.4. Configurare e compilare Apache

Ora che i due moduli statici mod_ssl e mod_perl sono configurati ed ai
sorgenti di Apache è stata applicata la patch, possiamo procedere con la
compilazione di Apache.
     _________________________________________________________________

3.4.1. Compilazione e installazione
EAPI_MM="/usr/local/mm-1.2.2" SSL_BASE="/usr/local/ssl" \
./configure \
--enable-module=unique_id \
--enable-module=rewrite \
--enable-module=speling \
--enable-module=expires \
--enable-module=info \
--enable-module=log_agent \
--enable-module=log_referer \
--enable-module=usertrack \
--enable-module=proxy \
--enable-module=userdir \
--enable-module=so \
--enable-shared=ssl \
--enable-module=ssl \
--activate-module=src/modules/perl/libperl.a \
--enable-module=perl

make
make install
     _________________________________________________________________

3.4.2. Creare certificati SSL auto-firmati
cd /usr/local/ssl/bin

./openssl req -new > new.cert.csr
./openssl rsa -in privkey.pem -out new.cert.key
./openssl x509 -in new.cert.csr -out new.cert.cert \
-req -signkey new.cert.key -days 999

cp new.cert.key /usr/local/apache/conf/ssl.key/server.key
cp new.cert.cert /usr/local/apache/conf/ssl.crt/server.crt

     Nome comune: OpenSSL chiede diverse cose. Un errore comune è quello
     di inserire un "nome comune" sbagliato. Questo deve essere lo FQHN
     (Fully Qualified HostName) del proprio Server, ad es. www.foo.org
     _________________________________________________________________

4. Moduli aggiuntivi

4.1. mod_dav

4.1.1. Cosa è mod_dav



   mod_dav è un modulo Apache per fornire capacità DAV (RFC 2518) al
   proprio server web Apache. È un modulo Open Source, fornito sotto una
   licenza stile Apache.

--www.webdav.org

   Dal punto di vista degli autori:

   DAV significa: »Distributed authoring and Versioning«. Permette di
   gestire il proprio sito web in modo simile a un filesystem. È pensato
   per rimpiazzare l'upload tramite ftp al server web.

   DAV è supportato da tutti gli strumenti per lo sviluppo web (le
   versioni più recenti) e sta per diventare uno standard largamente
   accettato per il web publishing.
     _________________________________________________________________

4.1.2. Download dei sorgenti

Sito di origine: http://www.webdav.org/mod_dav/
     _________________________________________________________________

4.1.3. Compilazione e installazione
cd /usr/local

tar -xvzf mod_dav-1.0.3-1.3.6.tar.gz
cd mod_dav-1.0.3-1.3.6

./configure --with-apxs=/usr/local/apache/bin/apxs

make
make install

     Nome del file che disorienta: Il nome del file mod_dav-1.0.3-1.3.6
     suggerisce che possa funzionare solo con Apache 1.3.6 ma
     attualmente funziona con tutti gli Apache >= 1.3.6
     _________________________________________________________________

4.2. auth_ldap

4.2.1. Cosa è auth_ldap



   auth_ldap è un modulo di autenticazione LDAP per Apache, il server web
   più conosciuto del mondo. auth_ldap ha prestazioni eccellenti e
   supporta Apache sia su Unix che su Windows NT. Ha inoltre il supporto
   per LDAP su SSL ed una modalità che permette ai client Frontpage di
   gestire i permessi web utilizzando LDAP per l'autenticazione.

--www.rudedog.org

   Dal punto di vista degli autori:

   Se si vogliono unificare le proprie infrastrutture di login in una
   unica base comune di utenti/password, LDAP (Lightweight Directory
   Access Protocol) è il modo giusto per farlo. LDAP è uno standard
   aperto e largamente supportato.

   Infrastrutture di login per LDAP:

   Come gli Unix-Login per Linux, Solaris (altri?), l'FTP-Login (alcuni
   demoni ftp), l'autenticazione di base http, l'autenticazione e
   amministrazione di ruolo per Tarantella, l'autenticazione Samba (2.2.x
   dovrebbe supportarlo), anche LDAP è basato sul ruolo. Questo
   significa, per esempio, che si può definire un ruolo »manager« e
   assegnargli un utente come membro cosicché questo utente possa
   collegarsi ovunque sia permesso il collegamento ad un manager.
     _________________________________________________________________

4.2.2. Download dei sorgenti

Sito di origine: http://www.rudedog.org/auth_ldap/
     _________________________________________________________________

4.2.3. Compilazione e installazione
cd /usr/local

tar -xvzf auth_ldap-1.6.0.tar.gz

cd auth_ldap-1.6.0

./configure --with-apxs=/usr/local/apache/bin/apxs \
--with-sdk=openldap

make
make install
     _________________________________________________________________

4.3. mod_auth_mysql

4.3.1. Cosa è mod_auth_mysql

È un modulo di autenticazione http di base. Permette di mantenere
agevolmente il proprio utente in un Database MySQL
     _________________________________________________________________

4.3.2. Download dei sorgenti

Sito di origine: ftp://ftp.kciLink.com/pub/mod_auth_mysql.c.gz
     _________________________________________________________________

4.3.3. Compilazione e installazione
gunzip mod_auth_mysql.c.gz

/usr/local/apache/bin/apxs \
-c -I/usr/local/mysql/include \
-L/usr/local/mysql/lib/mysql \
-lmysqlclient -lm mod_auth_mysql.c

cp mod_auth_mysql.so /usr/local/apache/libexec/

   Si aggiunga questa linea al proprio httpd.conf:
LoadModule mysql_auth_module libexec/mod_auth_mysql.so

   E dove vengono aggiunti gli altri moduli:
AddModule mod_auth_mysql.c

   Ci si assicuri che il percorso delle librerie e degli include di MySQL
   sia corretto.

     Percorso della libreria: Ci si assicuri che il percorso
     /usr/local/mysql/lib/mysql sia inserito nel file /etc/ld.so.conf
     prima della compilazione
     _________________________________________________________________

4.3.4. Esempio di configurazione

   Esempio 1. /usr/local/apache/conf/httpd.conf
<location /manual/>
  AuthType Basic
  AuthUserfile /dev/null
  AuthName Testing
  AuthGroupFile /dev/null
  AuthMySQLHost localhost
  AuthMySQLCryptedPasswords Off
  AuthMySQLUser root
  AuthMySQLDB users
  AuthMySQLUserTable user_info
  <Limit GET POST>
    require valid-user
  </limit>
</location>
     _________________________________________________________________

4.3.4.1. Script per la creazione di un database MySQL

si digiti semplicemente:
mysql < authmysql.sql

   Il File authmysql.sql contiene:

   Esempio 2. authmysql.sql
  create database http_users;
  connect http_users;

  CREATE TABLE user_info (
  user_name CHAR(30) NOT NULL,
  user_passwd CHAR(20) NOT NULL,
  user_group CHAR(10),
  PRIMARY KEY (user_name);
     _________________________________________________________________

4.4. mod_dynvhost

4.4.1. Cosa è mod_dynvhost

È un modulo che permette di definire nuovi Host Virtuali "al volo".
Semplicemente si crei una nuova directory nel proprio percorso vhost, è
tutto. Non è necessario far ripartire il server web

È una buona soluzione di hosting virtuale di massa per gli ISP
     _________________________________________________________________

4.4.2. Download dei sorgenti

Sito di origine:
http://funkcity.com/0101/projects/dynvhost/mod_dynvhost.tar.gz
     _________________________________________________________________

4.4.3. Compilazione e installazione
cd /usr/local

tar -xvzf mod_dynvhost.tar.gz

cd dynvhost/

/usr/local/apache/bin/apxs -i -a -c mod_dynvhost.c

     Verificare httpd.conf: Nota: Si guardi nel file httpd.conf per
     verificare che mod_dynvhost.so sia caricato all'avvio:
LoadModule dynvhost_module libexec/mod_dynvhost.so
     _________________________________________________________________

4.4.4. Esempio di configurazione

   Esempio 3. /usr/local/apache/conf/httpd.conf
<DynamicVirtualHost /usr/local/apache/htdocs/vhosts/>
  HomeDir /
</DynamicVirtualHost>

   Ora si crei una directory per ciascun host virtuale in
   /usr/local/apache/htdocs/vhosts/

   ad es.

   /usr/local/apache/htdocs/vhosts/foo.bar.org

   Non è necessario far ripartire il server web
     _________________________________________________________________

4.5. mod_roaming

4.5.1. Cosa è mod_roaming



   Con mod_roaming si può usare il proprio server web Apache come un
   Access Server Roaming di Netscape. Questo permette di conservare le
   preferenze, i bookmark, gli indirizzi, i cookie ecc. di Netscape
   Comunicator 4.5 sul server, così da poter utilizzare (e aggiornare) le
   stesse impostazioni, da qualsiasi Netscape Communicator 4.5 che può
   accedere al server.

--www.klomp.org/mod_roaming/

   Dal punto di vista degli autori:

   Mod_roaming è certamente di grande utilità. Sfortunatamente non
   funziona sulle connessioni tramite proxy. Si possono mantenere
   sincronizzati i propri bookmark di Netscape 4.x su differenti
   macchine. Non è supportato da nessun altro browser, inclusi Mozilla e
   Netscape 6.x.
     _________________________________________________________________

4.5.2. Download dei sorgenti

Sito di origine: http://www.klomp.org/mod_roaming/
     _________________________________________________________________

4.5.3. Compilazione e installazione
cd /usr/local

tar -xvzf mod_roaming-1.0.2.tar.gz

cd mod_roaming-1.0.2

/usr/local/apache/bin/apxs -i -a -c mod_roaming.c

     Verificare httpd.conf: Si controlli httpd.conf perché mod_roaming
     venga caricato all'avvio:
LoadModule roaming_module libexec/mod_roaming.so
     _________________________________________________________________

4.5.4. Esempio di configurazione

   Esempio 4. /usr/local/apache/conf/httpd.conf
RoamingAlias /roaming /usr/local/apache/roaming
<Directory /usr/local/apache/roaming>
  AuthUserFile /usr/local/apache/conf/roaming-htpasswd
  AuthType Basic
  AuthName "Roaming Access"
  <Limit GET PUT MOVE DELETE>
    require valid-user
  </Limit>
</Directory>
     _________________________________________________________________

5. Distribuizione compressa

Fondamentalmente, ci sono due moduli disponibili per la compressione
dell'otuput: mod_gzip e mod_gunzip. Utilizzano approcci differenti per
raggiungere l'obiettivo della riduzione di banda.

Mod_gunzip si aspetta il file compresso sul filesystem e lo decomprime se il
browser non può manipolare dati compressi. Il beneficio consiste
nell'utilizzo minimo della cpu, poiché la maggior parte dei browser può
maneggiare contenuto compresso. Per contro, la maggior parte degli attuali
contenuti viene fornita dinamicamente, ad es. PHP, e questi vengono forniti
non compressi.

Mod_gzip non necessita dei file compressi sul sistema, tutto il contenuto
definito viene compresso prima della consegna. Il beneficio consiste
nell'avere compresso anche il contenuto generato dinamicamente, il rovescio
della medaglia è un elevato utilizzo della cpu, poiché ogni richiesta deve
essere compressa al volo. Mod_gzip può maneggiare dati già compressi, ad es.
index.html.gz, e inviarli così come sono.

In conclusione: si deve decidere attentamente quale dei due moduli ha più
senso. Se si deve pagare per ogni GB fornito e la potenza della CPU non è
importante, allora mod_gzip è la scelta giusta. Se conta il tempo di
risposta (ritardo tra la richiesta e la consegna) e la larghezza di banda è
economica o illimitata, mod_gunzip corrisponde meglio alle proprie
necessità.

Una buona pagina che può aiutare a prendere questa decisone, è il documento
su mod_gunzip di Martin Kiff
http://www.innerjoin.org/apache-compression/howto.html
     _________________________________________________________________

5.1. mod_gzip

5.1.1. Download dei sorgenti

Sito di origine:
http://prdownloads.sourceforge.net/mod-gzip/mod_gzip-1.3.26.1a.tgz?download
     _________________________________________________________________

5.1.2. Compilazione e installazione

Per compilare con successo mod_gzip è necessario modificare il Makefile e
fornire il percorso corretto per apxs
make
make install
     _________________________________________________________________

5.1.3. Esempio di configurazione

Si metta il seguente contenuto nel proprio
/usr/local/apache/conf/httpd.conf:

   Esempio 5. /usr/local/apache/conf/httpd.conf
mod_gzip_on                 Yes
mod_gzip_can_negotiate      Yes
mod_gzip_dechunk            Yes
mod_gzip_minimum_file_size  600
mod_gzip_maximum_file_size  0
mod_gzip_maximum_inmem_size 100000
mod_gzip_keep_workfiles     No
mod_gzip_temp_dir           /usr/local/apache/gzip
mod_gzip_item_include       file \.html$
mod_gzip_item_include       file \.txt$
mod_gzip_item_include       file \.jsp$
mod_gzip_item_include       file \.php$
mod_gzip_item_include       file \.pl$
mod_gzip_item_include       mime ^text/.*
mod_gzip_item_include       mime ^application/x-httpd-php
mod_gzip_item_include       mime ^httpd/unix-directory$
mod_gzip_item_include       handler ^perl-script$
mod_gzip_item_include       handler ^server-status$
mod_gzip_item_include       handler ^server-info$
mod_gzip_item_exclude       file \.css$
mod_gzip_item_exclude       file \.js$
mod_gzip_item_exclude       mime ^image/.*

   Si potrebbe voler loggare il risultato della compressione nell'access
   log. Questo può essere ottenuto cambiando la direttiva LogFormat su
   /usr/local/apache/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" mod_gzi
p: %{mod_gzip_compression_ratio}npct." combined
     _________________________________________________________________

5.2. mod_gunzip

5.2.1. Download dei sorgenti

Sito di origine: http://www.oldach.net/mod_gunzip.tar.gz
     _________________________________________________________________

5.2.2. Compilazione e installazione
tar -xvzf mod_gunzip.tar.gz
cd mod_gunzip-2

/usr/local/apache/bin/apxs -i -a -c -lz mod_gunzip.c
     _________________________________________________________________

5.2.3. Esempio di configurazione

Inserire il seguente contenuto nel proprio
/usr/local/apache/conf/httpd.conf:

   Esempio 6. /usr/local/apache/conf/httpd.conf
AddType text/html .htmz
AddHandler send-gunzipped .htmz

   Ora si possono comprimere i propri file html e rinominarli ad es. in:
gzip index.html
mv index.html.gz index.htmz

   Naturalmente bisogna modificare tutti i link a htmz, ad es. <a
   href="pagina.htmz">Qualche pagina</a>
     _________________________________________________________________

6. mod_php e i suoi prerequisiti

6.1. Cosa è mod_php



   PHP è un linguaggio di scripting lato server, indipendente dalla
   piattaforma con HTML incorporato.

   All'inizio era un semplice processore di guestbook, ed è cresciuto
   sempre di più. Dalla Versione 3 è veramente un linguaggio per lo
   sviluppo Web

--www.php.net

   Dalla Versione 4, PHP è sufficientemente robusto e adatto per
   applicazioni web enterprise. È potente, supporta in maniera nativa
   pressoché tutti i più importanti database e gli altri tramite ODBC
   (Open DataBase Connectivity). È leggermente più veloce di ASP su
   sistemi Windows a parità di Hardware.

   Sono disponibili altre estensioni come APC (Alternative PHP Cache),
   che accelerano l'elaborazione di circa il 50-400% (dipende dal codice
   php che si scrive)
     _________________________________________________________________

6.2. Prerequisiti

A seconda delle necessità, ci sono alcuni software da installare prima. Un
software già installato, in accordo a questo documento, è MySQL poiché è
richiesto da mod_auth_mysql.
     _________________________________________________________________

6.2.1. Client IMAP

6.2.1.1. Cosa è il client IMAP

IMAP significa »Internet Mail Application Protocol« ed è un sostituto del
protocollo POP (Post Office Protocol). Permette di tenere tutte le e-mail in
differenti cartelle sul server che viene (dovrebbe essere) sottoposto a
backup - Mai più e-mail importanti perse a causa del blocco del proprio hard
disk locale
     _________________________________________________________________

6.2.2. Download dei sorgenti

Sito di origine: http://www.washington.edu/imap/
     _________________________________________________________________

6.2.3. Compilazione e installazione
cd /usr/local

tar -xvfz imap.tar.Z

cd imap

make slx SSLTYPE=nopwd  (1)

   (1) 
          Con il parametro SSLTYPE=unix si stabilisce la necessità o meno
          del supporto SSL. L'omissione sta a significare nessun supporto
          SSL.

     Nome del file per il download: imap.tar.Z di solito è un link
     simbolico all'ultima release, attualmente è linkato a
     imap-2001a.tar.Z
     _________________________________________________________________

6.2.4. PostgreSQL

6.2.4.1. Cosa è PostgreSQL

PostgreSQL è un Database molto potente e veloce

Come MySQL è magnifico per le applicazioni Web. Dal mio punto di vista, non
così agevole da maneggiare come MySQL. Se la propria applicazione web deve
più che altro scrivere dati, o si necessita di capacità di transazioni
robuste, PostgreSQL è il vostro amico
     _________________________________________________________________

6.2.4.2. Download dei sorgenti

Sito di origine: http://www.postgresql.org (Selezionare il mirror più
vicino)
     _________________________________________________________________

6.2.4.3. Compilazione e installazione
cd /usr/local

tar -xvzf postgresql-7.3.2.tar.gz

cd postgresql-7.3.2

./configure \
--with-perl \
--enable-odbc \
--with-unixodbc  \
--with-pam \
--with-openssl \


make
make install

echo /usr/local/pgsql/lib >> /etc/ld.so.conf

ldconfig
     _________________________________________________________________

6.2.5. Sablotron

6.2.5.1. Cosa è Sablotron



   Sablotron è un insieme di strumenti XML veloce, portatile e compatto,
   che implementa XSLT 1.0, DOM Level2 e XPath 1.0. Sablotron è un
   progetto aperto; altri utenti e sviluppatori sono incoraggiati ad
   usarlo o ad aiutarci, provandolo o migliorandolo. L'obiettivo di
   questo progetto è di creare un processore di libreria XML leggero,
   affidabile e veloce, conforme alle specifiche W3C, che sia disponibile
   per il pubblico e possa essere usato come base per applicazioni XML
   multi piattaforma.

--http://www.gingerall.com/charlie/ga/xml/p_sab.xml
     _________________________________________________________________

6.2.5.2. Download dei sorgenti

Sito di origine:
http://download-2.gingerall.cz/download/sablot/Sablot-0.97.tar.gz
     _________________________________________________________________

6.2.5.3. Compilazione e installazione
tar -xvzf Sablot-0.97.tar.gz
cd Sablot-0.97

./configure
make
make install

ldconfig
     _________________________________________________________________

6.2.6. pdflib

6.2.6.1. Cosa è pdflib



   PDFlib: è una libreria per generare al volo PDF. PDFlib è il
   componente software principale se si vogliono generare PDF sul proprio
   server, convertire testo e grafici o implementare l'output PDF nei
   propri prodotti.

--www.pdflib.com

   Dal punto di vista degli autori:

   È un prodotto commmerciale

   PDFLIB è un Prodotto Commerciale. Si legga attentamente la licenza,
   per vedere se si ha bisogno di una licenza commerciale o meno
     _________________________________________________________________

6.2.6.2. Download dei sorgenti

Sito di origine: http://www.pdflib.com/pdflib/download/pdflib-4.0.3.tar.gz
     _________________________________________________________________

6.2.6.3. Compilazione e installazione
cd /usr/local/
tar -xvzf pdflib-4.0.3.tar.gz

cd pdflib-4.0.3

./configure --enable-shared-pdflib --enable-cxx

make
make install

ldconfig
     _________________________________________________________________

6.2.7. gettext

6.2.7.1. Cosa è gettext

gettext è una libreria per l'i18n del software (Internazionalizzazione, "I",
18 caratteri e "n") ed è richiesta da php
     _________________________________________________________________

6.2.7.2. Download dei sorgenti

Sito di origine: ftp://ftp.gnu.org/gnu/gettext (scegliere un mirror vicino)
     _________________________________________________________________

6.2.7.3. Compilazione e installazione
cd /usr/local

tar -xvzf gettext-0.11.2.tar.gz

cd gettext-0.11.2

./configure

make
make check
make install

ldconfig
     _________________________________________________________________

6.2.8. zlib

6.2.8.1. Cosa è zlib

zlib è una libreria di compressione dati senza perdita di informazioni, per
l'uso su virtualmente ogni tipo di hardware e sistema operativo
     _________________________________________________________________

6.2.8.2. Download dei sorgenti

Sito di origine: ftp://ftp.info-zip.org/pub/infozip/zlib/zlib-1.1.4.tar.gz
(scegliere un mirror vicino)
     _________________________________________________________________

6.2.8.3. Compilazione e installazione
cd /usr/local

tar -xvzf zlib-1.1.4.tar.gz

cd zlib-1.1.4/

./configure

make
make test
make install

ldconfig
     _________________________________________________________________

6.3. Compilazione e installazione di PHP4
cd /usr/local

tar -xvzf php-4.3.0.tar.gz

cd php-4.3.0

export LDFLAGS=-lstdc++

./configure \
--with-apxs=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-pgsql=/usr/local/pgsql \
--enable-track-vars \
--with-openssl=/usr/local/ssl \
--with-imap=/usr/local/imap \
--with-gd --with-ldap \
--enable-ftp \
--enable-sysvsem \
--enable-sysvshm \
--enable-sockets \
--with-pdflib=/usr/local \
--with-gettext \
--with-mm=/usr/local/mm-1.1.3 \
--with-jpeg-dir=/usr/lib \
--with-zlib-dir=/usr/local \
--enable-wddx \
--with-mcrypt \
--with-mhash \
--with-mcal=/usr \
--enable-exif \
--enable-xslt \
--with-xslt-sablot=/usr/local \
--with-dom \
--with-dom-xslt \

   Modificare il Makefile e aggiungere -lstdc++ alla variabile
   EXTRA_LIBS. Attualmente è necessario solo quando si usa Sablotron
   versione 0.9.7
make
make install

   Dopo l'installazione l'httpd.conf viene modificato da apxs. Ora
   dovrebbe risultare come segue:
<IfDefine SSL>
LoadModule ssl_module         libexec/libssl.so
LoadModule php4_module        libexec/libphp4.so
</IfDefine>

   Se si è compilato Apache con mod_ssl allora il modulo php verrà
   caricato quando si lancerà Apache con ssl (apachectl startssl). Se si
   avvia Apache senza il supporto ssl (ma compilato come descritto in
   questo documento) è necessario modificare quanto segue:
<IfDefine SSL>
LoadModule ssl_module         libexec/libssl.so
</IfDefine>
LoadModule php4_module        libexec/libphp4.so

   Copiare il file di esempio php.ini-dist su /usr/local/lib/php.ini
cp /usr/local/php-4.3.0/php.ini-dist /usr/local/lib/php.ini

   decommentare (rimuovere il # all'inizio della linea) le seguenti linee
   in /usr/local/apache/conf/httpd.conf

   l'httpd.conf predefinito di Apache 1.3.27 manca di queste voci. Si
   devono aggiungere invece di decommentare
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
AddType application/x-httpd-php .php3

# Se si vuole mostrare il sorgente PHP

AddType application/x-httpd-php-source .phps  (1)

   (1) 
          Questa linea è necessaria solo se si vuole mostrare il codice
          sorgente nel browser. L'estensione di questi file dovrebbe
          essere phps.

     register_globals: Dalla Versione 4.2.1. di PHP, »register_globals«
     è impostata su OFF. Ciò può comportare dei problemi se si esegue
     del codice PHP senza usare i metodi $HTTP_GET_VARS. Per abilitare
     register_globals si modifichi la seguente linea nel proprio
     /usr/local/lib/php.ini:
register_globals = On

     Ci si assicuri, se si scrive nuovo software, di utilizzare i nuovi
     metodi. Il supporto ai vecchi verrà, prima o poi, abbandonato.

   Riavviare Apache dando il seguente comando:
/usr/local/apache/bin/apachectl restart
     _________________________________________________________________

7. PHP extensions

Esistono numerose estensioni disponibili per php, le quali possono essere
aggiunte a php.ini
     _________________________________________________________________

7.1. APC (Alternative PHP-cache)

7.1.1. Cosa è APC



   APC è la Alternative PHP Cache. È stata concepita per fornire una
   struttura libera, aperta e robusta per la compilazione e il caching
   degli script php. APC è stata pensata per fornire un modo per
   aumentare le performance di PHP su siti pesantemente caricati fornendo
   un sistema per la memorizzazione degli script compilati, in modo che
   il sovraccarico dovuto all'analisi e alla compilazione sia quasi del
   tutto eliminato. Esistono prodotti commerciali che forniscono questa
   funzionalità, ma non sono né open-source né gratuiti. Il nostro
   obiettivo è stato livellare il campo di utilizzo fornendo una
   implementazione che permettesse grande flessibilità e fosse
   universalmente accessibile. Abbiamo anche voluto che la cache fornisse
   visibilità nei suoi stessi funzionamenti e su quelli di PHP, cosicché
   il tempo è stato investito nel fornire strumenti diagnostici interni
   che permettesseero la manutenzione e la diagnosi della cache. In
   questo modo si è giunti ad APC. Poiché ci è stato commissionato lo
   sviluppo di un prodotto che potesse facilmente crescere con le nuove
   versioni di PHP, l'abbiamo implementata come una estensione di zend,
   permettendogli sia di essere compilata in PHP che aggiunta post facto
   come un modulo drop in. Così come PHP, è disponibile completamente
   gratis per usi commerciali o non comerciali, sotto gli stessi termini
   di PHP stesso. APC è stato testato con PHP 4.0.3, 4.0.3pl1 e 4.0.4.
   Attualmente si compila su Linux e FreeBSD. Sono benvenute le patch per
   i port ad altri sistemi operativi/versioni di PHP.

--www.apc.communityconnect.com/

   L'autore ha effettuato alcuni test di performance con APC, ed è stata
   una vera sorpresa. Una pagina Web PHP con un loop di query MySQL (per
   un totale di 10 query) è risultata essere più veloce del 50%

   Lato negativo di APC: se si hanno altri utenti sul sistema che
   scrivono php, potrebbero non trovarlo agevole, poiché le modifiche
   sono del tutto ignorate a meno che non si svuoti la cache o si riavvii
   Apache. D'altra parte, fare si che APC faccia ogni volta un controllo
   per nuove versioni degli script, comporta un consistente decadimento
   delle prestazioni.
     _________________________________________________________________

7.1.2. Download dei sorgenti

Sito di origine: http://apc.communityconnect.com/sources/apc-cvs.tar.gz
     _________________________________________________________________

7.1.3. Compilazione e installazione
cd /usr/local

tar -xvzf apc-cvs.tar.gz

cd apc

./configure --enable-apc --with-php-config=/usr/local/bin/php-config

make
make install

cp modules/php_apc.so /usr/local/lib/php/extensions

echo 'zend_extension="/usr/local/lib/php/extensions/php_apc.so"' \
>> /usr/local/lib/php.ini
echo "apc.mode = shm" >> \
apc.mode = shm

   Riavviare il Server Web Apache. Per provarlo, si crei un file php con
   il seguente contenuto:

   Esempio 7. apctest.php
<?php
apcinfo();
?>
     _________________________________________________________________

7.2. Zend-Optimizer (_NON_ associare con APC-Cache!)

7.2.1. Cosa è lo Zend-optimizer



   Lo Zend Optimizer va oltre il codice intermedio generato dal
   compilatore Zend standard posto nel motore Zend e quindi lo ottimizza
   per un esecuzione più veloce.

--www.zend.com

   Zend-Optimizer è un prodotto freeware closed source. Con lo stesso
   codice di test usato per APC, c'è stata una diminuzione di velocità di
   circa il 5% comparato con il PHP senza APC.

   È necessario fare da se i propri test, per vedere se ci sono dei
   miglioramenti con il proprio codice. Ci si assicuri di NON usare Zend
   Optimizer insieme con APC, altrimenti l'intera configurazione non
   funzionerà.
     _________________________________________________________________

7.2.2. Download dei file binari

Sito di origine: https://www.zend.com/store/free_download.php?pid=13

     Registrarsi presso zend.com: È necessario registrarsi presso
     zend.com per avere accesso alla pagina di download
     _________________________________________________________________

7.2.3. Installazione

Non c'è niente da compilare, questo prodotto è closed source ed è
disponibile solo in formato binario per differenti piattaforme. Il nome del
file varia in accordo con la propria piattaforma, l'esempio è per Linux su
IA32.
cd /usr/local

tar -xvzf ZendOptimizer-2.1.0-Linux_glibc21-i386.tar.gz

cd ZendOptimizer-2.1.0-Linux_glibc21-i386

./install.sh

   Lo script di installazione è auto esplicativo, se si sono compilati
   Apache e PHP come descritto in questo documento, si può semplicemente
   premere INVIO a tutte le domande sui nomi dei percorsi.
     _________________________________________________________________

8. Jakarta Tomcat

8.1. Cosa è Tomcat



   Tomcat è il contenitore di servlet che viene utilizzato
   nell'Implementazione ufficiale di Riferimento per il Java Servlet e le
   tecnologie JavaServer Page. Le specifiche Java Servlet e JavaServer
   Page sono sviluppate da Sun sotto il Java Community Process.

--jakarta.apache.org

   Dal punto di vista degli autori:

   Tomcat è il successore di jserv il quale non viene più sviluppato da
   tempo. Tomcat supporta le ultime API jsp e servlet definite da Sun.
   Sfortunatamente Tomcat è molto difficile da compilare dal sorgente,
   poiché utilizza un proprio sistema di compilazione chiamato "ant".
   Inoltre c'è una lista molto lunga di prerequisiti nel caso si voglia
   compilare dal sorgente. Si veda
   http://jakarta.apache.org/tomcat/tomcat-4.0-doc/BUILDING.txt per
   maggiori dettagli - Buona fortuna e inviate qualche indicazione
   all'autore.

   Nel frattempo l'HOWTO fornisce qualche supporto di base per Tomcat
   installato dai binari.

   L'autore è in cerca di qualche volontario che provi a compilare Tomcat
   dai sorgenti e dica quali passi sono necessari
     _________________________________________________________________

8.2. Prerequisiti

8.2.1. Java2

8.2.1.1. Cosa è Java2

Per favore si veda java.sun.com

È troppo per questo HOWTO, per favore si veda
http://java.sun.com/j2se/1.3/docs/relnotes/features.html
     _________________________________________________________________

8.2.2. Download dei binari

Si vada a http://java.sun.com/j2se/1.3/ [3]si scelga la propria piattaforma
e si seguano i passi indicati sul sito.
     _________________________________________________________________

8.2.3. Installazione dei binari

Eseguire il binario:
chmod +x j2sdk-1_3_1_02-linux-i386.bin

./j2sdk-1_3_1_02-linux-i386.bin

   Dopo aver accettato la licenza, spacchettare il materiale, spostare la
   directory risultante in /usr/lib e creare un link simbolico
   appropriato
     _________________________________________________________________

8.3. Download dei binari

Sito di origine:
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.18/src/jaka
rta-tomcat-4.1.18-src.tar.gz
     _________________________________________________________________

8.3.1. Installazione dei binari
cd /usr/local

tar -xvzf jakarta-tomcat-4.1.8.tar.gz

cd jakarta-tomcat-4.1.8

cd bin

rm *.bat

echo export JAVA_HOME=/usr/lib/java/ >> /etc/profile
. /etc/profile

   Per attivare il manager di Tomcat, è necessario modificare
   /usr/local/jakarta-tomcat-4.1.8/conf/tomcat-users.xml aggiugendo un
   utente »admin« o con il ruolo »manager«. Il risultato dovrebbe essere
   qualcosa tipo questo:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="admin" password="secret" roles="manager"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>

   Ora dovrebbe essere possibile lanciare tomcat:
/usr/local/apache/jakarta-tomcat-4.1.8/bin/startup.sh

   Dovrebbe essere possibile connettersi a:
   http://localhost:8080/index.jsp
     _________________________________________________________________

8.4. mod_jk

8.4.1. Download dei sorgenti

Se si vuole avere una interfaccia nativa nel proprio Server Web Apache, è
necessario compilare mod_jk il quale deve essere scaricato separatamente da
qui:
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.18/src/jaka
rta-tomcat-connectors-4.1.18-src.tar.gz.
     _________________________________________________________________

8.4.2. Compilazione e installazione
tar -xvzf jakarta-tomcat-connectors-4.1.18-src.tar.gz

cd jakarta-tomcat-connectors-4.1.18-src/jk/native

./buildconf
./configure --with-apxs=/usr/local/apache/bin/apxs

make
make install
     _________________________________________________________________

8.4.3. Personalizzazione

Ora segue la parte noiosa, la personalizzazione dei file di configurazione.
Prima si modifichi
/usr/local/jakarta-tomcat-connectors-4.1.18-src/jk/conf/workers.properties,
e si copi il file in /usr/local/apache/conf

Ho creato un workers.properties di esempio che funziona con le JSP e i
servlet di prova che vengono forniti con la distribuzione di Tomcat. Si basa
sul workers.properties di esempio di Tomcat

   Esempio 8. workers.properties
workers.tomcat_home=/usr/local/jakarta-tomcat-4.1.18

# workers.java_home deve puntare alla cartella della propria installazione di J
ava. Normalmente
# in essa si dovrebbero avere le directory bin e lib.
#
workers.java_home=/usr/lib/java2

# Si dovrebbe configurare il proprio separatore di ambiente... ps=\ su NT e / s
u UNIX
# e potrebbe essere differente in altri ambienti.
#
ps=/

# Gli operatori che dovrebbero creare e lavorare con i vostri plugin
#
worker.list=worker1

#------ DEFINIZIONE DELL'OPERATORE DEFAULT ajp13 ------------------------------
#---------------------------------------------------------------------
# Definizione di un operatore chiamato ajp13 e di tipo ajp13
# Si noti che il nome e il tipo non devono coincindere.
#
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13

#------ DEFINIZIONE CLASSPATH -----------------------------------------
#---------------------------------------------------------------------
# Componenti class path addizionali.
#
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar

# La JVM che abbiamo in uso
#
# Unix - Sun VM o blackdown
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)clas
sic$(ps)libjvm.so

# Impostazione della posizione di stdout e stderr di tomcat
#
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr

   Di seguito, è necessario configurare il proprio file httpd.conf. Il
   seguente esempio coincide con quelli forniti da Tomcat.
LoadModule jk_module libexec/mod_jk.so
AddModule mod_jk.c

JkWorkersFile /usr/local/apache/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /examples/servlet/* worker1
JkMount /examples/*.jsp worker1

   Dopo il riavvio di Apache, dovrebbe essere possibile connettersi alle
   proprie pagine JSP tramite Apache. Ad es.:
   http://localhost/examples/jsp/num/numguess.jsp

   Per gli ulteriori passi, come l'installazione dei propri servlet e
   file jsp, sta a voi stessi...

     Variabili d'ambiente: Se Tomcat non si avvia e/o le proprie servlet
     non possono essere avviate, l'errore più comune è non avere tutte
     le classi necessarie nella variabile CLASSPATH.
     _________________________________________________________________

9. Ulteriori Informazioni

Qui ci sono altre risorse disponibili su Internet
     _________________________________________________________________

9.1. Gruppi di discussione

Alcuni dei gruppi più interessanti sono:

     * alt.apache.configuration
     * comp.infosystems.www.servers.unix
     * alt.comp.lang.php
     * alt.php
     * comp.databases

   Si controllino anche i gruppi di discussione del proprio paese, ad es.
   it.comp.os.linux

   La maggior parte dei gruppi di discussione hanno le loro FAQ che sono
   pensate per rispondere alle domande più frequenti, come il nome
   Frequently Asked Questions indica. Le versioni più recenti dovrebbero
   essere postate regolarmente nei gruppi pertinenti. Se non si riescono
   a trovare nella propria coda news, si può andare direttamente al sito
   FTP archivio primario delle FAQ. La versione WWW può essere sfogliata
   presso il sito WWW archivio primario.
     _________________________________________________________________

9.2. Mailing List
     _________________________________________________________________

9.2.1. <users@httpd.apache.org>

Inviare una e-mail vuota a <users-subscribe@httpd.apache.org>

Prima di scrivere alla lista, controllare l'archivio:
http://marc.theaimsgroup.com/?l=apache-httpd-users
     _________________________________________________________________

9.2.2. <modperl@apache.org>

Inviare un e-mail a <modperl@apache.org> con il contenuto (non l'oggetto):
   subscribe modperl

   Prima di scrivere alla lista, controllare l'archivio:
   http://outside.organic.com/mail-archives/modperl/
     _________________________________________________________________

9.2.3. <openssl-users@openssl.org>

Inviare un e-mail a <majordomo@openssl.org> con il contenuto (non
l'oggetto):
   subscribe openssl-users

   Prima di scrivere alla lista, controllare l'archivio:
   http://www.mail-archive.com/openssl-users@openssl.org/
     _________________________________________________________________

9.2.4. <modssl-users@modssl.org>

Inviare un e-mail a <majordomo@modssl.org> con il contenuto (non l'oggetto):
   subscribe modssl-users

   Prima di scrivere alla lista, controllare l'archivio:
   http://www.mail-archive.com/modssl-users@modssl.org/
     _________________________________________________________________

9.2.5. <mysql@lists.mysql.com>

Inviare un e-mail vuota a <mysql-subscribe@lists.mysql.com>

Prima di scrivere alla lista, controllare l'archivio:
http://lists.mysql.com/cgi-ez/ezmlm-cgi/
     _________________________________________________________________

9.2.6. <pgsql-general@postgres.org>

Riempire la scheda di iscrizione presso
http://developer.postgresql.org/mailsub.php

Prima di scrivere alla lista, controllare l'archivio:
http://archives.postgresql.org/pgsql-general/
     _________________________________________________________________

9.2.7. php.net

Riempire la scheda di iscrizione presso
http://www.php.net/mailing-lists.php.

Ci sono diverse mailing list relative a php a cui iscriversi, alcune sono
disponibili anche sul server news di php.net.

Prima di scrivere alla lista, controllare l'archivio che è linkato anche
sulla pagina di iscrizione.
     _________________________________________________________________

9.2.8. <apc-cache@lists.communityconnect.com>

Inviare un e-mail a <apc-cache-request@lists.communityconnect.com> con il
contenuto (non l'oggetto):
   subscribe
     _________________________________________________________________

9.3. HOWTO

Sono intesi come principali punti di partenza per ottenere informazioni di
base. Mostrano inoltre come risolvere un problema specifico. Alcuni HOWTO
inerenti sono

Apache-Overview-HOWTO , Apache-WebDAV-LDAP-HOWTO , LDAP-HOWTO ,
LDAP-Implementation-HOWTO and the PHP-HOWTO

Il sito principale per questi documenti è l'archivio LDP [NdT: ora
http://tldp.org].
     _________________________________________________________________

9.4. Risorse Locali

Di solito le distribuzioni installano della documentazione sul sistema.
Solitamente si trovano in /usr/share/doc/packages o /usr/local/share/doc

I prodotti software menzionati, forniscono molta documentazione nelle
directory sorgente. Apache installa la sua documentazione nella directory di
predefinita DocumentRoot /usr/local/apache/htdocs/manual
     _________________________________________________________________

9.5. Siti Web

Esiste un gran numero disponibile di siti web informativi. Per loro natura
cambiano rapidamente, per cui non ci si sorprenda se questi link diventano
velocemente obsoleti.

Un buon punto d'inizio naturalmente è la home page del Linux Documentation
Project [NdT: ora http://tldp.org], un importante archivio di informazioni
per la documentazione, pagine di progetto e molto di più.

Per ottenere maggiori informazioni sui software menzionati in questo
documento, i seguenti siti sono ottimi punti di partenza.

     * http://httpd.apache.org

     * http://www.openssl.org

     * http://www.modssl.org

     * http://perl.apache.org/

     * http://www.webdav.org

     * http://www.mysql.com

     * http://www.postgresql.org

     * http://www.pdflib.com

     * http://www.php.net

     * http://www.phpbuilder.com

   Per favore mi si faccia sapere se si hanno altre indicazioni che
   potrebbero essere di interesse.
     _________________________________________________________________

10. Domande e Risposte

   1. FAQ

        10.1.1. C'è qualche HOWTO per Apache 2.0?
        10.1.2. Perché non aggiungi una descrizione su come compilare e
                configurare il mod_xyz?

        10.1.3. Se i miei client tentano di connettersi a
                https://myserver.org appare un messaggio d'errore simile
                a questo "Certificato non valido". 

        10.1.4. Quando richiedo un file php, il browser vuole scaricarlo.
                Cosa c'è di sbagliato?

        10.1.5. Questo HOWTO è valido anche per altre piattaforme? 

1. FAQ

   10.1.1. C'è qualche HOWTO per Apache 2.0?

   Ancora no. La ragione è che PHP 4.2.1 supporta l'API Apache 2.0 solo
   sperimentalmente e la velocità di PHP è molto scarsa con Apache 2.0.
   Come il nuovo Apache avrà nuove funzioni e massicci miglioramenti di
   velocità, scriverò siffatto HOWTO non appena il supporto PHP sarà
   stabile e maggiormente prestante. Sto raccogliendo idee e desideri
   dagli utenti su cosa vorrebbero vedere in un Apache 2.0 HOWTO.
   Sentitevi liberi di scrivere una e-mail a <luc at delouw dot ch>.

   10.1.2. Perché non aggiungi una descrizione su come compilare e
   configurare il mod_xyz?

   Perché nessuno l'ha ancora richiesto e neanche io so niente del
   mod_xyz, o non l'ho trovato utile. Sentitevi liberi di scrivermi
   qualche suggerimento da aggiungere all'HOWTO. Se c'è più di una
   richiesta e ha senso, potrebbe essere aggiunta in versioni successive.

   10.1.3. Se i miei client tentano di connettersi a https://myserver.org
   appare un messaggio d'errore simile a questo "Certificato non valido".

   Il certificato creato come descritto in questo HOWTO è solo un
   certificato auto-firmato. Questo significa che la CA (Certification
   Authority) siete voi. La vostra CA non è riconosciuta come valida dai
   browser degli utenti. Potete anche installare il certificato sulle
   macchine dei vostri utenti (Ha senso in piccoli ambienti Intranet) o
   acquistare un certificato da una CA che viene riconosciuta dai browser
   più diffusi. Un esempio di siffatta CA è Verisign
   http://www.verisign.com. Questo certificato costa approssimativamente
   300 USD all'anno, a seconda della robustezza della chiave (56 o 128
   Bit).

   10.1.4. Quando richiedo un file php, il browser vuole scaricarlo. Cosa
   c'è di sbagliato?

   Hai dimenticato di dire ad Apache cosa fare con i file php. Così
   questi non vengono processati dal motore php. Per farglielo fare,
   aggiungere il tipo di applicazione come descritto in la Sezione 6.3

   10.1.5. Questo HOWTO è valido anche per altre piattaforme?

   Non ne sono sicuro, su Solaris dovrebbe funzionare, su AIX e HP-UX no.
   Non ho ancora avuto tempo di provare su FreeBSD. Il mio obiettivo è di
   fornire una versione dell'HOWTO per tutte le principali piattaforme
   Un*x.

  Note

   [1]

   Questo RPM contiene i file header necessari per php
   [2]

   Necessario solo nel caso in cui PHP viene costruto dall'albero CVS
   [3]

   C'è anche disponibile la versione 1.4.1 di Java, ma Tomcat sembra non
   girare con questa.