<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">

<article lang="it">
  <artheader>
    <title>Apache Compile HOWTO</title>

    <author>
      <firstname>Luc</firstname>
      <surname>de Louw</surname>
      <affiliation>
        <address>
           <email>luc at delouw.ch</email>
        </address>
      </affiliation>
     </author>

<revhistory>

<revision>
 <revnumber>1.9.18</revnumber>
   <date>2003-02-09</date>
   <revremark>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.
   </revremark>
</revision>


<revision>
 <revnumber>1.9.17</revnumber>
   <date>2002-10-16</date>
   <revremark>Aggiornato il software menzionato. Ulteriori miglioramenti e
              riordini al codice SGML, quali metadata, chiamate e altro.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.16</revnumber>
   <date>2002-07-04</date>
   <revremark>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.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.15</revnumber>
   <date>2002-06-19</date>
   <revremark>Aggiornato a mod_ssl-2.8.9-1.3.26 e rimossa la patch temporanea.
   </revremark>
</revision>


<revision>
   <revnumber>1.9.14</revnumber>
   <date>2002-06-19</date>

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

</revision>

<revision>
   <revnumber>1.9.13</revnumber>
   <date>2002-06-15</date>
   <revremark>Aggiornamenti dei software menzionati, aggiunto come associare
              MySQL ad un IP specifico, alcuni piccoli cambiamenti e
              correzioni.
   </revremark>
</revision>


<revision>
   <revnumber>1.9.12</revnumber>
   <date>2002-04-22</date>

   <revremark>Aggiunti mod_gzip e mod_gunzip. Corretti alcuni errori,
              aggiornamenti dei software menzionati, separati i moduli
              addizionali in una propria sezione.
   </revremark>

</revision>

<revision>
   <revnumber>1.9.11</revnumber>
   <date>2002-04-07</date>
   <revremark>Corretti molti errori (non tecnici), aggiornamenti dei
              software menzionati.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.11-pre1</revnumber>
   <date>2002-03-15</date>
   <revremark>Corretti alcuni errori di grammatica, aggiornamenti dei
              software menzionati.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.10</revnumber>
   <date>2002-03-09</date>
   <revremark>Corretti alcuni errori di grammatica, aggiornamenti dei
              software menzionati.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.9</revnumber>
   <date>2002-02-11</date>
   <revremark>Risolto un bug importante nel config di openssl, ristrutturato
              il documento, aggiunte fonti per ulteriori informazioni.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.8</revnumber>
   <date>2002-02-08</date>
   <revremark>Aggiornamenti dei software menzionati e corretti alcuni
              errori.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.7</revnumber>
   <date>2001-12-26</date>
   <revremark>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).
   </revremark>
</revision>

<revision>
   <revnumber>1.9.6</revnumber>
   <date>2001-10-27</date>
   <revremark>Aggiornamenti dei software menzionati e corretti alcuni
              errori.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.5</revnumber>
   <date>2001-08-27</date>
   <revremark>Ancora un'altra riscrittura in DocBook 3.1.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.4</revnumber>
   <date>2001-08-26</date>
   <revremark>Aggiornate le versioni dei software menzionati nel documento,
              corretti alcuni errori di battitura.
   </revremark>
</revision>

<revision>
   <revnumber>1.9.3</revnumber>
   <date>2001-06-23</date>
   <revremark>Attuale versione 2.0.0-pre3 nel formato Linux DocBook.
   </revremark>
</revision>

<revision>
   <revnumber>1.0.0</revnumber>
   <date>2000-08-05</date>
   <revremark>Prima pubblicazione del documento basato su html.
   </revremark>
</revision>

</revhistory>



    <abstract>
      <indexterm>
        <primary>Apache, mod_perl, mod_dav, mod_auth_ldap, mod_dynvhost, mod_roaming, mod_jserv, e mod_php</primary>
      </indexterm>
      <para>
	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. </para>
	<para>Traduzione a cura di Michele Ferritto
	(m.ferritto@toglimi.virgilio.it), revisione a cura di Giuseppe Briotti
	(g.briotti@toglimi.mclink.it).
      </para>
    </abstract>

  </artheader>

<warning><title>Falla di Sicurezza in <application>Apache</application> inferiore alla versione 1.3.26</title>
<para>
NON usare nessuna versione di <application>Apache</application> più vecchia della 1.3.26. Si veda 
<ulink url="http://www.cert.org/advisories/CA-2002-17.html">http://www.cert.org/advisories/CA-2002-17.html</ulink> 
per maggiori informazioni
</para>
</warning>


  <sect1 id="intro">
    <title>Introduzione</title>

      <sect2>
	<title>Collaboratori e Contatti</title>
	<para>
	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 <email>luc at delouw.ch</email>.
	</para>
      </sect2>

      <sect2>
	<title>Perché ho scritto questo documento</title>
	<para>
	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.
	</para>
	<para>
	Infine, la maggior parte degli <acronym>Unix</acronym> commerciali vengono consegnati senza Apache preinstallato, oppure utilizzano una configurazione molto insolita. 
	</para>
	<para>
	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.
	</para>
	<para>
	Dopo che molte persone richiesero il documento come HOWTO »ufficiale« scritto in <acronym>SGML</acronym>, 
	ho deciso di prepararlo per farcelo diventare.
	</para>
      </sect2>

      <sect2>
	<title>Cosa si suppone che sia questo documento</title>
	<para>
	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.
	</para>
	<para>
	Inoltre, si dovrebbe imparare come costruire da se un server web <application>Apache</application> completo, per rimanere indipendente da qualsiasi distributore <application>Linux</application>.
	</para>
      </sect2>

      <sect2>
	<title>Cosa questo documento non fa</title>
	<para>
	&Egrave; semplicemente un documento, non uno script che fa il lavoro al proprio posto. Si devono eseguire tutti i passi da soli.
	</para>
      </sect2>

      <sect2>
	<title>Piattaforme</title>
	<para>
	Il documento originale era valido per tutte le piattaforme  <acronym>Unix</acronym> più conosciute. Attualmente gli HOWTO sono separati per ciascuna piattaforma. Si può trovare lo stesso documento addattato per: 
	</para>
	  <itemizedlist>
		<listitem><para>Linux (Questo Documento)</para></listitem>
		<listitem><para>IBM <acronym>AIX</acronym> 4.3 e 5.1L</para></listitem>
		<listitem><para>Sun Solaris 6/7/8</para></listitem>
		<listitem><para>Hewlett-Packard <acronym>HP-UX</acronym> 11</para></listitem>
		<listitem><para>&lcub;Free|Net|Open&rcub;-<acronym>BSD</acronym></para></listitem>
	</itemizedlist>

	<para>
	Nota importante per gli utenti che eseguono Linux su IBM S/390 (zSeries): <application>PostgreSQL</application> 
	e <application>Jserv</application> non si compilano su questo sistema.
	Tutti gli altri programmi e moduli menzionati nell'HOWTO funzionano perfettamente
	</para>
	<para>
	Altre piattaforme <acronym>Unix</acronym>: Sentitevi liberi di creare un account ospite per me 
	sulla vostra piattaforma <acronym>Unix</acronym>, così che possa dare uno sguardo alle differenze.
	</para>
	<para>
	Utenti Windows: Mi dispiace, sono troppo giovane per un infarto, avete bisogno di aggiornare la vostra macchina 
	con un »vero« sistema operativo ;-)
	</para>
      </sect2>

  <sect2 id="copyright">
   <title> Informazioni sul Copyright </title>

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

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

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

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

   <para>
    If you have any questions, please contact
    <email>linux-howto at metalab.unc.edu</email>
   </para>
  </sect2>

  <sect2 id="disclaimer">
   <title>Liberatoria</title>

   <para>
    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à.
   </para>

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

   <para>
    La nomina di particolari prodotti o marchi non deve essere vista 
    come un sostegno.
   </para>

   <para>
    Si raccomanda fortemente di effettuare il backup del proprio sistema
    prima di effettuare installazioni importanti e continuare a farlo ad intervalli regolari.
   </para>
  </sect2>

  <sect2 id="newversions">
   <title>Nuove Versioni</title>

    <indexterm>
     <primary>(your index root)!news on</primary>
    </indexterm>

   <para>
    Questa è la 15ma Versione
   </para>

    <para>
	Nuove versioni di questo documento saranno annunciate presso 
	<ulink url="http://freshmeat.net/projects/apache-compile-howto/?topic_id=905">
	http://freshmeat.net/projects/apache-compile-howto/?topic_id=905</ulink>
    </para>

   <para>
    L'ultima versione di questo documento si può trovare presso
    <ulink url="http://www.delouw.ch/linux">http://www.delouw.ch/linux</ulink>
   </para>

   <para>
   </para>

   <para>
   <itemizedlist>
    <listitem>
     <para>
      <ulink url="http://www.delouw.ch/linux/Apache-Compile-HOWTO/html/index.html">HTML</ulink>.
     </para>
    </listitem>

 <listitem>
     <para>
      <ulink url="http://www.delouw.ch/linux/Apache-Compile-HOWTO/Apache-Compile-HOWTO.ps">Postscript (formato ISO A4)</ulink>.
     </para>
    </listitem>

    <listitem>
     <para>
       <ulink URL="http://www.delouw.ch/linux/Apache-Compile-HOWTO/Apache-Compile-HOWTO.pdf">Acrobat PDF</ulink>.
     </para>
    </listitem>

    <listitem>
     <para>
       <ulink URL="http://www.delouw.ch/linux/Apache-Compile-HOWTO/Apache-Compile-HOWTO.sgml">Sorgente SGML</ulink>.
     </para>
    </listitem>

    <listitem>
     <para>
      <ulink url="http://www.delouw.ch/linux/Apache-Compile-HOWTO/Apache-Compile-HOWTO.html.tar.gz">tarball gzip HTML</ulink>.
     </para>
    </listitem>
   </itemizedlist>
   </para>

  </sect2>

  <sect2 id="credits">
   <title>Ringraziamenti</title>

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

  </sect2>

<!-- Section2: feedback -->

  <sect2 id="feedback">
   <title>Indicazioni</title>

   <para>
   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: <email>luc at delouw.ch</email>.
   </para>
   </sect2>

<!-- Section2: translations -->

  <sect2 id="translations">
   <title>Traduzioni</title>

   <para>
	Al momento esistono traduzioni in:
   	<itemizedlist>
		<listitem>
			<para>
			<ulink url="http://www.delouw.ch/linux/DE-Apache-Compile-HOWTO/html/index.html">Tedesco</ulink>
			</para>
		</listitem>

		<listitem>
			<para>
			<ulink url="http://www.delouw.ch/linux/FR-Apache-Compile-HOWTO/html/index.html">Francese</ulink>
			</para>
			
		</listitem>
	</itemizedlist>
   </para>

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

   </sect2>

<sect2><title>A proposito dell'autore</title>
<para>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 &ldquo;impossibili&rdquo; per le più importanti piattaforme Un*x finiscono sulla sua  
scrivania (si, è divertente e lui lo adora!)</para>

</sect2>

</sect1>

<sect1 id="prereqs">
<title>Prerequisiti</title>


<sect2><title>Generali</title>
<itemizedlist>
<listitem><para><application>flex</application> 2.54</para></listitem>
<listitem><para><application>bison</application> 1.28</para></listitem>
<listitem><para><application>autoconf</application> 2.52</para></listitem>
<listitem><para><application>automake </application>1.4</para></listitem>
<listitem><para><application>libtool </application>1.4</para></listitem>
<listitem><para><application>yacc</application> 91.7.30</para></listitem>
<listitem><para><application>freetype2</application>-devel <footnote><para>Questo <abbrev>RPM</abbrev> contiene i file header necessari per php</para></footnote></para></listitem>
<listitem><para><application>re2c</application> <footnote><para>Necessario solo nel caso in cui PHP viene costruto dall'albero CVS</para></footnote>
</para></listitem>
</itemizedlist>

<para>Segue...</para>

<para>
Tutte le più importanti distribuzioni dovrebbero includere questi prerequisiti generali. 
</para>

</sect2>

<sect2><title>OpenSSL</title>
 
<sect3><title>Cosa è <application>OpenSSL</application></title>
<blockquote><attribution>www.openssl.org</attribution>
<para>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.</para>
<para>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.</para>
<para>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</para>
</blockquote>
 
<para>OpenSSL fornisce le librerie e i file include necessari ai prodotti menzionati precedentemente e fornisce inoltre
una Applicazione per creare Certificati Server e client.</para>
</sect3>
 
<sect3><title>Download dei sorgenti</title>
<para>Sito di origine 
<ulink url="http://www.openssl.org">http://www.openssl.org</ulink>
</para>
</sect3>
 
<sect3><title>Compilazione e installazione</title>
 
<screen>
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
</screen>

<tip><title>Selezionare la propria CPU per migliorare la velocità</title>
<para>
Di default il Makefile genera il codice per la CPU i486. Si può cambiare ciò editando il 
<filename>Makefile</filename> dopo aver eseguito <command>config </command><option>shared</option>. 
Si cerchi <option>-m486</option> e lo si sostituisca, per esempio, con <option>-march=athlon</option>
</para></tip>
 
</sect3>
 
</sect2>

<sect2><title>GNU Database System</title>

<sect3><title>Cosa è <application>gdbm</application></title>
<blockquote><attribution>www.gnu.org/software/gdbm</attribution>
<para>
GNU dbm è un set di routine di database, che usa l'hashing estensibile. Funziona in modo simile alle routine standard Unix dbm. 
</para>
</blockquote>
<para>GNU dbm è una applicazione molto importante utilizzata da quasi tutte le distribuzioni. Perciò viene installata per convenzione su tutte le distribuzioni che ho provato.</para>

<para>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 <abbrev>CD</abbrev>/<abbrev>DVD</abbrev> della distribuzione e si installi 
il relativo pacchetto devel (La versione può variare):
</para>
<screen>
rpm -i gdbm-devel-1.8.0-546
</screen>

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

<para>
Gli utenti di sistemi basati su Debian possono installare gdbm con il seguente:</para>

<screen>
apt-get install libgdbmg1-dev
</screen>
</sect3>

<sect3><title>Compilare e installare da se</title>

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

<screen>
./configure 

make
make install

ldconfig
</screen>


</sect3>

</sect2>

<sect2><title>MySQL</title>
 
<sect3><title>Cose'è <application>MySQL</application></title>
<para>
<application>MySQL</application> è un Database molto veloce, potente e piacevole da maneggiare.</para>
 
<para>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 <xref linkend="postgresql"> per i suggerimenti sull'installazione</para>
 
<para>Si necessita della C-<abbrev>API</abbrev> da MySQL per compilare <application>PHP</application> se si
desidera il supporto a MySQL in <acronym>PHP</acronym>. &Egrave; anche necessaria se si vuole utilizzare 
<application>mod_authmysql</application>, si veda <xref linkend="authmysql"> per maggiori informazioni</para>
</sect3>
 
<sect3><title>Download</title>
<para>
Sito di origine: <ulink url="http://www.mysql.com/downloads/">http://www.mysql.com/downloads/</ulink>
</para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
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
</screen>

<para>
Per migliorare la sicurezza, si aggiunga un utente MySQL sul proprio sistema <abbrev>ad es.</abbrev> »mysql«.
</para>

<screen>
chown -R mysql /usr/local/mysql/var
</screen>

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

<screen>
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
</screen>

</para>
</sect3>

<sect3><title>Rendere sicuro MySQL</title>

<para>Questa parte è opzionale e descrive come associare il demone MySQL all'IP localhost</para>

<para>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.</para>
<para>
si modifichi la linea 107 del file <filename>/etc/init.d/mysql.server</filename> come mostrato di seguito:</para>

<para>Linea originale:</para>

<screen>
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&
</screen>

<para>Linea modificata:</para>

<para>
<screen>
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--bind-address=127.0.0.1& <co id="bind">
</screen>
</para>

<calloutlist>
<callout arearefs="bind">
<para>Qui si può definire a quale interfaccia MySQL deve essere associato</para>
</callout>
</calloutlist>

<para>In alternativa, si può completamente disabilitare la funzionalità di rete di MySQL.
</para>

<screen>
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--skip-networking &
</screen>

</sect3>

</sect2>

<sect2><title>Compilare mm</title>
 
<sect3><title>Cosa è <application>mm</application></title>
<blockquote><attribution>www.engelschall.com</attribution>
<para>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. </para></blockquote>

<para>&Egrave; una libreria comune che permette ai programmatori Unix di semplificare gli accessi <abbrev>shm</abbrev> (Memoria condivisa). Viene utilizzata in molti prodotti, <abbrev>ad es.</abbrev>
<application>PHP</application> e <application>mod_ssl</application></para>
</sect3>
 
<sect3><title>Download</title>
<para>Sito di origine: <ulink url="ftp://ftp.ossp.org/pkg/lib/mm/mm-1.2.2.tar.gz">
ftp://ftp.ossp.org/pkg/lib/mm/mm-1.2.2.tar.gz</ulink>
</para>
</sect3>
 
<sect3><title>Compilazione e installazione</title>
 
<screen>
cd /usr/local
 
tar -xvzf mm-1.2.2.tar.gz
 
cd mm-1.2.2
 
./configure
make
make test
make install

ldconfig
</screen>

</sect3>
</sect2>
</sect1>


<sect1 id="apache">
<title>Ottenere, compilare e installare Apache con i suoi moduli di base</title>

<sect2><title>Ottenere e ed estrarre i sorgenti di Apache</title>

<sect3><title>Cosa è <application>Apache</application></title>

<blockquote><attribution>www.apache.org</attribution>
<para>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.</para></blockquote>

<para>&Egrave; 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)</para>
</sect3>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine
<ulink url="http://www.apache.org/dist/httpd/">http://www.apache.org/dist/httpd/</ulink>

<screen>
cd /usr/local/

tar -xvzf apache_1.3.27.tar.gz
</screen>

</para>
</sect3>

<sect3><title>Patch per siti di larga scala</title>
<para>
	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 
</para>

<para>
	Si faccia il download della patch da: <ulink url="http://www.delouw.ch/linux/apache-patch_HARD_SERVER_LIMIT.txt">
	http://www.delouw.ch/linux/apache-patch_HARD_SERVER_LIMIT.txt</ulink>
</para>

<screen>
--- 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
</screen>

<para>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 <filename>/etc/security/limits.conf</filename> 
</para>

<caution><title>Evitare di esaurire i task</title>
<para>
Con le impostazioni sbagliate ciò potrebbe portare ad un »self-denial-of-service-attack«. Ci si assicuri di aver lasciato sufficienti processi per root</para>
</caution>

<para>Si applichi la patch con:</para>
<screen>
cd /usr/local/apache_1.3.27/src/include

patch -p0 &lt; apache-patch_HARD_SERVER_LIMIT.txt
</screen>

</sect3>
</sect2>

<sect2><title>mod_ssl</title>

<sect3><title>Cosa è mod_ssl</title>
<blockquote><attribution>www.modssl.org</attribution>
<para>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.</para></blockquote>


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

<caution><title>Uso delle opzioni del compilatore durante la compilazione dei moduli</title>
<para>
Ci si assicuri che ogni modulo per il proprio server Apache sia compilato con l'opzione <option>-DEAPI</option>, altrimenti il Server web potrebbe bloccarsi o non avviarsi affatto.
</para>
</caution>

<para>Quasi tutti i moduli che conosco aggiungono l'opzione <option>-DEAPI</option> da soli, eccettuati <application>mod_jserv</application> e <application>mod_jk</application></para>
</sect3>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine:<ulink url="http://www.modssl.org">http://www.modssl.org</ulink></para>
</sect3>

<sect3><title>Applicazione della patch ai sorgenti di Apache</title>

<screen>
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 
</screen>

</sect3>
</sect2>

<sect2><title>mod_perl</title>

<sect3><title>Cosa è mod_perl</title>
<blockquote><attribution>perl.apache.org</attribution>
<para>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. </para></blockquote>


<para>
<application>mod_perl</application> è 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.
</para>
</sect3>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://www.apache.org/dist/perl">http://www.apache.org/dist/perl</ulink></para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
cd /usr/local

tar -xvzf mod_perl-1.27.tar.gz

cd mod_perl-1.27

perl Makefile.PL &bsol;
EVERYTHING=1 &bsol;
APACHE_SRC=../apache_1.3.27/src &bsol;
USE_APACI=1 &bsol;
PREP_HTTPD=1 &bsol;
DO_HTTPD=1

make
make install
</screen>

<caution><title>Mod_perl non può essere compilato come DSO</title>
<para>Non si compili mod_perl come <abbrev>DSO</abbrev> (Dynamic Shared Object)! Secondo  
varie fonti, Apache potrebbe bloccarsi (non ho mai provato).</para>
</caution>

</sect3>
</sect2>

<sect2><title>Configurare e compilare Apache</title>
<para>
Ora che i due moduli statici <application>mod_ssl</application> e <application>mod_perl</application>
 sono configurati ed ai sorgenti di Apache è stata applicata la patch, possiamo procedere con la compilazione di Apache.
</para>

<sect3><title>Compilazione e installazione</title>

<screen>
EAPI_MM=&quot;/usr/local/mm-1.2.2&quot; SSL_BASE=&quot;/usr/local/ssl&quot; &bsol;
./configure &bsol;
--enable-module=unique_id &bsol;
--enable-module=rewrite &bsol;
--enable-module=speling &bsol;
--enable-module=expires &bsol;
--enable-module=info &bsol;
--enable-module=log_agent &bsol;
--enable-module=log_referer &bsol;
--enable-module=usertrack &bsol;
--enable-module=proxy &bsol;
--enable-module=userdir &bsol;
--enable-module=so &bsol;
--enable-shared=ssl &bsol;
--enable-module=ssl &bsol;
--activate-module=src/modules/perl/libperl.a &bsol;
--enable-module=perl

make
make install
</screen>

</sect3>

<sect3><title>Creare certificati SSL auto-firmati</title>
<screen>
cd /usr/local/ssl/bin

./openssl req -new &gt; 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

</screen>

<tip><title>Nome comune</title>
<para>
OpenSSL chiede diverse cose. Un errore comune è quello di inserire un &quot;nome comune&quot; sbagliato. 
Questo deve essere lo FQHN (Fully Qualified HostName) del proprio Server, ad es. www.foo.org</para>
</tip>

</sect3>
</sect2>
</sect1>

<sect1 id="modules">
<title>Moduli aggiuntivi</title>

<sect2><title>mod_dav</title>

<sect3><title>Cosa è mod_dav</title>

<blockquote><attribution>www.webdav.org</attribution>
<para>mod_dav è un modulo Apache per fornire capacità <abbrev>DAV</abbrev> (<abbrev>RFC</abbrev> 2518) 
al proprio server web Apache. &Egrave; un modulo Open Source, fornito sotto una licenza stile Apache.</para></blockquote>

<para>Dal punto di vista degli autori:</para>

<para>
<abbrev>DAV</abbrev> significa: »Distributed authoring and Versioning«. Permette di gestire il proprio sito web in modo simile a un filesystem. &Egrave; pensato per rimpiazzare l'upload tramite ftp al server web.
</para>

<para>
<abbrev>DAV</abbrev> è 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.
</para>
</sect3>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://www.webdav.org/mod_dav/">http://www.webdav.org/mod_dav/</ulink></para>
</sect3>

<sect3><title>Compilazione e installazione</title>
<screen>
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
</screen>

<tip><title>Nome del file che disorienta</title>

<para>Il nome del file <filename>mod_dav-1.0.3-1.3.6</filename> suggerisce che possa funzionare solo con Apache 1.3.6 ma 
attualmente funziona con tutti gli Apache &gt;= 1.3.6</para>
</tip>


</sect3>

</sect2>

<sect2><title>auth_ldap</title>

<sect3><title>Cosa è auth_ldap</title>
<blockquote><attribution>www.rudedog.org</attribution>
<para>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 <application>Frontpage</application> di gestire i permessi web utilizzando <acronym>LDAP</acronym> per l'autenticazione. </para></blockquote>


<para>Dal punto di vista degli autori:</para>

<para>
Se si vogliono unificare le proprie infrastrutture di login in una unica base comune di utenti/password, <acronym>LDAP</acronym> 
(Lightweight Directory Access Protocol) è il modo giusto per farlo. <acronym>LDAP</acronym> è uno standard aperto e largamente supportato.
</para>
<para>Infrastrutture di login per <acronym>LDAP</acronym>:</para>
<para>Come gli Unix-Login per <application>Linux</application>, <application>Solaris</application> 
(altri?), l'FTP-Login (alcuni demoni ftp), l'autenticazione di base http, l'autenticazione e amministrazione di ruolo per <application>Tarantella</application>, l'autenticazione <application>Samba</application> (2.2.x dovrebbe supportarlo), anche 
<acronym>LDAP</acronym> è 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.</para>
</sect3>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://www.rudedog.org/auth_ldap/">http://www.rudedog.org/auth_ldap/</ulink></para>
</sect3>

<sect3><title>Compilazione e installazione</title>
<screen>
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 &bsol;
--with-sdk=openldap

make
make install
</screen>

</sect3>

</sect2>

<sect2 id="authmysql"><title>mod_auth_mysql</title>
<sect3><title>Cosa è mod_auth_mysql</title>
<para>&Egrave; un modulo di autenticazione http di base. Permette di mantenere agevolmente il proprio utente in un Database MySQL</para>
</sect3>
<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="ftp://ftp.kciLink.com/pub/mod_auth_mysql.c.gz">ftp://ftp.kciLink.com/pub/mod_auth_mysql.c.gz</ulink></para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
gunzip mod_auth_mysql.c.gz

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

cp mod_auth_mysql.so /usr/local/apache/libexec/
</screen>

<para>
Si aggiunga questa linea al proprio <filename>httpd.conf</filename>:
</para>

<screen>
LoadModule mysql_auth_module libexec/mod_auth_mysql.so
</screen>

<para>
E dove vengono aggiunti gli altri moduli:
</para>
<screen>AddModule mod_auth_mysql.c
</screen>
<para>Ci si assicuri che il percorso delle librerie e degli include di MySQL sia corretto.</para>

<tip><title>Percorso della libreria</title>
<para>Ci si assicuri che il percorso /usr/local/mysql/lib/mysql sia inserito nel file /etc/ld.so.conf prima della compilazione</para>
</tip>

</sect3>

<sect3><title>Esempio di configurazione</title>
<example><title>/usr/local/apache/conf/httpd.conf</title>
<screen>
&lt;location /manual/&gt;
  AuthType Basic
  AuthUserfile /dev/null
  AuthName Testing
  AuthGroupFile /dev/null
  AuthMySQLHost localhost
  AuthMySQLCryptedPasswords Off
  AuthMySQLUser root
  AuthMySQLDB users
  AuthMySQLUserTable user_info
  &lt;Limit GET POST&gt;
    require valid-user
  &lt;/limit&gt;
&lt;/location&gt;
</screen>
</example>

<sect4><title>Script per la creazione di un database MySQL</title>

<para>
si digiti semplicemente:
</para>
<screen>
mysql < authmysql.sql
</screen> 
<para>
Il File authmysql.sql contiene:</para>
<example><title>authmysql.sql</title>
<screen>
  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);
</screen>
</example>

</sect4>
</sect3>
</sect2>

<sect2><title>mod_dynvhost</title>

<sect3><title>Cosa è mod_dynvhost</title>
<para>
&Egrave; un modulo che permette di definire nuovi Host Virtuali &quot;al volo&quot;. Semplicemente si crei una 
nuova directory nel proprio percorso vhost, è tutto. Non è necessario far ripartire il server web</para>
<para>&Egrave; una buona soluzione di hosting virtuale di massa per gli ISP</para>
</sect3>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://funkcity.com/0101/projects/dynvhost/mod_dynvhost.tar.gz">
http://funkcity.com/0101/projects/dynvhost/mod_dynvhost.tar.gz</ulink>
</para>
</sect3>

<sect3><title>Compilazione e installazione</title>
<screen>
cd /usr/local

tar -xvzf mod_dynvhost.tar.gz

cd dynvhost/

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

<tip><title>Verificare <filename>httpd.conf</filename></title>
<para>Nota: Si guardi nel file httpd.conf per verificare che mod_dynvhost.so sia caricato all'avvio: </para>

<screen>
LoadModule dynvhost_module libexec/mod_dynvhost.so
</screen>

</tip>

</sect3>

<sect3><title>Esempio di configurazione</title>

<example><title>/usr/local/apache/conf/httpd.conf</title>
<screen>
&lt;DynamicVirtualHost /usr/local/apache/htdocs/vhosts/&gt; 
  HomeDir / 
&lt;/DynamicVirtualHost&gt;
</screen>
</example>

<para>Ora si crei una directory per ciascun host virtuale in <filename>/usr/local/apache/htdocs/vhosts/</filename></para>
<para>ad es.</para>
<para><filename>/usr/local/apache/htdocs/vhosts/foo.bar.org</filename></para>
<para>Non è necessario far ripartire il server web</para>
</sect3>
</sect2>

<sect2><title>mod_roaming</title>

<sect3><title>Cosa è mod_roaming</title>
<blockquote><attribution>www.klomp.org/mod_roaming/</attribution>
<para>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.</para></blockquote>

<para>Dal punto di vista degli autori: </para>

<para>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 <application>Mozilla</application> e <application>Netscape</application> 6.x.
</para>

</sect3>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://www.klomp.org/mod_roaming/">http://www.klomp.org/mod_roaming/</ulink>
</para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
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
</screen>

<tip><title>Verificare <filename>httpd.conf</filename></title>
<para>Si controlli httpd.conf perché mod_roaming venga caricato all'avvio: </para>

<screen>
LoadModule roaming_module libexec/mod_roaming.so
</screen>
</tip>


</sect3>

<sect3><title>Esempio di configurazione</title>

<example><title>/usr/local/apache/conf/httpd.conf</title>
<screen>
RoamingAlias /roaming /usr/local/apache/roaming
&lt;Directory /usr/local/apache/roaming&gt;
  AuthUserFile /usr/local/apache/conf/roaming-htpasswd
  AuthType Basic
  AuthName &quot;Roaming Access&quot;
  &lt;Limit GET PUT MOVE DELETE&gt;
    require valid-user
  &lt;/Limit&gt;
&lt;/Directory&gt;
</screen>

</example>
</sect3>
</sect2>
</sect1>

<sect1 id="compress">
<title>Distribuizione compressa</title>
<para>
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.
</para>

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

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

<para>
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à.
</para>

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


<sect2><title>mod_gzip</title>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://prdownloads.sourceforge.net/mod-gzip/mod_gzip-1.3.26.1a.tgz?download">http://prdownloads.sourceforge.net/mod-gzip/mod_gzip-1.3.26.1a.tgz?download</ulink>
</para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<para>Per compilare con successo mod_gzip è necessario modificare il <filename>Makefile</filename> e fornire il percorso corretto per <command>apxs</command></para>

<screen>
make
make install
</screen>

</sect3>

<sect3>
<title>Esempio di configurazione</title>
<para>Si metta il seguente contenuto nel proprio <filename>/usr/local/apache/conf/httpd.conf</filename>:</para>
<example><title>/usr/local/apache/conf/httpd.conf</title>
<screen>
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/.*
</screen>
</example>

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

</sect3>


</sect2>

<sect2><title>mod_gunzip</title>

<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://www.oldach.net/mod_gunzip.tar.gz">http://www.oldach.net/mod_gunzip.tar.gz</ulink>
</para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
tar -xvzf mod_gunzip.tar.gz
cd mod_gunzip-2

/usr/local/apache/bin/apxs -i -a -c -lz mod_gunzip.c
</screen>
</sect3>

<sect3>
<title>Esempio di configurazione</title>
<para>Inserire il seguente contenuto nel proprio <filename>/usr/local/apache/conf/httpd.conf</filename>:</para>
<example><title>/usr/local/apache/conf/httpd.conf</title>
<screen>
AddType text/html .htmz
AddHandler send-gunzipped .htmz
</screen>
</example>

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

<para>
Naturalmente bisogna modificare tutti i link a htmz, ad es. &lt;a href="pagina.htmz"&gt;Qualche pagina&lt;/a&gt;
</para>

</sect3>

</sect2>

</sect1>

<sect1 id="php">
<title>mod_php e i suoi prerequisiti</title>


<sect2><title>Cosa è mod_php</title>
<blockquote><attribution>www.php.net</attribution>
<para>PHP è un linguaggio di scripting lato server, indipendente dalla piattaforma con <abbrev>HTML</abbrev> incorporato. </para>
<para>All'inizio era un semplice processore di guestbook, ed è cresciuto sempre di più. Dalla Versione 3 
è veramente un linguaggio per lo sviluppo Web</para></blockquote>


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

<para>Sono disponibili altre estensioni come <application>APC</application> (Alternative PHP Cache), 
che accelerano l'elaborazione di circa il 50-400&percnt; 
(dipende dal codice php che si scrive)</para>
</sect2>

<sect2><title>Prerequisiti</title>
<para>
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.</para>

<sect3><title>Client IMAP</title>

<sect4><title>Cosa è il client <acronym>IMAP</acronym></title>
<para><acronym>IMAP</acronym> significa »Internet Mail Application Protocol« ed è un sostituto del 
protocollo <acronym>POP</acronym> (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</para>
</sect4>
</sect3>

<sect3><title>Download dei sorgenti</title>

<para>Sito di origine: <ulink url="http://www.washington.edu/imap/">http://www.washington.edu/imap/</ulink>
</para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
cd /usr/local

tar -xvfz imap.tar.Z

cd imap

<!-- make slx SSLTYPE=unix <co id="imap"> -->
make slx SSLTYPE=nopwd <co id="imap">
</screen>

<para>
<calloutlist>
<callout arearefs="imap">
<para>Con il parametro <option>SSLTYPE=unix</option> si stabilisce la necessità o meno del supporto SSL. L'omissione sta a significare nessun supporto SSL.</para>
</callout>
</calloutlist>
</para>


<tip><title>Nome del file per il download</title>
<para>imap.tar.Z di solito è un link simbolico all'ultima release, attualmente è linkato a imap-2001a.tar.Z</para>
</tip>


</sect3>

<sect3 id="postgresql"><title>PostgreSQL</title>
<sect4><title>Cosa è PostgreSQL</title>
<para>PostgreSQL è un Database molto potente e veloce</para>

<para>
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
</para>

</sect4>
<sect4><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink> (Selezionare il mirror più vicino)</para>
</sect4>
<sect4><title>Compilazione e installazione</title>

<screen>
cd /usr/local

tar -xvzf postgresql-7.3.2.tar.gz

cd postgresql-7.3.2

./configure &bsol;
--with-perl &bsol;
--enable-odbc &bsol;
--with-unixodbc  &bsol;
--with-pam &bsol;
--with-openssl &bsol;


make
make install

echo /usr/local/pgsql/lib &gt;&gt; /etc/ld.so.conf

ldconfig
</screen>
</sect4>
</sect3>

<sect3 id="sablotron"><title>Sablotron</title>
<sect4><title>Cosa è Sablotron</title>
<blockquote><attribution>http://www.gingerall.com/charlie/ga/xml/p_sab.xml</attribution>
<para>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.</para></blockquote>
</sect4>

<sect4><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://download-2.gingerall.cz/download/sablot/Sablot-0.97.tar.gz">http://download-2.gingerall.cz/download/sablot/Sablot-0.97.tar.gz</ulink></para>
</sect4>
<sect4><title>Compilazione e installazione</title>

<screen>
tar -xvzf Sablot-0.97.tar.gz
cd Sablot-0.97

./configure
make
make install

ldconfig
</screen>
</sect4>
</sect3>

<sect3><title>pdflib</title>

<sect4><title>Cosa è pdflib</title>
<blockquote><attribution>www.pdflib.com</attribution>
<para>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.</para>
</blockquote>

<para>Dal punto di vista degli autori:</para>


<caution><title>&Egrave; un prodotto commmerciale</title>
<para>PDFLIB è un Prodotto Commerciale. Si legga attentamente la licenza, per vedere se si ha bisogno di una licenza commerciale o meno
</para>
</caution>

</sect4>

<sect4><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://www.pdflib.com/pdflib/download/pdflib-4.0.3.tar.gz">
http://www.pdflib.com/pdflib/download/pdflib-4.0.3.tar.gz</ulink></para>
</sect4>

<sect4><title>Compilazione e installazione</title>

<screen>
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
</screen>
</sect4>
</sect3>

<sect3><title>gettext</title>

<sect4><title>Cosa è gettext</title>
<para>gettext è una libreria per l'i18n del software (Internazionalizzazione, "I", 18 caratteri e "n") ed è richiesta da php</para>
</sect4>

<sect4><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="ftp://ftp.gnu.org/gnu/gettext">ftp://ftp.gnu.org/gnu/gettext</ulink>
 (scegliere un mirror vicino)</para>
</sect4>

<sect4><title>Compilazione e installazione</title>

<screen>
cd /usr/local

tar -xvzf gettext-0.11.2.tar.gz

cd gettext-0.11.2

./configure

make
make check
make install

ldconfig
</screen>
</sect4>
</sect3>

<sect3><title>zlib</title>

<sect4><title>Cosa è zlib</title>
<para>zlib è una libreria di compressione dati senza perdita di informazioni, per l'uso su virtualmente ogni tipo di hardware e sistema operativo</para>
</sect4>

<sect4><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="ftp://ftp.info-zip.org/pub/infozip/zlib/zlib-1.1.4.tar.gz">ftp://ftp.info-zip.org/pub/infozip/zlib/zlib-1.1.4.tar.gz</ulink>
 (scegliere un mirror vicino)</para>
</sect4>

<sect4><title>Compilazione e installazione</title>

<screen>
cd /usr/local

tar -xvzf zlib-1.1.4.tar.gz

cd zlib-1.1.4/

./configure

make
make test
make install

ldconfig
</screen>

</sect4>
</sect3>



</sect2>

<sect2 id="build-php"><title>Compilazione e installazione di PHP4</title>

<screen>
cd /usr/local

tar -xvzf php-4.3.0.tar.gz

cd php-4.3.0

export LDFLAGS=-lstdc++

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

</screen>

<para>Modificare il <filename>Makefile</filename> e aggiungere <option>-lstdc++</option> alla variabile <varname>EXTRA_LIBS</varname>. Attualmente è necessario solo quando si usa Sablotron versione 0.9.7</para>

<screen>
make
make install
</screen>

<para>Dopo l'installazione l'httpd.conf viene modificato da apxs. Ora dovrebbe risultare come segue:</para>

<screen>
&lt;IfDefine SSL&gt;
LoadModule ssl_module         libexec/libssl.so
LoadModule php4_module        libexec/libphp4.so
&lt;/IfDefine&gt;
</screen>

<para>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:
</para>

<screen>
&lt;IfDefine SSL&gt;
LoadModule ssl_module         libexec/libssl.so
&lt;/IfDefine&gt;
LoadModule php4_module        libexec/libphp4.so
</screen>



<para>Copiare il file di esempio <filename>php.ini-dist</filename> su <filename>/usr/local/lib/php.ini</filename></para>

<screen>
cp /usr/local/php-4.3.0/php.ini-dist /usr/local/lib/php.ini
</screen>

<para>decommentare (rimuovere il &num; all'inizio della linea) le seguenti linee in 
<filename>/usr/local/apache/conf/httpd.conf</filename></para>
<para>l'httpd.conf predefinito di Apache 1.3.27 manca di queste voci. Si devono aggiungere invece di decommentare</para>

<screen>
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 <co id="source">
</screen>

<para>
<calloutlist>
<callout arearefs="source"><para>Questa linea è necessaria solo se si vuole mostrare
il codice sorgente nel browser. L'estensione di questi file dovrebbe essere phps.
</para>
</callout>
</calloutlist>
</para>


<tip><title>register_globals</title>
<para>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
<filename>/usr/local/lib/php.ini</filename>:
</para>

<screen>
register_globals = On
</screen>
<para>
Ci si assicuri, se si scrive nuovo software, di utilizzare i nuovi metodi. Il supporto ai vecchi verrà, prima o poi, abbandonato.
</para>
</tip>

<para>Riavviare Apache dando il seguente comando: </para>


<screen>
/usr/local/apache/bin/apachectl restart
</screen>
</sect2>
</sect1>


<sect1 id="phpext"><title>PHP extensions</title>
<para>Esistono numerose estensioni disponibili per php, le quali possono essere aggiunte a php.ini</para>

<sect2><title>APC (Alternative PHP-cache)</title>
<sect3><title>Cosa è APC</title>
<blockquote><attribution>www.apc.communityconnect.com/</attribution>
<para>APC è la Alternative PHP Cache. &Egrave; 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.</para></blockquote>

<para>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&percnt; </para>
<para>
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.
</para>

</sect3>
<sect3><title>Download dei sorgenti</title>
<para>Sito di origine: <ulink url="http://apc.communityconnect.com/sources/apc-cvs.tar.gz">http://apc.communityconnect.com/sources/apc-cvs.tar.gz</ulink></para>
</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
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=&quot;/usr/local/lib/php/extensions/php_apc.so&quot;' \
&gt;&gt; /usr/local/lib/php.ini
echo &ldquo;apc.mode = shm&rdquo; &gt;&gt; \
apc.mode = shm
</screen>

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

<example><title>apctest.php</title>
<screen>
&lt;?php
apcinfo();
?&gt;
</screen>
</example>

</sect3>
</sect2>


<sect2><title>Zend-Optimizer (_NON_ associare con APC-Cache!)</title>
<sect3><title>Cosa è lo Zend-optimizer</title>
<blockquote><attribution>www.zend.com</attribution>
<para>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. </para></blockquote>


<para>
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&percnt; comparato con il PHP
senza APC.
</para>

<para>
&Egrave; necessario fare da se i propri test, per vedere se ci sono dei miglioramenti con il proprio codice. 
Ci si assicuri di NON usare <application>Zend Optimizer</application> insieme con <application>APC</application>, 
altrimenti l'intera configurazione non funzionerà.
</para>
</sect3>

<sect3><title>Download dei file binari</title>
<para>Sito di origine: <ulink url="https://www.zend.com/store/free_download.php?pid=13">https://www.zend.com/store/free_download.php?pid=13</ulink></para>

<tip><title>Registrarsi presso zend.com</title>
<para>&Egrave; necessario registrarsi presso zend.com per avere accesso alla pagina di download</para>
</tip>
</sect3>


<sect3><title>Installazione</title>
<para>
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.
</para>

<screen>
cd /usr/local

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

./install.sh
</screen>

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

</sect3>
</sect2>

</sect1>

<sect1 id="tomcat"><title>Jakarta Tomcat</title>
<sect2><title>Cosa è Tomcat</title>
<blockquote><attribution>jakarta.apache.org</attribution>
<para>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.</para> 
</blockquote>
<para>Dal punto di vista degli autori:</para>
<para>
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 <ulink url="http://jakarta.apache.org/tomcat/tomcat-4.0-doc/BUILDING.txt">
http://jakarta.apache.org/tomcat/tomcat-4.0-doc/BUILDING.txt</ulink> per maggiori dettagli - Buona fortuna e inviate qualche indicazione all'autore. 
</para>

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

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

</sect2>
<sect2><title>Prerequisiti</title>
<sect3><title>Java2</title>
<sect4><title>Cosa è Java2</title>
<para>Per favore si veda java.sun.com</para>
<para>&Egrave; troppo per questo HOWTO, per favore si veda <ulink url="http://java.sun.com/j2se/1.3/docs/relnotes/features.html">http://java.sun.com/j2se/1.3/docs/relnotes/features.html</ulink></para>
</sect4>
</sect3>
<sect3><title>Download dei binari</title>

<para>Si vada a <ulink url="http://java.sun.com/j2se/1.3/">http://java.sun.com/j2se/1.3/</ulink> <footnote><para>
C'è anche disponibile la versione 1.4.1 di Java, ma Tomcat sembra non girare con questa.</para>
</footnote>si scelga la propria piattaforma e si seguano i passi indicati sul sito.</para>
</sect3>
<sect3><title>Installazione dei binari</title>
<para>
Eseguire il binario:
</para>
<screen>
chmod +x j2sdk-1_3_1_02-linux-i386.bin

./j2sdk-1_3_1_02-linux-i386.bin
</screen>

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

</sect3>
</sect2>

<sect2><title>Download dei binari</title>
<para>Sito di origine: 
<ulink url="http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.18/src/jakarta-tomcat-4.1.18-src.tar.gz">
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.18/src/jakarta-tomcat-4.1.18-src.tar.gz</ulink></para>

<sect3><title>Installazione dei binari</title>

<screen>
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
</screen>

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

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

<para>Dovrebbe essere possibile connettersi a: <ulink url="http://localhost:8080/index.jsp">http://localhost:8080/index.jsp</ulink></para>
</sect3>
</sect2>

<sect2 id="modjk"><title>mod_jk</title>

<sect3><title>Download dei sorgenti</title>

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

</sect3>

<sect3><title>Compilazione e installazione</title>

<screen>
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
</screen>

</sect3>

<sect3><title>Personalizzazione</title>

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

<para>Ho creato un <filename>workers.properties</filename> 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</para>

<example><title>workers.properties</title>
<screen>
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
</screen>
</example>

 

<para>Di seguito, è necessario configurare il proprio file <filename>httpd.conf</filename>.
Il seguente esempio coincide con quelli forniti da Tomcat.</para>

<screen>
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 
</screen>

<para>Dopo il riavvio di Apache, dovrebbe essere possibile connettersi alle proprie pagine JSP tramite Apache. Ad es.:
<ulink url="http://localhost/examples/jsp/num/numguess.jsp">http://localhost/examples/jsp/num/numguess.jsp</ulink>
</para>

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

<tip><title>Variabili d'ambiente</title>
<para>
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 <varname>CLASSPATH</varname>.
</para>
</tip>

</sect3>

</sect2>

</sect1>

 <sect1 id="moreinfo">
  <title>Ulteriori Informazioni</title>

   <indexterm>
    <primary>(your index root)!information resources</primary>
   </indexterm>

  <para>
        Qui ci sono altre risorse disponibili su Internet
  </para>


  <sect2 id="newsgroups">
   <title>Gruppi di discussione</title>

    <indexterm>
     <primary>disk!information resources!news groups</primary>
    </indexterm>

   <para>Alcuni dei gruppi più interessanti sono:

    <itemizedlist>

     <listitem>
      <para>
       <ulink url="news:alt.apache.configuration">alt.apache.configuration</ulink>
      </para>
     </listitem>


     <listitem>
      <para>
       <ulink url="news:comp.infosystems.www.servers.unix">comp.infosystems.www.servers.unix</ulink>
      </para>
     </listitem>

     <listitem>
      <para>
       <ulink url="news:alt.comp.lang.php">alt.comp.lang.php</ulink>
      </para>
     </listitem>

     <listitem>
      <para>
       <ulink url="news:alt.php">alt.php</ulink>
      </para>
     </listitem>

     <listitem>
      <para>
       <ulink url="news:comp.databases">comp.databases</ulink>
      </para>
     </listitem>

    </itemizedlist>
   </para>

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

   <para>
    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
    <ulink url="ftp://rtfm.mit.edu/">sito FTP archivio primario delle FAQ</ulink>.
    La versione WWW può essere sfogliata presso il sito 
    <ulink url="http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html">WWW
    archivio primario</ulink>.
   </para>
  </sect2>

  <sect2 id="maillists">
   <title>Mailing List</title>

    <indexterm>
     <primary>disk!information resources!mailing lists</primary>
    </indexterm>

   <sect3>
   <title><email>users@httpd.apache.org</email></title>
   <para>
   Inviare una e-mail vuota a <email>users-subscribe@httpd.apache.org</email>
 </para>
   <para>Prima di scrivere alla lista, controllare l'archivio: <ulink url="http://marc.theaimsgroup.com/?l=apache-httpd-users"> http://marc.theaimsgroup.com/?l=apache-httpd-users</ulink></para>

  </sect3>

  <sect3>

   <title><email>modperl@apache.org</email></title>
   <para>Inviare un e-mail a <email>modperl@apache.org</email> con il contenuto (non l'oggetto):
   <screen>
   subscribe modperl
</screen> </para>
   <para>Prima di scrivere alla lista, controllare l'archivio:
   <ulink url="http://outside.organic.com/mail-archives/modperl/">
   http://outside.organic.com/mail-archives/modperl/</ulink></para>

  </sect3>


  <sect3>
   	<title><email>openssl-users@openssl.org</email></title>
	<para>Inviare un e-mail a <email>majordomo@openssl.org</email> con il contenuto (non l'oggetto):
	<screen>
   subscribe openssl-users</screen> </para>
	<para>Prima di scrivere alla lista, controllare l'archivio:
	<ulink url="http://www.mail-archive.com/openssl-users@openssl.org/">
	http://www.mail-archive.com/openssl-users@openssl.org/</ulink></para>
  </sect3>


 <sect3>
        <title><email>modssl-users@modssl.org</email></title>
        <para>Inviare un e-mail a <email>majordomo@modssl.org</email> con il contenuto (non l'oggetto):
        <screen>
   subscribe modssl-users</screen> </para>
	<para>Prima di scrivere alla lista, controllare l'archivio:
        <ulink url="http://www.mail-archive.com/modssl-users@modssl.org/">
        http://www.mail-archive.com/modssl-users@modssl.org/</ulink></para>
  </sect3>

<sect3>
        <title><email>mysql@lists.mysql.com</email></title>
        <para>Inviare un e-mail vuota a <email>mysql-subscribe@lists.mysql.com</email></para>
        <para>Prima di scrivere alla lista, controllare l'archivio:
        <ulink url="http://lists.mysql.com/cgi-ez/ezmlm-cgi/">
        http://lists.mysql.com/cgi-ez/ezmlm-cgi/</ulink></para>
  </sect3>

<sect3>
        <title><email>pgsql-general@postgres.org</email></title>
        <para>Riempire la scheda di iscrizione presso <ulink url="http://developer.postgresql.org/mailsub.php">
	http://developer.postgresql.org/mailsub.php</ulink></para>
        <para>Prima di scrivere alla lista, controllare l'archivio:
        <ulink url="http://archives.postgresql.org/pgsql-general/">
        http://archives.postgresql.org/pgsql-general/</ulink></para>
  </sect3>

<sect3>
        <title>php.net</title>
        <para>Riempire la scheda di iscrizione presso <ulink url="http://www.php.net/mailing-lists.php">
        http://www.php.net/mailing-lists.php</ulink>.</para>
	<para>
	Ci sono diverse mailing list relative a php a cui iscriversi, 
	alcune sono disponibili anche sul server news di php.net.
	</para>
        <para>
	Prima di scrivere alla lista, controllare l'archivio che è linkato anche sulla pagina di iscrizione.
        </para>
  </sect3>

<sect3>
        <title><email>apc-cache@lists.communityconnect.com</email></title>
<para>Inviare un e-mail a <email>apc-cache-request@lists.communityconnect.com</email> con il contenuto (non l'oggetto):
        <screen>
   subscribe</screen> </para>
  </sect3>

  </sect2>

 <sect2 id="howto">
   <title>HOWTO</title>

    <indexterm>
     <primary>disk!information resources!HOWTOs</primary>
    </indexterm>

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

<para>
    <Literal remap="tt">
	<ulink url="http://www.linuxdoc.org/HOWTO/Apache-Overview-HOWTO.html">Apache-Overview-HOWTO</ulink>
    </Literal>, 
    <Literal remap="tt">
    	<ulink url="http://www.linuxdoc.org/HOWTO/Apache-WebDAV-LDAP-HOWTO/index.html">Apache-WebDAV-LDAP-HOWTO</ulink>
    </Literal>,
    <Literal remap="tt">
        <ulink url="http://www.linuxdoc.org/HOWTO/LDAP-HOWTO.html">LDAP-HOWTO</ulink>
    </Literal>,

    <Literal remap="tt">
        <ulink url="http://www.linuxdoc.org/HOWTO/LDAP-Implementation-HOWTO/index.html">LDAP-Implementation-HOWTO</ulink>
    </Literal>and the

    <Literal remap="tt">
        <ulink url="http://www.linuxdoc.org/HOWTO/PHP-HOWTO.html">PHP-HOWTO</ulink></Literal>
</para>

   <para>
  Il sito principale per questi documenti è l'<ulink url="http://www.linuxdoc.org/">archivio LDP</ulink>
  [NdT: ora <ulink url="http://tldp.org">http://tldp.org</ulink>].
   </para>

  </sect2>

  <sect2 id="local-res">
   <title>Risorse Locali</title>

    <indexterm>
     <primary>disk!information resources!local</primary>
    </indexterm>

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

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



</sect2>

  <sect2 id="web">
   <title>Siti Web</title>

    <indexterm>
     <primary>disk!information resources!WWW</primary>
    </indexterm>
    <indexterm>
     <primary>disk!information resources!web pages</primary>
    </indexterm>

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

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

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

   <itemizedlist>
  	<listitem>
	<para>
	<ulink url="http://httpd.apache.org">http://httpd.apache.org</ulink>
	</para>
	</listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.openssl.org">http://www.openssl.org</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.modssl.org">http://www.modssl.org</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://perl.apache.org/">http://perl.apache.org/</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.webdav.org">http://www.webdav.org</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.mysql.com">http://www.mysql.com</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.postgresql.org">http://www.postgresql.org</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.pdflib.com">http://www.pdflib.com</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.php.net">http://www.php.net</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <itemizedlist>
        <listitem>
        <para>
        <ulink url="http://www.phpbuilder.com">http://www.phpbuilder.com</ulink>
        </para>
        </listitem>
   </itemizedlist>

   <para>
    Per favore mi si faccia sapere se si hanno altre indicazioni che potrebbero essere
    di interesse.
   </para>
  </sect2>

 </sect1>

 <sect1 id="faq">
  <title>Domande e Risposte</title>

<qandaset>
<qandadiv><title>FAQ</title>
<qandaentry>
<question>
<para>
C'è qualche HOWTO per Apache 2.0?
</para>
</question>

<answer>
<para>
	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 <email>luc at delouw dot ch</email>.
        </para>
</answer>
</qandaentry>

<qandaentry><question>
<para>
Perché non aggiungi una descrizione su come compilare e configurare il mod_xyz?</para>
</question>
<answer>
<para>
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.
</para>
</answer>
</qandaentry>




<qandaentry><question>
     <para>
      Se i miei client tentano di connettersi a https://myserver.org appare un messaggio d'errore simile a questo "Certificato non valido".
     </para>
</question>
<answer> 
     <para>
      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 <ulink url="http://www.verisign.com">http://www.verisign.com</ulink>. Questo certificato costa approssimativamente 300 USD all'anno, a seconda della robustezza della chiave (56 o 128 Bit).
</para>
</answer></qandaentry>

<qandaentry><question>
     <para>
      Quando richiedo un file php, il browser vuole scaricarlo. Cosa c'è di sbagliato?
</para>
</question>

<answer>
     <para>
      	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 <xref linkend="build-php">
     </para>
</answer></qandaentry>

<qandaentry><question>
     <para>
      Questo HOWTO è valido anche per altre piattaforme?
     </para>
</question>

<answer>
     <para>
      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.
     </para>
</answer></qandaentry>


</qandadiv>
</qandaset>


   <comment>

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

   </comment>

 </sect1>


</article>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:nil
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
