Apache Compile HOWTO

Luc de Louw

           
        

Diario delle Revisioni
Revisione 1.9.182003-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.172002-10-16
Aggiornato il software menzionato. Ulteriori miglioramenti e riordini al codice SGML, quali metadata, chiamate e altro.
Revisione 1.9.162002-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.152002-06-19
Aggiornato a mod_ssl-2.8.9-1.3.26 e rimossa la patch temporanea.
Revisione 1.9.142002-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.132002-06-15
Aggiornamenti dei software menzionati, aggiunto come associare MySQL ad un IP specifico, alcuni piccoli cambiamenti e correzioni.
Revisione 1.9.122002-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.112002-04-07
Corretti molti errori (non tecnici), aggiornamenti dei software menzionati.
Revisione 1.9.11-pre12002-03-15
Corretti alcuni errori di grammatica, aggiornamenti dei software menzionati.
Revisione 1.9.102002-03-09
Corretti alcuni errori di grammatica, aggiornamenti dei software menzionati.
Revisione 1.9.92002-02-11
Risolto un bug importante nel config di openssl, ristrutturato il documento, aggiunte fonti per ulteriori informazioni.
Revisione 1.9.82002-02-08
Aggiornamenti dei software menzionati e corretti alcuni errori.
Revisione 1.9.72001-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.62001-10-27
Aggiornamenti dei software menzionati e corretti alcuni errori.
Revisione 1.9.52001-08-27
Ancora un'altra riscrittura in DocBook 3.1.
Revisione 1.9.42001-08-26
Aggiornate le versioni dei software menzionati nel documento, corretti alcuni errori di battitura.
Revisione 1.9.32001-06-23
Attuale versione 2.0.0-pre3 nel formato Linux DocBook.
Revisione 1.0.02000-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

AvvertimentoFalla 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 .


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


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


1.9. Ringraziamenti

Voglio ringraziare tutte le simpatiche persone presso 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: .


1.11. Traduzioni

Al momento esistono traduzioni in:

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.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

SuggerimentoSelezionare 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.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.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

AttenzioneEvitare 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).

AttenzioneUso 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.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.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

AttenzioneMod_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

SuggerimentoNome 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.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

SuggerimentoNome 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.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.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.

SuggerimentoPercorso 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.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

SuggerimentoVerificare 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.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

SuggerimentoVerificare 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.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_gzip: %{mod_gzip_compression_ratio}npct." combined

5.2. mod_gunzip


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.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.

SuggerimentoNome 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.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:

AttenzioneÈ 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.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.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.

Suggerimentoregister_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.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

SuggerimentoRegistrarsi 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/jakarta-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/jakarta-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 Java. 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 / su 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)classic$(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...

SuggerimentoVariabili 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:

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.

Inviare una e-mail vuota a

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


9.2.2.

Inviare un e-mail a 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.

Inviare un e-mail a 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.

Inviare un e-mail a 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.

Inviare un e-mail vuota a

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


9.2.6.

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.

Inviare un e-mail a 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.

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 .

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.

Se si hanno domande, sarò lieto di rispondere e pubblicare le più importanti qui (in anonimato)

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.