Linux WWW HOWTO
di Wayne Leister,
[email protected]
v0.82, 19 Novembre 1997
Questo documento contiene informazioni sul settaggio e l'installazione
di servizi WWW in Linux (sia server che client). Questo testo non
vuole essere un manuale dettagliato, ma semplicemente una panoramica
nonch� un punto di partenza per successive ricerche. Traduzione di
Silvio Porcellana <sporc at mbox.vol.it>.
1. Introduzione
Molte persone usano Linux perch� sono alla ricerca di un buon sistema
operativo che sia anche Internet compatibile. Inoltre, ci sono
istituti, universit�, enti non-profit e piccole imprese che vogliono
mettere on line dei siti Internet con un budget limitato. � qui che il
WWW-HOWTO vuole inserirsi. Questo documento spiega come far funzionare
dei client e server per la parte pi� consistente di Internet - il
World Wide Web.
Tutti i prezzi si intendono in dollari americani. Questo documento
presuppone che si stia utilizzando Linux su una piattaforma Intel: le
istruzioni e la disponibilit� dei prodotti possono variare da
piattaforma a piattaforma. Sono presenti inoltre molti link per il
download del software: quando possibile, � preferibile utilizzare i
siti mirror per ottenere un download pi� veloce e ridurre il traffico
verso il server principale.
Il governo americano probisce alle aziende statunitensi l'esportazione
di algoritmi di crittografia che superino i 40 bit. Pertanto le
compagnie americane offrono di solito due versioni del loro software:
una per il mercato domestico solitamente a 128 bit e una solo per
l'esportazione a 40 bit. Ci� si applica sia ai browser sia ai server
che supportano le transazioni sicure, altrimenti note come Secure
Socket Layer (SSL).
1.1. Copyright
Per motivi legati alla validit� della licenza le note di
copyright devono essere mantenute in lingua originale.
This document is Copyright (c) 1997 by Wayne Leister. The original
author of this document was Peter Dreuw.(All versions prior to 0.8)
This HOWTO is free documentation; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later ver�
sion.
This document is distributed in the hope that it will be
useful, but without any warranty; without even the implied
warranty of merchantability or fitness for a particular pur�
pose. See the GNU General Public License for more details.
You can obtain a copy of the GNU General Public License by
writing to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA.
Trademarks are owned by there respective owners.
ovvero:
Questo documento � Copyright (c) 1997 di Wayne Leister. L'autore
originale � Peter Dreuw (Tutte le versioni prima della 0.8)
Questo HOWTO � documentazione gratuita: si pu� redistribuire
e/o modificare rispettando i termini della Licenza Pubblica
GNU cos� come pubblicata dalla Free Software Foundation; sia
la versione 2 della Licenza che (a vostra scelta) ogni altra
versione pi� recente.
Questo documento � distribuito con la speranza che possa
risultare utile, ma senza alcuna garanzia, nemmeno quella di
vendibilit� o adeguatezza per scopi particolari. Per mag�
giori dettagli, riferirsi comunque alla Licenza Pubblica
GNU.
� possibile ottenere una copia della Licenza Pubblica GNU
scrivendo alla Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA.
I marchi di fabbrica sono di propriet� dei rispettivi proprietari.
1.2. Feedback
Ogni forma di feedback � gradita. Non ho la pretesa di essere un
esperto. Alcune di queste informazioni sono state reperite da siti
scritti male: ci possono essere errori o omissioni. Accertatevi
comunque di avere l'ultima versione del documento prima di inviare
correzioni: il problema potrebbe essere stato risolto nella release
pi� recente (nella prossima sezione � spiegato dove trovare le ultime
versioni del documento). Ogni commento va inviato a:
[email protected].
1.3. Nuove versioni di questo documento
Le nuove versioni di questo documento possono essere scaricate in
formato testo da Sunsite a
<
http://sunsite.unc.edu/pub/Linux/docs/HOWTO/WWW-HOWTO> e da quasi
qualunque altro sito mirror. � possibile vedere l'ultima versione HTML
sul web a <
http://sunsite.unc.edu/LDP/HOWTO/WWW-HOWTO.html>. Ci sono
inoltre versioni HTML presso Sunsite in archivi tar.
2. Installazione di software client per WWW
Il prossimo capitolo � dedicato all'installazione di web browser. Se
il vostro browser favorito non � menzionato, sentitevi liberi di
contattarmi per farmelo sapere. In questa versione del documento, solo
pochi browser hanno la loro sezione, ma ho cercato di includerli tutti
(quelli che ho trovato...) nella sezione Panoramica. Nel futuro, quei
browser che meritano una loro sezione l'avranno.
La sezione Panoramica � pensata per aiutarvi a decidere quale browser
utilizzare e per fornire informazioni di base su ogni singolo browser.
La sezione Dettaglio serve invece per aiutare nell'installazione,
settaggio e manutenzione del browser.
Personalmente, preferisco Netscape: � l'unico browser che si mantiene
aggiornato sulle ultime novit� in fatto di HTML, quali frame, Java,
Javascript, style sheet, transazioni sicure e layer. Non c'� niente di
peggio che provare a visitare un sito e scoprire che non lo si pu�
vedere perch� il prorio browser non supporta alcune nuove
caratteristiche.
Comunque, utilizzo Lynx quando non ho voglia di lanciare il "mostro"
X-Windows/Netscape.
2.1. Panoramica
``Navigator/Communicator''
Netscape Navigator � l'unico browser qui citato che sfrutti
appieno le nuove caratteristiche di HTML avanzato. Alcune di
queste sono i frame, Java, Javascript, update automatico e
layer. Funge anche da client per la posta e per la lettura delle
news. � per� un divoratore di risorse, sia di CPU che di
memoria. Inoltre, crea una cache disco per ogni utente,
sprecando un sacco di spazio. Netscape � un prodotto
commerciale: le imprese hanno un periodo di prova di 30 giorni,
ma non c'� alcun limite per i privati. Vorrei incoraggiare
comunque tutti a registrarsi per supportare Netscape nella sua
lotta contro Microsoft (e cosa sono poi 40 miseri dollari?). La
mia paura � che se Microsoft vince, saremo tutti forzati ad
usare Internet Explorer su una piattaforma Windows :(
``Lynx''
Lynx � uno tra i pi� piccoli browser: � gratuito e il codice
sorgente � disponibile sotto la Licenza GNU. � il re dei browser
testuali, offrendo molte funzioni speciali pur avendo solo
un'interfaccia a caratteri.
Kfm
Kfm fa parte del K Desktop Environment (KDE). Si tratta di un
sistema che funziona sotto X-Windows e che offre molte
caratteristiche quali drag and drop, suoni, un cestino nonch� un
aspetto omogeneo. Kfm � una file manager, ma pu� essere
utiizzato anche come browser. Non bisogna farsi ingannare dal
nome, visto che, pur essendo un prodotto molto giovane, � molto
comodo per navigare sul Web. Supporta i frame, le tabelle, il
download ftp, la visualizzazione di archivi tar e molto altro.
La versione corrente � la 1.39 ed � gratuita: � possibile
utilizzarlo anche senza KDE, ma necessita comunque delle
librerie che accompagnano questo windows manager. Maggiori
informazioni possono essere reperite presso
<
http://www.kde.org>.
``Emacs''
Emacs � un "coltellino svizzero". � un word processor, un
client per la posta e un browser. � molto difficile da
utilizzare all'inizio perch� bisogna imparare tutti i comandi
associati alla tastiera, ma la versione per X-Windows � pi�
semplice dal momento che tutte le funzioni sono sui menu.
Un'ulteriore controindicazione � che � sostanzialmente testuale,
e dunque le immagini possono essere visualizzate solo nella
versione per X-Windows. Anche Emacs � gratuito e il codice
sorgente � disponibile sotto la Licenza GNU.
NCSA Mosaic
Mosaic � un browser per X-Windows sviluppato dal Centro
Nazionale delle Applicazioni per Supercomputer (NCSA)
dell'Universit� dell'Illinois: NCSA ha impiegato quattro anni
per completare il progetto e adesso si � rivolta verso altre
possibilit�. La versione pi� recente � la 2.6, rilasciata il 7
luglio 1995, il cui codice sorgente � disponibile per un uso non
commerciale. Spyglass Inc. <
http://www.spyglass.com> ha tutti i
diritti commerciali su Mosaic. Questo � un browser per X-
Windows molto solido, ma � carente per quanto riguarda le nuove
caratteristiche dell'HTML. Per maggiori informazioni visitate la
home page di Mosaic presso
<
http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/>. Il software
pu� essere scaricato presso
<
ftp://ftp.ncsa.uiuc.edu/Mosaic/Unix/binaries/2.6/Mosaic-
linux-2.6.Z>.
Arena
Arena � un browser per X-Windows concepito quando si stava
testando l'HTML 3.0. Pertanto supporta tutte le caratteristiche
di questa versione, dai fogli di stile alle tabelle. Lo sviluppo
� stato portato avanti da Yggdrasil Computing con l'obiettivo di
giungere alla creazione di un browser grafico gratuito e
pienamente aggiornato. Nonostante ci�, lo sviluppo si � fermato
nel febbraio del 1997 con la versione 0.3.11, che ha
implementato solo una parte degli standard dell'HTML 3.2. Il
codice sorgente � disponibile sotto la Licenza GNU. Informazioni
presso <
http://www.yggdrasil.com/Products/Arena/>. Pu� essere
scaricato da <
ftp://ftp.yggdrasil.com/pub/dist/web/arena/>.
Amaya
Amaya � il browser per X-Windows del W3C per HTML 3.2, di cui
supporta tutti gli standard, nonch� alcuni standard dell'HTML
4.0. Sono previsti tabelle, form, mappe client side, put
publishing nonch� i formati grafici GIF, JPEG e PNG. Si tratta
sia di un browser che di uno strumento di authoring, giunto
adesso alla versione 1.0 beta per il pubblico mentre la 1.1 beta
per il test e lo sviluppo interno sar� rilasciata al pi� presto.
Per informazioni, visitate il sito di Amaya a
<
http://www.w3.org/Amaya/>. Pu� essere scaricato presso
<
ftp://ftp.w3.org/pub/Amaya-LINUX-ELF-1.0b.tar.gz>.
Red Baron
Red Baron � un browser per X-Windows prodotto dalla Red Hat. �
distribuito insieme alla distribuzione di Linux della Red Hat:
non dispongo di molte informazioni, ma so che supporta i frame,
i form e i SSL. Se usate Red Baron, per piacere aiutatemi a
completare questa sezione. Per maggiori informazioni, visitate
il sito Red Hat presso <
http://www.redhat.com>
Chimera
Chimera � un browser X-Windows basilare: l'ultima versione, la
2.0 alfa 6, � stata rilasciata il 27 agosto del 1997 e supporta
alcune caratteristiche dell'HTML 3.2. Per informazioni
<
http://www.unlv.edu/chimera/>. Chimera pu� essere scaricato
presso <
ftp://ftp.cs.unlv.edu/pub/chimera-
alpha/chimera-2.0a6.tar.gz>.
Qweb
Qweb � un altro browser X-Windows molto semplice. Supporta
tabelle, form nonch� mappe server side. L'ultima versione � la
1.3. Per informazioni: <
http://sunsite.auc.dk/qweb/> Il codice
sorgente � disponibile presso
<
http://sunsite.auc.dk/qweb/qweb-1.3.tar.gz> I file binari,
disponibili come RPM Red Hat, possono essere scaricati da
<
http://sunsite.auc.dk/qweb/qweb-1.3-1.i386.rpm>
Grail
Grail � un browser X-Windows sviluppato dalla Corporation for
National Research Initiatives (CNRI). � scritto interamente in
Python, un linguaggio ad oggetti interpretato. L'ultima versione
� la 0.3 rilasciata il 7 maggio 1997: supporta form, bookmark,
hystory, frame, tabelle e altre funzionalit� previste dall'HTML
3.2.
Internet Explorer
Ci sono voci che annuncerebbero la Microsoft in procinto di
portare Internet Explorer su svariate piattaforme Unix - tra cui
forse Linux. Se � vero, ci stanno mettendo un sacco di tempo: se
avete informazioni attendibili, fatevi vivi con un e-mail.
Secondo me, la maggior parte del software menzionato � praticamente
inutilizzabile per una navigazione approfondita sul Web. Non � mia
intenzione criticare gli autori - so che hanno lavorato molto
seriamente sui loro progetti: il punto � che se tutte queste persone
avessero lavorato su un unico prodotto, probabilmente sarebbe venuto
fuori un browser gratuito che avrebbe potuto competere con Netscape o
Internet Exlorer.
A mio parere, fra tutti i browser citati Netscape e Lynx sono i
migliori. A seguire Kfm, Emacs-W3 e Mosaic.
3. Lynx
Lynx � uno dei pi� piccoli (l'eseguibile � di 600 K) e pi� veloci
browser disponibili. Non necessita di molta banda n� di grandi risorse
hardware dal momento che lavora solo in modalit� testo. Pu� funzionare
su qualunque console, terminale o xterm. Non necessita di un sistema X
Windows n� di memoria addizionale.
3.1. Dove trovarlo
Sia la distribuzione Red Hat che la Slackware contengono Lynx.
Pertanto non vi star� ad annoiare con i dettagli per compilare ed
installare Lynx.
La versione pi� recente � la 2.7.1 e puo essere scaricata da
<
http://www.slcc.edu/lynx/fote/> o da quasi tutti i server FTP per
Linux, come ad esempio
ftp://sunsite.unc.edu under
/pub/Linux/apps/www/broswers/ o i siti mirror.
Per maggiori informazioni su Lynx contattare:
Lynx Links
<
http://www.crl.com/~subir/lynx.html>
Lynx Pages
<
http://lynx.browser.org>
Lynx Help Pages
<
http://www.crl.com/~subir/lynx/lynx_help/lynx_help_main.html>
(questa � la pagina che si ottiene lanciando lynx --help o
premendo ? in Lynx)
Nota: le pagine di help per Lynx sono state spostate di recente. Se
avete una vecchia versione, dovrete cambiare lunx.cfg (in /usr/lib) e
farlo puntare al nuovo indirizzo sopra menzionato.
Penso che la funzione pi� interessante di Lynx - nei confronti degli
altri browser - sia la possibilit� di scaricare in batch. � possibile
scrivere uno script shell che scarica un documento, un file o
qualunque altra cosa attraverso http, FTP, gopher, WAIS, NNTP o
file:// e lo salva su disco. Inoltre, � possibile riempire
questionari e form in modalit� batch semplicemente ridirigendo lo
standard input e utilizzando l'opzione -post_data.
Per ulteriori funzioni speciali di Lynx, date un'occhiata ai file di
help e alle pagine di manuale. Se utilizzate una caratteristica di
Lynx che vorreste vedere aggiunta in questo documento, fatemelo
sapere.
4. Emacs-W3
Ci sono diversi "gusti" di Emacs. I due pi� diffusi sono GNU Emacs e
XEmacs. Gnu Emacs � ditribuito dalla Free Software Foundation ed �
quello originale. � rivolto principalmente verso terminali testo, ma
funziona anche sotto X-Windows. XEmacs (che una volta si chiamava
Lucid Emacs) � una versione che gira solo sotto X-Windows sfruttandone
molto le caratteristiche (menu migliori, ecc.)
4.1. Dove trovarlo
Sia la distribuzione Red Hat che la Slackware includono GNU Emacs.
La versione pi� recente � la 19.34. Non sembra esistere un sito web,
mentre il sito FTP � <
ftp://ftp.gnu.ai.mit.edu/pub/gnu/>.
L'ultima versione di XEmacs � la 20.2. Il sito FTP � a
<
ftp://ftp.xemacs.org/pub/xemacs>. Per maggiori informazioni si
XEmacs, visitate <
http://www.xemacs.org>.
Entrambi sono comunque disponibili dall'archivio Linux presso
ftp://sunsite.unc.edu under /pub/Linux/apps/editors/emacs/
Se avete GNU Emacs o XEmacs, probabilmente avete anche il browser W3.
Il modo W3 � un browser quasi completo scritto in Emacs Lisp.
Principalmente tratta le informazioni in maniera testuale, ma pu�
anche visualizzare immagini se utilizzato sotto X-Windows.
Per far funzionare XEmacs in modalit� W3, bisogna andare nel menu
'apps' e selezionare 'browse the web'.
Io non uso Emacs, perci� se qualcuno vuole spiegare come entrare nel
modo W3 lo aggiunger� a questo documento. La maggior parte di queste
informazioni provengono dall'autore originale: se qualcuna �
sbagliata, fatemelo sapere. Fatemi anche sapere se pensate che sia
necessario aggiungere qualche altra informazione su Emacs.
5. Netscape Navigator/Communicator
5.1. Differenti versioni e opzioni.
Netscape Navigator � il re dei browser WWW. Pu� fare quasi tutto:
d'altro canto, per�, � uno dei programmi pi� affamati di memoria e
risorse che io abbia mai visto.
Ci sono tre diverse versioni del programma:
Netscape Navigator include il browser, Netcaster (un client push) e un
semplice programma di posta.
Netscape Communicator include il browser, l'editor, un programma di
posta avanzato, un lettore di news, Netcaster e un'utility per le
conferenze di gruppo.
Netscape Communicator Pro include tutto ci� contenuto nella suite del
Communicator, pi� un calendario di gruppo, emulazione di terminale IBM
e la possibilit� di amministrazione remota (gli amministratori possono
aggiornare migliaia di copie di Netscape senza lasciare la proprio
scrivania).
Oltre alle tre versioni, ci sono altre due opzioni da scegliere.
La prima � fra installazione completa o di base. La completa include
tutto, mentre quella di base comprende abbastanza per cominciare a
navigare. � possibile scaricare i componenti addizionali quando si
vuole (ad esempio supporto multimediale e Netcaster). Questi
componenti possono essere installati attraverso l'utility di Netscape
"Smart Update" (dopo l'installazione, andare in help->software
updates). Al momento non � per� disponibile la versione completa per
Linux.
La seconda opzione � fra la versione per l'interno o per
l'esportazione. Se vivete in Canada o negli Stati Uniti dovete
scegliere la prima, che offre la pi� forte crittografazione a 128 bit
per le transazioni sicure (SSL). La versione per l'esportazione �
invece solo a 40 bit ed � l'unica ad essere autorizzata al di fuori di
Canada e USA.
L'ultima versione di Netscape Navigator/Communicator/Communicator Pro
� la 4.03. Ci sono due differenti versioni per Linux: uno per i vecchi
kernel delle serie 1.2 e uno per i nuovi kernel 2.0. Se non avete
ancora un kernel di questa serie, vi consiglio vivamente un upgrade:
ci sono infatti molti miglioramenti.
Sono inoltre disponibili delle versioni beta, ma di solito durano solo
un mese o gi� di l�.
5.2. Dove trovarlo
Il miglior modo per ottenere il software Netscape � quello di
scaricarlo dal loro sito web a <
http://www.netscape.com/download/>.
Ci sono dei menu che guidano alla scelta: la domanda sulla versione di
Linux si riferisce al kernel (la maggior parte delle persone dovrebbe
avere il 2.0). Se non si � sicuri della versione del proprio kernel,
basta lanciare il comando 'cat /proc/version'. La versione per
l'interno � disponibile solo attraverso il sito web.
Se invece volete la versione per l'esportazione, potete scaricarla
direttamente dai server FTP della Netscape, che tra l'altro sono anche
pi� aggiornati. Per esempio, quando ho scritto questo documento
l'interfaccia web non aveva ancora la versione 4.03 non-beta per
Linux, mentre il sito FTP s�. Ecco i link alle versioni esportabili
per Linux:
Netscape Navigator 4.03 � a
<
ftp://ftp.netscape.com/pub/communicator/4.03/shipping/english/unix/linux20/navigator_standalone/navigator-
v403-export.x86-unknown-linux2.0.tar.gz>
Netscape Communicator 4.03 per Linux 2.0 (kernel) � a
<
ftp://ftp.netscape.com/pub/communicator/4.03/shipping/english/unix/linux20/base_install/communicator-
v403-export.x86-unknown-linux2.0.tar.gz>
Communicator Pro 4.03 per Linux non era ancora disponibile quando ho
scritto questo documento.
Queste URL cambieranno quando usciranno nuove versioni: se i link non
funzionano, potete trovare quelli giusti spulciando il sito FTP
<
ftp://ftp.netscape.com/pub/communicator/>.
Questi server sono a volte molto trafficati: � dunque preferibile
aspettare le ore morte o scegliere un sito mirror. Comunque,
preparatevi ad una lunga attesa dal momento che questi archivi sono
grossi: Navigator � quasi 8 mega, mentre la versione base di
Communicator 10.
5.3. Installazione
Questa sezione spiega come installare la versione quattro di Netscape
Navigator, Communicator e Communicator Pro.
Per prima cosa, scompattate l'archivio in una directory temporanea.
Poi, eseguite lo script ns-install (digitate ./ns-install). In
seguito, create un link simbolico dal file
/usr/local/netscape/netscape a /usr/local/bin/netscape (digitate ln -s
/usr/local/netscape/netscape /usr/local/bin/netscape). Infine,
impostate la variabile d'ambiente $MOZILLA_HOME a /usr/local/netscape,
di modo che Netscape possa trovare i propri file. Se utilizzate bash
come shell, modificate /etc/profile aggiungendo le linee:
MOZILLA_HOME="/usr/local/netscape"
export MOZILLA_HOME
Dopo aver installato il software, esso si aggiorner� automaticamente
con la "Smart Update". Basta lanciare Netscape come utente root e
andare in help->software updates. � da qui, inoltre, che si installano
gli altri componenti nel caso in cui abbiate la versione base.
Nota: lo "Smart Update" non rimuove le vecchie versione di Netscape,
che vanno eliminate manualmente cancellando il file binario di
Netscape e il file delle classi Java (per la versione 3).
6. Installare dei server WWW
Questa sezione contiene informazioni sui differenti server http e su
strumenti addizionali quali linguaggi di scripting per programmazione
CGI ecc. Esistono sul mercato dozzine di server web, ed io ho
analizzato solo quelli pienamente funzionanti: dal momento che alcuni
sono prodotti commerciali, non ho la possibilit� di provarli. Una
buona parte delle informazioni � stata trovata su svariati siti web e
pertanto, in caso incontraste delle imperfezioni, fatemelo sapere.
Per una descrizione tecnica del meccanismo http, date un'occhiata agli
RFC menzionati nel capitolo "Approfondimenti" di questo HOWTO.
Personalmente preferisco utilizzare il server Apache. Ha quasi tutte
le caratteristiche di cui uno ha bisogno, e in pi� � gratis. Devo
ammettere che questa sezione � sbilanciata nei confronti di Apache, ma
� stata una mia scelta quella di concentrare i miei sforzi su questo
server piuttosto che disperderli su tutti quanti. � probabile che mi
occupi pi� approfonditamente degli altri in futuro.
6.1. Panoramica
Cern httpd
Questo fu il primo web server in assoluto: sviluppato dal Centro
Europeo di Ricerche Nucleari (CERN), non � comunque pi�
supportato. Sono noti alcuni gravi bug di questo server, nonch�
la sua lentezza e la "fame" di risorse. L'ultima versione � la
3.0, ma per maggiori informazioni � possibile rivolgersi alla
home page del server http CERN presso
<
http://www.w3.org/Daemon/Status.html>. Si pu� scaricare presso
<
ftp://sunsite.unc.edu/pub/Linux/apps/www/servers/httpd-3.0.term.tpz>
(non si tratta di un errore di battitura: l'estensione �
veramente .tpz, ma probabilmente dovrebbe essere .tgz)
NCSA HTTPd
Il NCSA HTTPd server � il padre di Apache (lo sviluppo si divise
in due server differenti): a causa di ci�, i file di setup sono
molto simili. NCSA HTTPd � gratuito e il suo codice sorgente �
disponibile per chiunque lo voglia. Non ho analizzato questo
server nel documento, ma leggere la sezione su Apache pu�
sicuramente aiutare. Questo server era molto diffuso, ma adesso
� sempre pi� spesso soppiantato da Apache, che lo sostituisce in
maniera perfetta (ha gli stessi file di configurazione) e ne
risolve numerosi problemi. (fonte Nov. 1997 Netcraft survey
<
http://www.netcraft.com/survey/>). La versione piu recente �
la 1.5.2a. Per maggiori informazioni, rivolgersi a
<
http://hoohoo.ncsa.uiuc.edu>.
``Apache''
Apache � il re di tutti i web server, e in pi� � distribuito in
forma gratuita sia come binario che come codice sorgente. �
molto modulare ed � pertanto molto semplice aggiungere
caratteristiche e opzioni fra le tante disponibili: � inoltre
molto diffuso, tanto che al momento attuale copre ben il 44% di
tutti i domini web (50% se si contano anche i suoi derivati).
Ci sono pi� di 695.000 server Apache in funzione (fonte Novembre
1997 Netcraft survey <
http://www.netcraft.com/survey/>).
La versione ufficiale di Apache non ha l'SSL, ma ci sono due
derivati che risolvono il problema.
Stronghold � un prodotto commerciale basato su Apache che costa
$995 nella versione base e $495 in quella economica (basata su
una vecchia versione di Apache). Stronghold � il secondo server
sicuro dopo Netscape (fonte C2 net
<
http://www.c2.net/products/stronghold> e Netcraft survey
<
http://www.netcraft.com/survey/>). Per maggiori informazioni
visitate il sito di Stronghold a
<
http://www.c2.net/products/stronghold/>. � stato sviluppato
fuori dagli Stati Uniti e pertanto � disponibile in tutto il
mondo nella versione a 128 bit.
Apache-SSL � una implementazione gratuita di SSL ma non per un
uso commerciale (RSA ha un brevetto americano sulla tecnologia
SSL). � possibile utilizzarlo per scopi non commerciali negli
Stati Uniti se ci si collega con la libreria RSAREF (gratuita).
Per ulteriori informazioni <
http://www.algroup.co.uk/Apache-
SSL/>.
Netscape Fast Track Server
Fast Track � stato sviluppato da Netscape, ma la versione per
Linux � distribuita da Caldera, sul cui sito web � possibile
trovarlo come Fast Track per OpenLinux. Non so se funzioni solo
su OpenLinux della Caldera o se giri su ogni distribuzione
(scrivetemi se avete la risposta). I server Netscape contano per
l'11,5% (percentuale in discesa) fra tutti i web server (fonte
settembre 1997 <
http://www.netcraft.com/survey/>). Il server
costa $295, ma � incluso nella distribuzione Caldera di
OpenLinux, che costa $399 ($199.50 per le scuole). La pagina
web descrive una bella interfaccia da amministratore per un
setup di soli 10 minuti. Il server supporta SSL a 40 bit, mentre
per quello a 128 c'e bisogno del Netscape Enterprise Server:
purtroppo, per�, questo server non � ancora disponibile per
Linux :( L'ultima versione di Fast Track � la 2.0 (la versione 3
� in fase beta, ma non � stata ancora portata su Linux). Per
comprarne una copia, basta andare sul sito Caldera a
<
http://www.caldera.com/products/netscape/netscape.html> Per
maggiori informazioni, la pagina di Fast Track �
<
http://www.netscape.com/comprod/server_central/product/fast_track/>
WN WN ha molte caratteristiche che lo rendono interessante. Per
prima cosa, � pi� piccolo dei server CERN, NCSA HTTPd e Apache.
Ha inoltre molte funzionalit� senza le quali ci sarebbe bisogno
di programmazione CGI, quali ad esempio ricerca sul sito,
includes avanzati dal lato del server: offre inoltre la
possibilit� di scaricare solo una parte di file con la sua
opzione "ranges". � rilasciato sotto la Licenza Pubblica GNU.
Le versione corrente � la 1.18.3: per maggiori informazioni
rivolgersi a <
http://hopf.math.nwu.edu/>.
AOLserver
AOLserver � prodotto da America On Line. Devo ammettere di
essere rimasto sorpreso dalle potenzialit� di un server web
scritto da AOL. Oltre alle caratteristiche standard, �
supportata infatti la connettivit� ai database: le pagine
possono interrogare un database attraverso dei comandi SQL, e il
database � accessibile attraverso la Open Database Connectivity
(OBCD). Il server ha inoltre un motore di ricerca incorporato
nonch� il supporto per gli script TCL: se ci� non fosse
abbastanza, � possibile aggiungere i propri moduli attraverso le
API per il C. Quasi dimenticavo il supporto per le SSL a 40 bit:
e tutto questo � gratuito!. Per maggiori informazioni, visitate
il sito di AOLserver presso <
http://www.aolserver.com/server/>
Zeus Server
Zeus Server � stato sviluppatod da Zeus Technology. Affermano
di aver prodotto il server pi� veloce, almeno stando ai
risultati del benchmark WebSpec96. � possibile inoltre
controllare e configurare l'applicazione da qualsiasi browser,
nonch� limitare l'utilizzo del processore o della memoria da
parte dei programmi CGI ed eseguirli in un contesto sicuro
(qualunque cosa questo voglia dire...). Supporta infine un
numero illimitato di server virtuali. Il prezzo per la versione
standard � di $999, che diventano $1699 se si vuole l'SSL: la
societ� comunque ha sede fuori dagli Stati Uniti e dunque la
versione a 128 bit � disponibile in ogni parte del mondo. Per
informazioni, visitate <
http://www.zeus.co.uk>. Il sito
americano � a <
http://www.zeus.com>. Vi devo avvisare che, pur
essendo molto convinti delle loro prestazioni in termini di
velocit�, non sono elencati fra i primi dieci server nei
Netcraft Surveys.
CL-HTTP
CL-HTTP significa Common Lisp Hypermedia Server. Se siete dei
programmatori in Lisp, questo � il server che fa per voi, visto
che potete scrivere i vostri CGI in questo linguaggio. Questo
server funziona con un setup dal web e supporta tutte le
funzionalit� standard di un server. CL-HTTP � gratuito e i
sorgenti sono distribuiti pubblicamente. Il sito web �
<
http://www.ai.mit.edu/projects/iiip/doc/cl-http/home-page.html>
(non si poteva fare un url un p� pi� lunga?)
Se avete degli scopi commerciali (sito web aziendale, ISP) vi
raccomando fortemente Apache. Se invece avete bisogno di un setup
facile facile a discapito delle funzionalit� pi� avanzate, allora Zeus
Server fa per voi: ho anche sentito dire che � facile configurare il
server Netscape. Se le vostre esigenze sono per un uso prettamente
"interno", allora potete godere di maggiore flessibilit�. Comunque, a
meno che voi siate alla ricerca di qualche cosa di specifico, vi
suggerisco ancora di utilizzare uno dei tre che ho menzionato.
Questa � solo una lista parziale di tutti i server disponibili. Per un
elenco pi� completo, visitate il sito Netcraft presso
<
http://www.netcraft.com/survey/servers.html> o Web Compare a
<
http://webcompare.internet.com>.
7. Apache
La versione corrente di Apache � la 1.2.4. La versione 1.3 � in fase
beta. Il sito principale di Apache � a <
http://www.apache.org/>.
Un'altra buona fonte di informazioni � Apacheweek a
<
http://www.apacheweek.com/>. La documentazione Apache � abbastanza
buona, perci� non mi addentrer� nei dettagli della configurazione: i
doc sono infatti sia sul sito web che inclusi con i sorgenti (in
formato HTML: ci sono anche dei file di testo ma quelli in HTML sono
meglio). Inoltre, la documentazione dovrebbe migliorare appena prende
il via l'Apache Documentation Project. Fino ad oggi gran parte dei
manuali sono scritti dagli sviluppatori: non per criticarli, ma
obiettivamente i loro testi sono un p� difficili da capire se non si
padroneggia la terminologia.
7.1. Dove trovarlo
Apache � incluso nelle distribuzioni Red Hat, Slackware e OpenLinux:
sebbene non siano magari le ultime versioni, sono comunque degli
eseguibili molto affidabili. L'aspetto negativo, per�, � che non si
pu� cambiare la configurazione delle directory (che � totalmente
diversa fra l'una e l'altra distribuzione nonch� rispetto ai default
Apache).
I codici sono disponibili presso il sito web Apache
<
http://www.apache.org/dist/>. I file binari si trovano nello stesso
posto. � inoltre possibile scaricarli da SunSite a
<
ftp://sunsite.unc.edu/pub/Linux/apps/www/servers/>. Per chi ha Red
Hat, l'RPM con i pi� recenti eseguibili � di solito nella directory
contrib a <
ftp://ftp.redhat.com/pub/contrib/i386/>.
Se il server sar� utilizzato per scopi commerciali, � molto meglio se
vi scaricate i sorgenti dal sito Apache e lo compilate voi stessi.
L'altra possibilit� consiste nell'utilizzare gli eseguibili che
vengono distribuiti con Slackware, Red Hat o OpenLinux, ma questi
possono causare dei problemi di sicurezza: un eseguibile sconosciuto
pu� avere delle backdoor per gli hacker, oppure una patch instabile
potrebbe causare danni al sistema. Inoltre, scaricare i sorgenti vi d�
pi� controllo sui moduli da compilare e sulle directory di default.
Non � po� cos� difficile compilare Apache, e comunque sia non vi
potete dire dei veri utilizzatori di Linux finch� non compilerete da
soli i vostri programmi ;)
7.2. Compilazione e installazione
Per prima cosa bisogna fare un untar dell'archivio in una directory
temporanea. Poi, spostatevi nella directory src. Editate il file di
configurazione per includere eventuali moduli speciali (la maggior
parte dei pi� comuni � comunque gi� inclusa). Non c'� alcun bisogno di
modificare le regole o i parametri del makefile per Linux. Eseguite
poi lo script di configurazione (./Configure). Assicuratevi che dica
"Linux platform" e che sia settato gcc come compilatore. � possibile
editare adesso il file httpd.h per cambiare le directory di default.
La directory home del server - dove vengono cio� mantenuti i file di
configurazione - � settata (se non altrimenti specificato) a
/usr/local/etc/httpd/, ma potreste volerla cambiare in un pi� semplice
/etc/httpd/. La root del server (dove cio� vengono conservate le
pagine HTML) � per default /usr/local/etc/httpd/htdocs/, ma io
preferisco la directory /home/httpd/html (che tra l'altro � il default
di Red Hat). Se avete intenzione di utilizzare su-exec (cfr. sotto,
funzioni speciali) potrebbe essere utile cambiare anche quella
directory. La root del server pu� essere cambiata anche nei file di
configurazione, ma � una buona idea compilarcelo dentro nell'evenienza
in cui Apache non sia in grado di trovare o leggere il file di
configurazione: tutto il resto dovrebbe essere modificato nei file di
config. Infine, lanciate make per compilare Apache.
Se avete problemi relativi alla mancanza di file include, assicuratevi
delle seguenti cose: controllate di avere gli header del kernel (i
file di include) installati per la vostra versione del kernel;
assicuratevi inoltre di avere settati i seguenti link simbolici:
/usr/include/linux link a /usr/src/linux/include/linux
/usr/include/asm link a /usr/src/linux/include/asm
/usr/src/linux link alla directory del sorgenti di Linux (es. linux-2.0.30)
I links possono essere creati con ln -s, comando che funziona come cp
con l'unica differenza che crea un link simbolico (ln -s directory-
sorgente link-di-destinazione).
Quando make ha finito, ci dovrebbe essere un eseguibile chiamato http
nella directory. Questo file deve essere spostato in una directory
binaria: /usr/sbin o /usr/local/sbin potrebbero essere delle buone
scelte.
Copiate poi le sub-directory di configurazione, di log e delle icone
dai sorgenti alla directory home del server. Poi, bisogna rinominare 3
file nella sub-directory conf per liberarsi dell'estensione -dist (es
httpd.conf-dist diventa httpd.conf).
Ci sono inoltre molti programmi di supporto inclusi con Apache. Si
trovano nella directory support e devono essere copiati e installati
separatamente. La maggior parte pu� essere creata usando il makefile
in quella directory (che viene creato quando si lancia lo script
principale Configure). Nessuno di questi programmi � indispensabile
per usare Apache, ma alcuni facilitano il compito dell'amministratore.
7.3. Configurazione
Adesso dovreste avere quattro file nella sub-directory conf (sotto la
directory home del server). httpd.conf configura il demone del server
(numero di porta, utente, ecc.). Il srm.conf imposta la struttura di
base dei documenti, gli handler speciali, ecc. Il access.conf si
occupa invece della configurazione di base per l'accesso. Infine
mime.types comunica al server quale tipo MIME inviare al browser a
seconda delle diverse estensioni.
I file di configurazione hanno comunque una documentazione interna
molto buona (sono pieni di commenti), sempre che si capisca il gergo.
� consigliabile leggerli tutti almeno una volta prima di mettere su il
server. Ogni argomento sulla configurazione � coperto esaurientemente
anche nella documentazione di Apache.
Il file mime.types non � esattamente un file di configurazione. �
infatti utilizzato dal server per tradurre le estensioni dei file in
tipi MIME da inviare al browser e contiene gi� la maggior parte dei
pi� comuni tipi di file cosicch� poche persone hanno bisogno di
modificarlo. Inoltre, col passare del tempo sempre nuovi tipi MIME
saranno aggiunti e dunque la cosa migliore � scaricarsi un nuovo file
(e magari anche una nuova versione del server).
Ricordatevi sempre, quando cambiate i file di configurazione, di
riavviare Apache o di inviargli il segnale SIGHUP con kill per fare in
modo che le modifiche abbiano effetto. Assicuratevi comunque di
mandare il segnale al processo padre e non ai figli: il padre ha di
solito l'indicatore di processo pi� basso, ricavabile anche dal file
httpd.pid nella directory di log. Se accidentalmente vi capita di
inviare il segnale ad un processo figlio, questo verr� terminato e il
processo padre lo riavvier� automaticamente.
Non percorrer� qui tutti i passaggi nella configurazione di Apache: ho
deciso invece di occuparmi di argomenti specifici, scelte da compiere
e peculiarit� del server.
Raccomando comunque a tutti gli utenti di leggere i suggerimenti sulla
sicurezza nella documentazione Apache, disponibile anche sul sito
Apache a <
http://www.apache.org/docs/mics/security_tips.html>.
7.4. Ospitare siti web virtuali
Il Virtual Hosting si ha quando un solo computer ha pi� di un dominio.
Il vecchio metodo consisteva nell'assegnare ad ogni host virtuale un
differente indirizzo IP: col nuovo metodo, invece, si usa un solo
indirizzo IP ma bisogna utilizzare un browser che supporti l'HTTP 1.1.
Il mio suggerimento per le applicazioni commerciali � di utilizzare
ancora il vecchio metodo (pi� indirizzi IP) finch� la maggior parte
delle persone disporranno di un browser compatibile con lo standard
HTTP 1.1 (basta aspettare un annetto o due): in questo modo, inoltre,
si avr� una pi� completa illusione di virtual hosting. Non bisogna
dimenticare poi che, mentre tutti e due i metodi consentono la posta
virtuale (qualcuno me lo pu� confermare?), solo il virtual hosting
basato su differenti indirizzi IP consente l'FTP virtuale.
Se si tratta invece di un server per un club o per una pagina
personale, � forse meglio considerare l'hosting basato sugli IP
condivisi: � pi� economico e si risparmia del prezioso spazio IP.
� poi possibile realizzare un mix di IP condiviso e non sullo stesso
server: per informazioni, visitate Apacheweek a
<
http://www.apacheweek.com/features/vhost>.
7.4.1. Hosting basato sugli IP virtuali
Con questo metodo ogni host virtuale ha il suo indirizzo IP:
determinando l'indirizzo a cui � stata inviata la richiesta, Apache e
gli altri programmi possono decidere quale dominio servire. Questo �
comunque uno spreco incredibile di spazio. Prendete per esempio il
server su cui si trova il mio dominio virtuale: ci sono circa 35.000
account, e cio� 35.000 indirizzi. Eppure, � probabile che i server
effettivamente funzionanti non siano nemmeno una cinquantina.
Per installare e far funzionare questo metodo si procede in due fasi
distinte: prima si dice a Linux di accedere a pi� di un indirizzo IP e
poi si setta Apache per servire gli host virtuali.
Il primo passo per configurare Linux a supportare pi� indirizzi IP �
ricreare il kernel, operazione che funziona meglio con i kernel della
serie 2.0 (o pi� recenti): � necessario includere il networking IP
nonch� il supporto dell'aliasing IP. Per informazioni sulla
compilazione del kernel, date un'occhiata al Kernel HowTo
<
http://sunsite.unc.edu/LDP/HOWTO/Kernel-HOWTO.html>.
La fase successiva � la configurazione di ogni interfaccia al boot: se
state usando la distribuzione Red Hat potete farlo dal Control Panel
avviando X-Windows come utente di root, cliccando sulla configurazione
della rete nel pannello di controllo e specificando nella scheda delle
interfacce la propria scheda di rete. � poi necessario cliccare su
Alias (dovrebbe trovarsi al fondo dello schermo) e completare le
informazioni: bisogna compiere queste informazioni per ogni host
virtuale/indirizzo IP.
Se utilizzate invece delle altre distribuzioni, � probabile che
dobbiate farlo a mano. Potete semplicemente mettere i comandi nel file
rc.local che si trova in /etc/rc.d (in realt� dovrebbe essere tutto
nelle cose collegate alla rete). Dovreste avere un comando ifconfig e
route per ogni dispositivo. Viene cos� assegnato un sub-dispositivo ad
ogni indirizzo alias: per esempio eth0 avrebbe gli alias eth0:0,
eth0:1 ecc. Ecco un esempio di tutta la faccenda:
ifconfig eth0:0 192.168.1.57
route add -host 192.168.1.57 dev eth0:0
� anche possibile aggiungere un indirizzo broadcast e una netmask al
comando ifconfig: se avete un sacco di alias, si potrebbe creare un
ciclo for per facilitare le cose. Leggete comunque l'IP alias mini
howto <
http://sunsite.unc.edu/LDP/HOWTO/mini/IP-Alias.html>.
In seguito bisogna settare il domain name server (DNS) per coprire
questi nuovi domini: se poi non avete ancora un dominio, allora vi
dovete rivolgere alla Internic <
http://www.internic.net> per
registrarlo. Date comunque un'occhiata al DNS-HOWTO per creare il
vostro DNS.
Infine, � necessario configurare Apache per fargli gestire
correttamente i domini virtuali: per far ci� � necessario modificare
il file httpd.conf verso la fine di cui viene comunque fornito un file
di esempio. Tutti i comandi specifici per quell'host virtuale sono
posti fra la tag di direttiva virtualhost, dove � possibile inserire
quasi tutti i comandi. Di solito si setta una diversa directory radice
per i documenti, una directory per gli script e per i file di log. Si
possono aggiungere infiniti host virtuali semplicemente aggiungendo
pi� tag virtualhost.
In rari casi potreste aver bisogno di lanciare server separati per
specifici host: questo � necessario quando una direttiva � necessaria
per un host virtuale ma non � fra quelle ammesse fra le tag per
l'hosting virtuale. In questo caso si deve utilizzare la direttiva
bindaddress: ogni server avr� un nome e dei file di configurazione
diversi, ed ogni server risponder� ad un indirizzo IP, specificato
dalla direttiva bindaddress. Questo � comunque un incredibile spreco
di risorse.
7.4.2. Hosting basato sugli indirizzi IP condivisi
Si tratta di un nuovo metodo per l'hosting virtuale: viene utilizzato
un solo indirizzo IP, riservandolo solo alle macchine reali (non a
quelle virtuali). Nell'esempio precedente, dei 35.000 host virtuali
solo 50 avrebbero un indirizzo IP (uno per ogni macchina). Tutto ci�
� possibile sfruttando le caratteristiche dell'HTTP 1.1: � il browser
che dice al server quale sito vuole. I problemi sorgono con quei
browser che non supportano l'HTTP 1.1, perch� questi leggeranno la
pagina principale del server, che pu� comunque offrire una lista dei
server virtuali a disposizione. Certo, questo rovina un po' l'intera
illusione del hosting virtuale, e cio� quella di avere un proprio
server.
Il settaggio � molto pi� semplice che nell'hosting basato sui diversi
indirizzi IP. � sempre necessario avere un proprio dominio dalla
Internic nonch� configurare il proprio DNS, e Apache � settato nella
stessa maniera di prima. Dal momento per� che si usa sempre lo stesso
indirizzo IP nella tag virtualhost, il server si accorge
automaticamente che si sta utilizzando l'hosting virtuale basato
sull'IP condiviso.
Ci sono molte soluzioni per i vecchi browser, e io adesso spiegher�
quella che secondo me � la migliore. Per prima cosa � necessario
trasformare la pagina principale in host virtuale (condiviso o no): in
questo modo si libera la main page cos� da poterla utilizzare per una
lista di link a tutti i virtual host presenti. Poi bisogna creare una
backdoor per i vecchi browser utilizzando la direttiva ServerPath per
ogni host virtuale all'interno della direttiva virtualhost. Per
esempio, aggiungendo ServerPath /mysite/ a www.mysite.com i vecchi
browser saranno in grado di accedere al sito attraverso
www.mysite.com/mysite/. Infine si mette la pagina di default sul sito
principale che dica gentilmente di scaricarsi un nuovo browser e che
punti a tutte le backdoor per i siti ospitati sul server: quando un
vecchio browser accede al sito, saranno automaticamente inviati alla
pagina principale e riceveranno un menu con tutti i link disponibili.
I nuovi browser, invece, non vedranno mai la pagina principale e
andranno direttamente agli host virtuali. Bisogna ricordare per� che
si devono mantenere i link relativi al proprio sito web dal momento
che le pagine saranno accessibili da due URL differenti
(www.mysite.com e www.mysite.com/mysite/).
Spero di non avervi confuso troppo, ma non � comunque una soluzione
facile. Magari potreste considerare l'hosting virtuale basato sugli
indirizzi IP. Comunque un trucchetto molto simile � spiegato sul sito
Apache a <
http://www.apache.org/manual/host.html>.
Se mai qualcuno avesse una interessante fonte di informazioni per
l'hosting basato sugli IP condivisi, mi farbbe piacere saperlo.
Sarebbe anche simpatico sapere quanti e quali browser supportano
l'HTTP 1.1.
7.5. Script CGI
Ci sono due metodi diversi per consentire ai propri utenti di
utilizzare script CGI: la prima � di considerare tutto ci� che finisce
con .cgi uno script CGI, la seconda � quella di creare una directory
per gli script (generalmente cgi-bin). Si possono anche utilizzare
entrambi i metodi: in tutti e due i casi, comunque, gli script devono
poter essere eseguiti da tutti (chmod 711). Nel concedere accesso agli
script si apre una grande falla nella sicurezza: state bene attenti,
drizzate le orecchie e cercate di minimizzare i rischi.
Personalmente preferisco il primo metodo, specialmente quando gli
script sono complessi: questo metodo consente infatti di mettere gli
script in ogni directory, e a me piace metterli dove risiedono anche
le pagine web che li utilizzano. Per i siti con un sacco di script, �
molto pi� elegante che avere una directory piena zeppa di script.
Questo metodo � poi molto facile da settare: per prima cosa, bisogna
togliere il commento all'handler .cgi alla fine del file srm.conf.
Assicuratevi poi che tutte le vostre directory abbiano l'opzione
option ExecCGI oppure All nel file access.conf, e il gioco � fatto.
Creare una directory apposita per gli script � per� considerato pi�
sicuro. Per farlo bisogna utilizzare la direttiva ScriptAlias nel file
srm.conf, in cui il primo argomento � l'Alias ed il secondo la
directory che sar� utilizzata quando qualcuno chieder� della directory
/cgi-bin/: per esempio ScriptAlias /cgi-bin/ /usr/httpd/cgi-bin/
abilita la directory /usr/httpd/cgi-bin ad eseguire degli script. Per
motivi di sicurezza sarebbe poi meglio cambiare anche le propriet�
delle directory togliendo i commenti alle linee Options none,
AllowOveride none nel file access.conf fornito come esempio. Inoltre,
non bisogna creare le directory per gli script come sub-directory
delle cartelle che contengono la pagina web: per esempio, se la
directory con le pagine � /home/httpd/html/, non mettete gli script in
/home/httpd/html/cgi-bin, bens� in /home/httpd/cgi-bin.
Se volete consentire ai vostri utenti di avere le loro directory di
script, potete usare pi� comandi ScriptAlias, che dovrebbero essere
all'interno della direttiva virtualhost per ogni host virtuale. Se c'�
qualcuno che conosce un metodo pi� semplice per permettere a tutti gli
utenti di avere una propria directory di script senza ricorrere ogni
volta al comando ScriptAlias me lo faccia sapere.
7.6. Directory Web degli Utenti
Ci sono due metodi diversi per trattare le directory web degli utenti.
Si pu� avere una sub-directory nella directory degli utenti (che di
solito � public_html), oppure una directory specifica per le directory
web. Con entrambi i metodi bisogna assicurarsi comunque che queste
directory siano settate in lettura e scrittura nel file access.conf.
Il primo metodo � quello di default di Apache: quando arriva una
richiesta per /~bob/, il server va a cercare la directory public_html
nella cartella di bob. � possibile cambiare la directory con la
direttiva UserDir nel file srm.conf: � comunque necessaria settarla in
lettura ed esecuzione per tutti. Come si pu� vedere, questo metodo
crea un potenziale rischio di sicurezza perch� Apache pu� accedere
alla directory solo se la directory home degli utenti � eseguibile per
tutti.
Il secondo metodo � molto facile da settare: bisogna cambiare la
direttiva UserDir nel file srm.conf. Questa direttiva pu� assumere
svariati formati e quindi � una buona idea dare un'occhiata alla
documentazione Apache per chiarimenti. Comunque, se volete che ogni
utente abbia la propria directory in /home/httpd/, dovete usare
UserDir /home/httpd. In questo caso, quando viene richiesta /~bob/,
viene tradotta in /home/httpd/bob/. Se poi volete una sub-directory
nella cartella di bob, allora dovrete usare UserDir
/home/httpd/*/html: questo infatti porta il server a tradurre in
/home/httpd/bob/html/ e vi consente anche di avere una directory per
gli script (ad esempio /home/httpd/bob/cgi-bin/).
7.7. Daemon mode vs. Inetd mode
Apache pu� essere eseguito in due modalit�: come demone ("daemon")
sempre in funzione (modalit� che Apache chiama 'standalone') oppure
lanciato dal super server inetd.
La modalit� daemon � di gran lunga migliore rispetto a quella con
inetd, ed � anche la modalit� predefinita. L'unico caso in cui si
potrebbe voler utilizzare quest'ultimo modo � in presenza di
applicazioni poco frequenti: il test interno di alcuni script,
l'Intranet di una piccola azienda. Il modo Inetd salva infatti
memoria perch� il server � caricato solo quando effettivamente
richiesto, e solo il demone inetd risiede permanentemente in memoria.
Se non utilizzate Apache molto spesso, potreste utilizzarlo nella
modalit� daemon e lanciarlo solo quando vi serve, per poi ucciderlo
una volta finito (assicuratevi di terminare il processo padre, e non
uno dei figli).
Per impostare la modalit� inetd � necessario modificare un po' di
file. Per prima cosa, in /etc/services vedete se http � gi� presente:
se non lo �, aggiungetelo:
http 80/tcp
Il posto migliore � dopo 79 (finger). Poi dovete modificare il file
/etc/inetd.conf e aggiungerci le linee per Apache
http stream tcp nowait root /usr/sbin/httpd httpd
Assicuratevi di cambiare il path se avete Apache in un altro posto: il
secondo httpd non � un errore, dal momento che il demone inet lo
richiede. Se non utilizzate questo demone, potreste voler togliere i
commenti al resto delle linee nel file cos� da evitare l'attivazione
di altri servizi (FTP, finger, telnet e molte altre cose che di solito
funzionano con questo demone).
Se gi� avete in esecuzione il demone inet (inetd), allora dovete solo
inviargli il segnale SIGHUP (con kill; consultate la documentazione su
kill per informazioni) o riavviare il computer perch� le modifiche
abbiano effetto: se invece non � gi� in esecuzione, dovete avviare il
demone manualmente o metterlo nei file di inizializzazione cos� da
caricarlo all'avvio (la scelta migliore � il file rc.local).
7.8. Autorizzare i comandi put e delete
I nuovi strumenti di authoring HTML supportano un nuovo metodo per
inviare le pagine web al server utilizzando l'http invece dell'FTP:
alcuni di questi prodotti nemmeno lo supportano pi� l'FTP. Apache � in
grado di supportare questo metodo, ma manca lo script per gestire la
richiesta: tale script, per�, potrebbe aprire un serio buco nella
sicurezza e perci� riflettete bene prima di scriverne o installarne
uno.
Se qualcuno � a conoscenza di uno script che funzioni bene me lo dica,
e lo aggiunger� qui.
Per informazioni, consultate Apacheweek
<
http://www.apacheweek.com/features/put>.
7.9. Autenticazione dell'utente/Controllo d'accesso
Questa � una delle caratteristiche che preferisco: consente infatti di
proteggere una directory o un file senza dover usare degli script CGI
nonch� consentire o negare l'accesso in base all'indirizzo IP o al
dominio del client. Si tratta di un grande servizio per tenere lontani
rompiscatole dalla message board o dal guest book (si ricava il loro
indirizzo IP o il dominio dai file di log).
Per attivare l'autenticazione dell'utente la directory deve avere
AllowOverrides AuthConfig settato nel file access.conf. Per
consentire poi il controllo d'accesso (tramite dominio o indirizzo IP)
bisogna poi impostare nella directory anche AllowOverrides Limit.
Per configurare la directory � necessario mettervi un file .htaccess
Per l'autenticazione dell'utente si usa invece di solito un file
.htpasswd oppure .htgroup: questi file possono essere condivisi tra
vari file .htaccess.
Per ragioni di sicurezza raccomando vivamente a tutti di utilizzare le
seguenti direttive nel file access.conf:
<files ~ "/\.ht">
order deny,allow
deny from all
</files>
Se non siete ammnistratori del sistema, potete anche mettere nel
vostro file .htaccess se AllowOverride Limit � impostato per la vostra
directory. Questa direttiva impedir� agli altri di andare a curiosare
dentro i vostri file per il controllo dell'accesso (.htaccess,
.htpasswd, etc).
Ci sono svariate opzioni e tipi di file che possono essere utilizzati
col controllo dell'accesso: non � quindi negli scopi di questo
documento descriverli. Per informazioni su come impostare la User
Authentication date un'occhiata ad Apacheweek a
<
http://www.apacheweek.com/features/userauth> o le pagine NCSA a
<
http://hoohoo.ncsa.uiuc.edu/docs-1.5/tutorials/user.html>.
7.10. su-exec
La funzione su-exec esegue degli script CGI come se l'esecutore ne
fosse anche il proprietario: normalmente viene eseguito come l'utente
del web server (di solito 'nobody'). In questa maniera si consente
agli utenti di accedere ai propri script CGI senza doverli rendere
leggibili a tutti (cosa che sarebbe un rischio per la sicurezza). Se
non si sta attenti, � per� possibile aprire un buco pi� grande di
quello che si vorrebbe coprire dal momento che su-exec esegue dei
controlli prima di eseguire gli script, ma se questi controlli non
sono impostati bene sono problemi.
Utilizzare su-exec non � un mestiere per principianti: se non sapete
quello che state facendo, lasciate perdere. Potreste finire per
consentire ai vostri utenti di acquisire accesso di root al vostro
sistema, e non � quindi conveniente scherzarci. La codifica ed
l'impostazione su-exec � difficile apposta, cos� che i principianti se
ne tengano alla larga (tutto deve essere fatto a mano, niente file di
make, niente script di installazione).
Il codice per su-exec si trova nella directory support dei sorgenti.
Dapprima bisogna modificare il file suexec.h per il proprio sistema:
poi bisogna compilare il codice per su-exec con il comando
gcc suexec.c -o suexec
In seguito si deve copiare l'eseguibile su-exec nella directory
giusta, che Apache preimposta a /usr/local/etc/httpd/sbin/, ma che pu�
comunque essere cambiata modificando httpd.h nella directory dei sor�
genti e ricompilando Apache. Ricordatevi che Apache guarder� solo in
questa directory, e non nel path. � poi necessario cambiare il propri�
etario del file e settarlo a root (chown root suexec) e settare il bit
suid (chmod 4711 suexec). Infine, riavviate Apache e dovrebbe
apparire sullo schermo che si sta utilizzando su-exec.
Gli script CGI dovrebbero essere in lettura per tutti come sempre:
saranno eseguiti automaticamente da ogni utente come il proprietario
del file. Se settate il bit SUID (set user id) sul CGI questo non
verr� eseguito, cos� come non vengono eseguiti gli script posseduti
dagli utenti di sistema (root, bin, ecc.). Per ulteriori informazioni
sulle condizioni di sicurezza che devono essere rispettate,
controllate la documentazione di su-exec: se poi avete problemi potete
anche spulciare il file di log, che si chiama cgi.log.
Su-exec non funziona se lanciate Apache da inetd: questo problema sar�
risolto nelle prossime versioni dal momento che non ci sar� pi� un
modo inetd. Se vi piace giocare col codice sorgente, potreste voler
modificare il file http_main.c per liberarvi delle linee in cui Apache
annuncia che sta utilizzando su-exec (lo stampa erroneamente prima di
qualsiasi output).
Assicuratevi infine di leggere la documentazione Apache riguardante
su-exec: � inclusa con i sorgenti ed � anche disponibile sul sito di
Apache a <
http://www.apache.org/docs/suexec.html>
7.11. Imagemap
Apache � in grado di gestire le imagemap dal lato del server: si
tratta di immagini su una pagina web che portano l'utente in diverse
locazioni a seconda del punto su cui si clicca. Per abilitarle � per
prima cosa necessario assicurarsi che il modulo per le imagemap sia
installato (� uno dei moduli di default). Poi, togliete i commenti
all'handler .map alla fine del file srm.conf: cos� facendo, tutti i
file con estensione .map saranno dei file per le imagemap, dove cio�
vengono settati i diversi link a seconda del punto in cui si clicca.
Apache utilizza i file di mappa seguento lo standard NCSA, di cui vi
presento un esempio:
<a href="/map/mapfile.map">
<img src="picture.gif" ISMAP>
</a>
In questo esempio mapfile.map � il mapfile mentre picture.gif �
l'immagine su cui cliccare.
Esistono molti programmi che possono generare dei mapfile compatibili
con lo standard NCSA, ma � anche possibile crearseli da soli. Per una
discussione pi� approfondita sull'argomento, andate a
<
http://www.apacheweek.com/features/imagemaps>.
7.12. SSI/XSSI
Il Server Side Includes (SSI) aggiunge contenuti dinamici - inseriti
nella pagina - a documenti web altrimenti statici e non interattivi:
il server, infatti, processa gli SSI e passa i risultati alla pagina.
In questo modo, si possono aggiungere intestazioni e note di chiusura,
la data di ultima modifica, eseguire comandi di sistema o degli script
CGI. Con i nuovi eXtended Server Side Includes (XSSI) si pu� fare
ancora di pi�, aggiungendo condizioni di controllo (if...else): �
quasi come avere un linguaggio di programmazione.
Processare tutti i file HTML per cercare comandi SSI sarebbe una
perdita di tempo ed uno spreco di risorse: pertanto, � necessario
distinguere le pagine che contengono HTML normale da quelle con i
comandi SSI. Generalmente si ricorre per questi file a delle
estensioni diverse: la pi� usata � .shtml.
Per abilitare SSI/XSSI assicuratevi per prima cosa che il modulo per
gli include sia installato: poi, modificate srm.conf e togliete i
commenti alle direttive AddType e AddHandler per i file .shtml. Infine
dovete settare Options Includes per tutte le directory dove volete
eseguire file SSI/XSSI modificando il file access.conf. Fatto ci�,
tutti i file con l'estensione .shtml saranno processati per
controllare se contengono comandi SSI/XSSI.
Un altro modo per abilitare le includes � quello di usare la direttiva
XBitHack: se abilitata, controlla che il file sia eseguibile
dall'utente generico e se per quella directory � settata Options
Includes: nel caso in cui si verifichino entrambe le condizioni,
allora il file viene trattato come SSI. Questo procedimento funziona
solo per file con il tipo MIME text/html .html .htm): comunque, non �
consigliabile usare questo metodo.
Esiste poi un rischio di sicurezza nell'assicurare a file SSI di
eseguire comandi di sistema e script CGI: � pertanto possibile
bloccare questa funzione con la direttiva Option IncludesNOEXEC invece
che Option Includes nel file access.conf. Tutti gli altri comandi SSI
continueranno a funzionare.
Per maggiori informazioni, leggete la documentazione Apache su
mod_includes, distribuita con i sorgenti e disponibile a
<
http://www.apache.org/docs/mod/mod_include.html>.
Per una discussione pi� dettagliata su SSI/XSSI, andate su Apacheweek
a <
http://www.apacheweek.com/features/ssi>.
Informazioni sui comandi SSI si trovano anche alla NCSA a
<
http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html>.
Mentre per l'XSSI date un'occhiata a
<
ftp://pageplus.com/pub/hsf/xssi/xssi-1.1.html>.
7.13. Sistema modulare
Apache pu� essere ampliato per supportare quasi tutto attraverso i
moduli, di cui ne esiste gi� un vasto numero in giro per il web. Solo
i moduli di interesse pi� generale sono Distribuiti con Apache, ma
link a tutti i moduli esistenti si possono trovare all'Apache Module
Registry a <
http://www.zyzzyva.com/module_registry/>.
Per informazioni su come scrivere il proprio modulo andate a
<
http://www.zyzzyva.com/module_registry/reference/>
8. Web Server Add-ons
Ops, questa parte non l'ho ancora scritta...
Prossimamente: mSQL, PHP/FI, cgiwrap, Fast-cgi, estensioni MS
frontpage, e altro ancora.
9. FAQ
A dire il vero non ci sono state domande frequenti - per adesso...
10. Letture consigliate
10.1. Libri della O'Reilly & Associates
Secondo me O'Reilly & Associates � la migliore casa per libri tecnici
del pianeta. Si concentrano principalmente su Internet, Unix e
programmazione e cominciano sempre con un bel po' di esempi fino a
giungere ad argomenti molto avanzati: se si legge solo met� del libro
si raggiunge gi� una conoscenza di tutto rispetto. In pi�, riescono ad
aggiungere un po' di humor ad argomenti altrimenti un po' pallosi.
Hanno degli ottimi libri su HTML, PERL, Programmazione CGI, Java,
Javascript, C/C++, Sendmail, Linux e tanto altro. Gli argomenti pi�
"caldi" vengono aggiornati circa ogni 6 mesi e cos� � altamente
consigliato visitare il loro sito web O'Reilly & Associates
<
http://www.ora.com/> o recarsi nel pi� vicino negozio di libri.
State attenti alle imitazioni: se non ha O'Reilly & Associates sulla
copertina, probabilmente � stato scritto da qualcun'altro!
10.2. Internet Request For Comments (RFC)
� RFC1866 scritta da T. Berners-Lee e D. Connolly, "Hypertext Markup
Language - 2.0", 11/03/1995
� RFC1867 scritta da E. Nebel e L. Masinter, "Form-based File Upload
in HTML", 11/07/1995
� RFC1942 scritta da D. Raggett, "HTML Tables", 05/15/1996
� RFC1945 di T. Berners-Lee, R. Fielding, H. Nielsen, "Hypertext
Transfer Protocol -- HTTP/1.0", 05/17/1996.
� RFC1630 di T. Berners-Lee, "Universal Resource Identifiers in WWW:
A Unifying Syntax for the Expression of Names and Addresses of
Objects on the Network as used in the World-Wide Web", 06/09/1994
� RFC1959 di T. Howes, M. Smith, "An LDAP URL Format", 06/19/1996