Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1373

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Linux Apache SSL PHP/FI frontpage mini-HOWTO</TITLE>


</HEAD>
<BODY>
<H1>Linux Apache SSL PHP/FI frontpage mini-HOWTO</H1>

<H2>Marcus Faure, 
<A HREF="mailto:marcus@faure.de">marcus@faure.de</A></H2>v1.1, Luglio 1998
<P><HR>
<EM>Questo documento tratta la costruzione di un <B>server web
multiestensione</B> che supporti contenuti web dinamici tramite il
linguaggio di script <B>PHP/FI</B>, la trasmissione di dati sicuri
basata sulle <B>SSL</B> di Netscape, l'esecuzione sicura dei
<B>CGI</B> e le <B>estensioni per un server Frontpage</B>
Microsoft. Traduzione di Marina Sturino (mcrastell@mbox.queen.it).</EM>
<HR>
<H2><A NAME="s1">1. Introduzione</A></H2>

<P>Prima che iniziate a leggere: non sono madrelingua, cosicch&eacute;  in questo documento ci saranno probabilmente errori di ortografia o grammaticali.
Sentitevi incoraggiati a informarmi degli errori.
<P>
<H2>1.1 Descrizione dei componenti</H2>

<P>Il server web che voi sperate di avere dopo aver letto questo HOWTO &egrave; composto da pi&ugrave; parti, il sorgente originale Apache con alcune (o meglio molte) patch ed alcuni eseguibili esterni.
Raccomando di usare le versioni del software che ho provato, le quali
probabilmente si compileranno senza grandi problemi e dando come
risultato un demone abbastanza stabile. 
Se siete coraggiosi potete cercare di compilare tutte le ultime
novit&agrave; proposte, ma non biasimatemi se qualcosa va male ;-) Tuttavia potete riferirmi altre configurazioni di lavoro per includerle nelle versioni future di questo documento.
Tutti questi passi sono stati testati su una versione Linux 2.0.35,
cosicch&eacute; questo HOWTO &egrave; piuttosto specifico per 
Linux, ma potrete usarlo altrettanto bene per altri sistemi Unix. 
<P>Non &egrave; necessario che compiliate tutti gli elementi. Ho cercato di strutturare questo HOWTO in modo che possiate saltare le parti che non vi interessano.
<P>Questo documento non &egrave; un manuale dell'utente n&eacute; per
Apache, n&eacute; per SSL o PHP/FI n&eacute; tantomeno per Frontpage.
Il suo scopo primario &egrave; di salvaguardare i fornitori di servizi web da molti mal di testa quando installano i loro server e di dare il mio piccolo contributo alla comunit&agrave; Linux.
<P><B>PHP</B> &egrave; un linguaggio di scripting che supporta pagine in HTML dinamico. Esso &egrave; strutturato come le SSI di Apache ma di gran lunga pi&ugrave; complesso ed ha dei moduli database per molti db popolari. Per il PHP sono necessarie le librerie GD.
<P><B>SSL</B> &egrave; un'implementazione del Secure Socket Layer di
Netscape che permette connessioni sicure su reti insicure, per esempio
per trasmettere numeri di carte di credito tramite form sul web.
<P><B>Frontpage</B> &egrave; uno strumento WYSIWYG per fare pagine web
che usa alcune specifiche estensioni per il server chiamate
webbot. Molte persone pensano che Frontpage sia &quot;cool&quot;
perch&eacute; permette di creare form e web di discussione senza avere
conoscenze sull'HTML e su CGI. Tramite uno strumento di
pubblicazione guidata sul web, evita all'autore di dover
aggiornare il suo sito via ftp.
Se volete supportare Frontpage ma non volete installare un server windows, le estensioni per il server Apache sono la vostra soluzione.
<P>
<H2>1.2 Configurazioni di lavoro</H2>

<P>Penso che questo documento sia stato scaricato pi&ugrave; di 100 volte
da quando l'ho pubblicato ma ho ricevuto solo piccoli commenti. In particolare, nessuno mi ha indicato altre configurazioni di lavoro.
Per me le configurazioni di lavoro sono:
<UL>
<LI>Linux 2.0.31, Apache 1.2.4, PHP 2.0.0, SSL 0.8.0, fp 98 3.0.3 (*)</LI>
<LI>Linux 2.0.33, Apache 1.2.5, PHP 2.0.1, SSL 0.8.0, fp 98 3.0.3 (*)</LI>
<LI>Linux 2.0.35, Apache 1.2.6, PHP 3, SSL 0.8.0, fp 98 3.0.4</LI>
</UL>

(*) la versione 3.03 
<A HREF="#fpverswarning">non &egrave; consigliata</A>.
<P>
<H2>1.3 Storia</H2>

<P>
<P>v0.0 Aprile '98: Anteprima
<P>v1.0 Giugno '98: Ora usando Apache 1.2.6, aggiornata la sezione frontpage, correzioni minori
<P>v1.1 Giugno '98: Versione ristrutturata in SGML
<P>Potete trovare l'ultima versione di questo documento sul sito: 
<A HREF="http://www.faure.de">http://www.faure.de</A><P>
<H2><A NAME="s2">2. Installazione dei componenti</A></H2>

<H2>2.1 Preparazione</H2>

<P>Voi avete bisogno di:
<UL>
<LI>Apache 1.2.6 
<A HREF="http://www.apache.org/dist/apache_1_2_6.tar.gz">http://www.apache.org/dist/apache_1_2_6.tar.gz</A></LI>
<LI>Estensioni PHP/FI
<A HREF="http://php.iquest.net/files/download.phtml?/files/php-2.01.tar.gz">http://php.iquest.net/files/download.phtml?/files/php-2.01.tar.gz</A></LI>
<LI>Libreria GD 
<A HREF="http://siva.cshl.org/gd/gd.html">http://siva.cshl.org/gd/gd.html</A></LI>
<LI>SSL 0.8.0 
<A HREF="ftp://ftp.ox.ac.uk/pub/crypto/SSL/SSLeay-0.8.0.tar.gz">ftp://ftp.ox.ac.uk/pub/crypto/SSL/SSLeay-0.8.0.tar.gz</A></LI>
<LI>Patch SSL per Apache 1.2.6
<A HREF="ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.6+ssl_1.17.tar.gz">ftp://ftp.ox.ac.uk/pub/crypto/SSL/apache_1.2.6+ssl_1.17.tar.gz</A></LI>
<LI>Estensoni server per frontpage 98 e script di installazione
<A HREF="http://www.rtr.com/fpsupport/download.htm">http://www.rtr.com/fpsupport/download.htm</A></LI>
</UL>
<P>Potete prelevare i sorgenti che volete.
Decomprimete Apache, PHP, GD, e SSL in <CODE>/usr/src</CODE>. Decomprimete
la patch SSL in <CODE>/usr/src/apache_1.2.6</CODE>.
<P>
<H2>2.2 Aggiungere PHP</H2>

<P>Fate <CODE>cd</CODE> in <CODE>/usr/src/gd1.2</CODE> e scrivete
<CODE>make</CODE>. Ci&ograve; costruir&agrave; la libreria GD <CODE>libgd.a</CODE>che dovr&agrave; essere copiata in <CODE>/usr/lib.</CODE> Ora fate
<CODE>cd</CODE> in <CODE>php_2.0.1</CODE> e avviate <CODE>./install</CODE>.  
Le domande importanti sono:
<PRE>
Would you like to compile PHP/FI as an Apache module? [yN] y
Are you compiling for an Apache 1.1 or later server? [Yn] y
Are you using Apache-Stronghold? [yN] y
Does your Apache server support ELF dynamic loading? [yN] y
Apache include directory (which has httpd.h)? [/usr/local/include/apache] /usr/src/apache_1.2.6/src
Would you like to build an ELF shared library? [yN] y
Additional directories to search for .h files []: /usr/src/gd1.2
Would you like the bundled regex library? [yN] n
</PRE>
<P>Come le estensioni frontpage, phtml introduce un problema di sicurezza
perch&eacute; gira con lo uid del server web. Assicuratevi di
attivare il modo sicuro (safe mode) in <CODE>src/php.h</CODE> e
restringete il percorso 
di ricerca a un valore di sicurezza. Ci sono alcune altre opzioni in
<CODE>php.h</CODE> che potreste voler modificare. Se siete molto preoccupati
riguardo il problema della sicurezza, compilate php come un
CGI. Tuttavia ci&ograve; causer&agrave; una diminuzione delle
prestazioni e non sar&agrave; cos&igrave; forte come la versione a
moduli.
<P>Digitate <CODE>make</CODE> per compilare il file. Quando la compilazione
&egrave; terminata, copiare <CODE>mod_php.*</CODE> e <CODE>lib_php.a</CODE>
in <CODE>/usr/src/apache_1.2.6/src</CODE>. Aggiungete la riga: 
<PRE>
Module php_module mod_php.o 
</PRE>

alla fine di <CODE>/usr/src/apache_1.2.6/src/Configuration</CODE>, aggiungete
<PRE>
-lphp -lm -lgdbm -lgd    
</PRE>

alla <CODE>EXTRA_LIBS</CODE> nello stesso file,
<PRE>
application/x-httpd-php phtml 
</PRE>

nell'<CODE>Apache mime.types</CODE> e
<PRE>
AddType  application/x-httpd-php .phtml
</PRE>

nell'Apache <CODE>srm.conf</CODE>. 
<P>Potete anche voler aggiungere <CODE>index.phtml</CODE> alla <CODE>DirectoryIndex</CODE> in questo file, cosicch&eacute; il file <CODE>index.phtml</CODE> sia caricato automaticamente quando si richiama la sua directory.
<P>
<H2>2.3 Aggiungere SSL</H2>

<P>Fate <CODE>cd /usr/src/SSL-0.8.0; ./Configure linux-elf; make; make
rehash</CODE>. Questo creer&agrave; le librerie richieste da
Apache. Potete digitare <CODE>make test</CODE> per verificare la
compilazione. Ora dovete applicare la patch ad Apache. &Egrave;
importante che la applichiate prima della patch per frontpage,
altrimenti frontpage non funzioner&agrave;.  
Fate poi <CODE>cd</CODE> in <CODE>/usr/src/apache_1.2.6/src</CODE> e digitate <CODE>patch &lt; /usr/src/apache_1.2.6/SSLpatch</CODE>.
Impostate <CODE>SSL_BASE=/usr/src/SSLeay-0.8.0</CODE> in <CODE>Configuration</CODE>. Assicuratevi che <CODE>Module proxy_module</CODE> sia disabilitato altrimenti Apache non compiler&agrave;. Se avete la necessit&agrave; di avere un proxy, optate per Squid 
<A HREF="squid.nlanr.net">squid.nlanr.net</A> 
<P>Ora date <CODE>make certificate</CODE> per generare <CODE>SSLconf/conf/httpsd.pem</CODE>.
<P>
<H2>2.4 Aggiungere frontpage</H2>

<P>Rinominate il file <CODE>fp30.linux.tar.Z</CODE> come <CODE>fp30.linux.tar.gz</CODE> altrimenti lo script di installazione non lo trover&agrave;. Fate partire <CODE>./fp_install</CODE> per copiare i file delle estensioni in <CODE>/usr/local/frontpage. zcat</CODE> &egrave; solitamente invocato come <CODE>/usr/bin/zcat</CODE> 
Ora potete applicare la patch per frontpage. Fate <CODE>cd</CODE> in
<CODE>/usr/src/apache_3.2.6/src</CODE> e digitate <CODE>patch &lt;
/usr/src/frontpage/version3.0/apache-fp/fp-patch-apache_1.2.5</CODE>.
Questo creer&agrave; i file <CODE>mod_frontpage.*</CODE>, apporter&agrave;
delle modifiche in <CODE>Configuration</CODE>, ecc. La patch 1.2.5
funzioner&agrave; sia con Apache 1.2.5 che 1.2.6. Saltate la parte
riguardo l'installazione del web, potrete farlo successivamente. 
<P>
<H2><A NAME="s3">3. Mettere tutto assieme</A></H2>

<H2>3.1 Moduli Apache da cercare</H2>

<P>I moduli che io uso in aggiunta a SSL, PHP e frontpage sono:
<PRE>
Module env_module          mod_env.o
Module config_log_module   mod_log_config.o
Module mime_module         mod_mime.o
Module negotiation_module  mod_negotiation.o
Module dir_module          mod_dir.o
Module cgi_module          mod_cgi.o
Module asis_module         mod_asis.o
Module imap_module         mod_imap.o
Module action_module       mod_actions.o
Module alias_module        mod_alias.o
Module rewrite_module      mod_rewrite.o
Module access_module       mod_access.o
Module auth_module         mod_auth.o
Module anon_auth_module    mod_auth_anon.o
Module digest_module       mod_digest.o
Module expires_module      mod_expires.o
Module headers_module      mod_headers.o
Module browser_module      mod_browser.o
</PRE>
<P>
<H2>3.2 Rendere pi&ugrave; sicuri i CGI</H2>

<P>Se siete un ISP (internet service provider) (probabilmente lo siete se
leggete questo) vorrete migliorare la sicurezza. Le utility suexec vi
permetteranno di farlo; eseguiranno i CGI sotto lo UID del webowner
invece di eseguirli con l'UID del server web. Andate in
<CODE>/usr/src/apache_1.2.6/support</CODE> e date <CODE>make
suexec</CODE>. Poi date <CODE>chmod 4711 suexec</CODE> e copiatelo nella
locazione specificata in <CODE>../src/httpd.h</CODE> che solitamente
&egrave; <CODE>/usr/local/etc/httpd/sbin/suexec</CODE>.  
Se questo percorso vi sembra un po' criptico - come &egrave; parso a me - editate <CODE>httpd.h</CODE> e impostate il percorso a un valore per voi pi&ugrave; comodo.
<P>
<H2>3.3 Compilare ed installare il demone del server</H2>

<P>Entrate in <CODE>/usr/src/apache_1.2.6/src</CODE> ed editate
<CODE>Configuration</CODE> per impostare tutti i moduli che volete
includere nel vostro demone apache. Quando l'avete fatto, avviate
<CODE>./Configure</CODE> e <CODE>make.</CODE> Questo &egrave; l'ultimo (ed il
pi&ugrave; complicato) passo per la configurazione che vi
passer&agrave; per le mani. Se ha successo, copiate <CODE>httpsd</CODE> in
<CODE>/usr/sbin.</CODE> Il demone &egrave; piuttosto grande, tenetelo in
considerazione quando assemblate il vostro server web. Create la
directory <CODE>/var/httpd</CODE> con le sottodirectory <CODE>cgi-bin</CODE>, <CODE>conf</CODE>,
<CODE>htdocs</CODE>, <CODE>icons</CODE>, <CODE>virt1</CODE>, <CODE>virt2</CODE> e <CODE>logs</CODE>. In
<CODE>/usr/src/apache_1.2.6/conf</CODE> editate <CODE>access.conf-dist</CODE>,
<CODE>mime.types</CODE> e <CODE>srm.conf-dist</CODE> per adattarli alle vostre
necessit&agrave; e copiateli in <CODE>var/httpd/conf/access.conf</CODE>.
Copiate il file <CODE>httpsd.pem</CODE> che avete creato con <CODE>make
certificate</CODE> in <CODE>/var/httpd/conf</CODE>. Usate il seguente
<CODE>httpd.conf</CODE>:  
<PRE>
ServerType standalone
Port 80
Listen 80
Listen 443
User wwwrun
Group wwwrun
ServerAdmin webmaster@yourhost.com
ServerRoot /var/httpd
ErrorLog logs/error_log
TransferLog logs/access_log
PidFile logs/httpd.pid
ServerName www.yourhost.com
MinSpareServers 3
MaxSpareServers 20
StartServers 3

SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/ssl.log
 
&lt;VirtualHost www.virt1.com&gt;
SSLDisable
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-error.log
TransferLog logs/virt1-access.log
User virt1admin
Group users
&lt;/VirtualHost&gt;

&lt;VirtualHost www.virt1.com:443&gt;
ServerAdmin webmaster@virt1.com
DocumentRoot /var/httpd/virt1
ScriptAlias /cgi-bin/ /var/httpd/virt1/cgi-bin/
ServerName www.virt1.com
ErrorLog logs/virt1-ssl-error.log
TransferLog logs/virt1-ssl-access.log
User virt1admin
Group users
SSLCACertificatePath /var/httpd/conf
SSLCACertificateFile /var/httpd/conf/httpsd.pem
SSLCertificateFile /var/httpd/conf/httpsd.pem
SSLLogFile /var/httpd/logs/virt1-ssl.log
SSLVerifyClient 0
SSLFakeBasicAuth
&lt;/VirtualHost&gt;

&lt;VirtualHost www.virt2.com&gt;
SSLDisable
ServerAdmin webmaster@virt2.com
DocumentRoot /var/httpd/virt2
ScriptAlias /cgi-bin/ /var/httpd/virt2/cgi-bin/
ServerName www.virt2.com
ErrorLog logs/virt2-error.log
TransferLog logs/virt2-access.log
&lt;/VirtualHost&gt;
</PRE>
<P>A seconda dei moduli compilati in esso, non tutte le direttive sono disponibili. Potete ottenere una lista delle direttive disponibili digitando <CODE>httpsd -h</CODE>.
<P>
<H2>3.4 Aggiungere al web il supporto frontpage</H2>

<P>Entrate in <CODE>/usr/local/frontpage/version3.0/bin</CODE> e caricate <CODE>./fpsrvadm.</CODE> Scegliete <CODE>install</CODE> e <CODE>apache-fp.</CODE> 
Rispondete alle domande che seguono nel seguente modo:
<PRE>
Enter server config filename: /var/httpd/conf/httpd.conf
Enter host name for multi-hosting []: www.virt2.com
Starting install, port: www.virt2.com:80, web: ""
Enter user's name []: virt2admin
Enter user's password:
Confirm password:
Creating root web
Recalculate links for root web
Install completed.
</PRE>
<P>Lo username deve essere quello di login unix del webowner, la password
non deve necessariamente corrispondere alla password del
sistema. Dovete aggiungere manualmente
<CODE>sendmailcommand:/usr/sbin/sendmail %r</CODE>  in
<CODE>/usr/local/frontpage/www.virt2.com:80.conf</CODE>, altrimenti i
vostri utenti non saranno in grado di inviare email generate dal web.
Ora date <CODE>kill -HUP</CODE> al vostro httpsd per far rileggere a fp la
sua configurazione. Ora potete accedere a www.virt2.com con il vostro
client frontpage.  
<P>In alcune circostanze <CODE>fpsrvadm</CODE> protesta se non &egrave; stata
installata prima una directory root per il web. Ci&ograve; &egrave;
praticamente inutile, ma dovrete farlo cos&igrave; da far tacere
fpsrvadm. 
<P>
<H2>3.5 Avviare il demone</H2>

<P>Avviare apache con <CODE>httpsd -f /var/httpd/conf/httpd.conf.</CODE> Ora
potete accedere a www.virt1.com sia attraverso http che https e
ci&ograve; &egrave; veramente &quot;cool&quot;. Naturalmente dovete
pagare per ottenere un certificato reale se volete offrire servizi SSL
via web o gli utenti potrebbero deridervi. 
<P>Copiate uno dei file demo della directory degli esempi php in
<CODE>virt1</CODE> per testare phtml. 
<P>
<H2>3.6 Alcune altre considerazioni</H2>

<P>Non usate le estensioni di frontpage '97. Non girano sotto
Linux. Quando si installano le versioni specifiche delle librerie C++,
sembrano funzionare correttamente, ma i vostri logs saranno presto
riempiti di <CODE>premature end of script headers</CODE> e la vostra
casella postale sar&agrave; si riempir&agrave; di proteste. Non usate
le estensioni frontpage '98 antecedenti la versione 3.0.2.1330. Non
confondetevi, i numeri di versione sono a volte non
eterogenei. Facendo un telnet alla porta 80, scrivendo "get/http/1.0"
(e premendo due volte invio), otterrete la versione numero 3.0.4 per
frontpage.  
<P>
<A NAME="fpverswarning"></A> Potete trovare un numero di versione pi&ugrave; specifico eseguendo <CODE>/usr/local/frontpage/currentversion/exes/_vti_bin/shtml.exe -version.</CODE> Versioni pi&ugrave; vecchie hanno dei bug "cattivi" che richiedono che <CODE>httpd.conf</CODE> sia scrivibile dal GID del server web. Ci&ograve; potrebbe farvi strillare se siete particolarmente preoccupati per la sicurezza.  Le versioni a partire dalla 3.0.2.1330 sono pi&ugrave; usabili.
<P>
<H2>3.7 Bug conosciuti</H2>

<P>Quando si utilizza Recalculate Links nel client frontpage, il server inizializza un processo che consuma il 99% dei cicli della CPU e pi&ugrave; di 10 Mb di memoria. Ma anche per i web di medie dimensioni e per macchine veloci, i client spesso ricevono un messaggio di timeout prima che l'elaborazione sia finita correttamente. Informate gli utilizzatori di frontpage di essere pazienti e di non utilizzare Recalculate Links molte volte. Equipaggiate il server con almeno 64 Mb di memoria. 
<P>A questo punto notate che funzionano sia le SSL sia frontpage, ma non
contemporaneamente, questo significa che non potete n&eacute;
pubblicare il vostro web usando SSL, n&eacute;, far uso dei webbots
tramite https. Potete pubblicare il vostro web sulla porta 80 ed
accedere ad esso crittati sulla porta 443, ma i vostri contatori, ecc
si interromperanno. Io considero questo un bug. Il problema
verr&agrave; corretto in SSL 0.9.0. 
<P>
<H2>3.8 Considerazioni finali</H2>

<P>Per coloro che pensano che il titolo di questo howto sia quasi lungo quanto il documento: avete mai sentito Meat Loaf? 
<P>O.K. lettori, per oggi avete finito. Sentitevi liberi di inviarmi le vostre critiche, la vostra gratitudine eterna, fiori, moneta elettronica, automobili, profumi, ecc.
</BODY>
</HTML>