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 . _________________________________________________________________ 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 * HTML. * Postscript (formato ISO A4). * Acrobat PDF. * Sorgente SGML. * tarball gzip HTML. _________________________________________________________________ 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: * 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 AuthType Basic AuthUserfile /dev/null AuthName Testing AuthGroupFile /dev/null AuthMySQLHost localhost AuthMySQLCryptedPasswords Off AuthMySQLUser root AuthMySQLDB users AuthMySQLUserTable user_info require valid-user _________________________________________________________________ 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 HomeDir / 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 AuthUserFile /usr/local/apache/conf/roaming-htpasswd AuthType Basic AuthName "Roaming Access" require valid-user _________________________________________________________________ 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. Qualche pagina _________________________________________________________________ 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: LoadModule ssl_module libexec/libssl.so LoadModule php4_module libexec/libphp4.so 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: LoadModule ssl_module libexec/libssl.so 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 _________________________________________________________________ 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: 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. 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. * 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 . 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.