Sophie

Sophie

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

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Server Web basati su mSQL e perl mini HOWTO: Procedura di Installazione</TITLE>
 <LINK HREF="WWW-mSQL-HOWTO-4.html" REL=next>
 <LINK HREF="WWW-mSQL-HOWTO-2.html" REL=previous>
 <LINK HREF="WWW-mSQL-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="WWW-mSQL-HOWTO-4.html">Avanti</A>
<A HREF="WWW-mSQL-HOWTO-2.html">Indietro</A>
<A HREF="WWW-mSQL-HOWTO.html#toc3">Indice</A>
<HR>
<H2><A NAME="s3">3. Procedura di Installazione</A></H2>

<P>
<P>
<H2><A NAME="ss3.1">3.1 Requisiti Hardware</A>
</H2>

<P>Non possono essere fatte affermazioni generali riguardo i requisiti
hardware di un server database. Troppi fattori dipendono dal numero
di utenti, dal tipo di applicazione, dal carico di rete ecc. In piccoli
ambienti con pochi utenti e scarso traffico di rete una macchina 
i486-equivalente con 16 Mb di RAM pu&ograve; essere completamente sufficiente.
Linux, il sistema operativo, &egrave; molto efficiente in termini di risorse,
e pu&ograve; fornire abbastanza potenza per eseguire un'ampia variet&agrave; di 
applicazioni allo stesso tempo. Naturalmente, processori pi&ugrave; veloci
e pi&ugrave; RAM significano pi&ugrave; velocit&agrave;, ma molto pi&ugrave; importante del
processore &egrave; l'ammontare di RAM. Pi&ugrave; RAM ha il sistema, meno esso &egrave;
costretto ad eseguire swap di processi su disco nel caso la memoria
diventi un collo di bottiglia.
<P>Disponendo di 32 MB di RAM ed un bus PCI, operazioni di ricerca
e ordinamento possono essere eseguite senza ricorso a file di swap ecc., 
ottenendo prestazioni velocissime.
<P>Il modello di installazione descritto in questo articolo &egrave; stato realizzato
su un IBM 686 (133 MHz) con 32 MB di RAM ed un hard disk IDE da 1.2 GB. 
Assumendo che il processo di installazione parta da zero, viene fornita 
una lista dei passi necessari.
<P>
<H2><A NAME="ss3.2">3.2 Requisiti Software</A>
</H2>

<P>
<P>Il software descritto in questo articolo &egrave; disponibile su Internet o su
CD-ROM. Sono stati usati i seguenti prodotti:
<UL>
<LI> Red Hat Linux PowerTools: Red Hat 4.2 - 6 CD Complete Easy-to-Use
estate '97; in alternativa <CODE>http://www.redhat.com</CODE>;
</LI>
<LI> msql SQL database server: &egrave; ora disponibile in due
versioni. Le versioni differiscono nel numero di
transazioni che possono gestire, nell'interfaccia
di amministrazione, ecc. La versione pi&ugrave; vecchia,
1.0.16, &egrave; disponibile dai mirror di Sunsite. Gli
eseguibili ELF possono essere trovati a
<CODE>sunsite:apps/database/sql/msql-1.0.16</CODE>
o su CD-ROM (disco 4 di InfoMagic Linux Developer's
Resource, 6-CD, Dicembre 1996) o alternativamente
dalla seguente URL:
<CODE>http://www.infomagic.com</CODE>.
                
La versione pi&ugrave; nuova, 2.0.1, pu&ograve; essere direttamente
ottenuta dal homepage della Hughes in Australia
(<CODE>http://www.hughes.com.au</CODE>) o da numerosi
mirror sparsi per il mondo;
</LI>
<LI> perl da CPAN: Il  Comprehensive Perl Archive Network.
Walnut Creek CDROM, ISBN 1-57176-077-6, Maggio 1997;
</LI>
<LI> programmi d'esempio CGI di Michael Schilli's dalla
rivista tedesca  iX 8/1997, pagine 150--152, disponibile
via ftp da 
<CODE>ftp.uni-paderborn.de:/doc/magazin/iX</CODE>;</LI>
</UL>
<P>
<H2><A NAME="ss3.3">3.3 Installazione del sistema operativo</A>
</H2>

<P>Linux &egrave; installato nella forma della distribuzione Red Hat 4.2. Allo scopo
di installare con successo, la macchina deve avere un drive CD-ROM 
accessibile da DOS, un drive CD-ROM avviabile (bootable), altrimenti
dev'essere preparato un disco di boot seguendo le istruzioni sul CD di
Linux. 
<P>Durante l'installazione l'utente pu&ograve; selezionare e configurare numerosi 
pacchetti software. &Egrave; conveniente selezionare i seguenti elementi:
<P>
<UL>
<LI> supporto di rete TCP/IP, </LI>
<LI> il server http Apache,</LI>
<LI> il linguaggio di scripting perl</LI>
<LI> il sistema X Window</LI>
<LI> i browser Arena (grafico) e Lynx (testuale).</LI>
</UL>
<P>Tutti questi pacchetti sono forniti con la distribuzione Linux.
Se questi pacchetti non vengono installati ora, si avr&agrave; la possibilit&agrave; di
farlo in seguito con l'assistenza di glint, il gestore per l'installazione
software con interfaccia grafica ed intuitiva. Assicurarsi di operare come
utente root durante l'installazione dei pacchetti software.
<P>Va oltre gli scopi di questo articolo descrivere la procedura di installazione
ed inizializzazione della rete. Consultare la documentazione in linea (manpage,
HTML, texinfo) e stampata (Linux Bible, ecc.&nbsp;ecc.).
<P>La procedura di installazione di Red Hat &egrave; matura e richiede poche attenzioni
da parte dell'utente oltre alle scelte usuali (come fornire il nome host ecc.).
Una volta terminata con successo l'installazione, il sistema &egrave; sostanzialmente
pronto per l'esecuzione.
<P>Installare il sistema X Window non &egrave; obbligatorio per un server puro, ma ci&ograve;
rende l'accesso al sistema ed il test molto pi&ugrave; semplice. La procedura
di installazione di X &egrave; eseguita con uno qualsiasi tra diversi programmi;
XF86Setup offre la pi&ugrave; estesa procedura guidata e necessita del minor numero 
di operazioni manuali per la gestione di fastidiosi dettagli (come 
programmazione del clock video, ecc.). L'unico requisito &egrave; che il software
possa rilevare l'adattatore video. Un adattatore video accelerato economico
(come schede basate su Trio S64 precedenti a S64UV+) di solito funziona
``al volo''.
<P>A questo punto assumiamo che il nostro sistema sia attivo ed in esecuzione
e che Apache, Perl e X Window siano stati installati con successo.
Si assumer&agrave; inoltre che tutte le strutture standard come come file e directory
siano mantenute come definito nell'installazione. Ultimo, ma non meno 
importante, lasceremo l'hostname cos&iacute; com'&egrave;, e accettiamo in questo momento
il nome <CODE>localhost</CODE>. Useremo questo nome per testare l'installazione.
Una volta che l'intero sistema funziona pu&ograve; essere aggiunto il vero nome.
Notare che il setup della rete richiede anche di editare il file
<CODE>/etc/hosts</CODE>, tra gli altri. Idealmente questo dovrebbe essere
fatto con gli strumenti di amministrazione forniti all'utente root.
<P>
<H2><A NAME="ss3.4">3.4 Il server http</A>
</H2>

<P>
<P>Il server http fornito con Linux &egrave; conosciuto come Apache dagli umani e
come httpd dal sistema. La manpage (man httpd) spiega come installare ed
avviare il demone http (quindi http<EM>d</EM>) ma, come detto, se l'installazione
&egrave; avvenuta senza problemi, il server dovrebbe essere in esecuzione.
Si pu&ograve; verificare l'albero delle directory: deve esserci una directory
<CODE>/home/httpd/</CODE> con tre sottodirectory: <CODE>../cgi-bin/</CODE>, 
<CODE>../html/</CODE> e <CODE>../icons/</CODE>. In <CODE>../html/</CODE> deve esserci
un file <CODE>index.html</CODE>. In seguito modificheremo o sostituiremo
questo file con l'<CODE>index.html</CODE> effettivo definito da noi. Tutte
le informazioni di configurazione sono registrate in 
<CODE>/etc/httpd/conf/</CODE>. Il sistema &egrave; ben preconfigurato e non richiede un
ulteriore setup se l'installazione non ha subito errori.
<P>
<H2><A NAME="ss3.5">3.5 I Browser</A>
</H2>

<P>Ci sono essenzialmente tre tipi di browser disponibili per Linux:
sistemi puramente testuali come Lynx, semplici e sperimentali come Arena
(gratis!) e commerciali come Netscape (Shareware!) con supporto Java.
Mentre Lynx e Arena sono forniti con Linux, Netscape deve essere recuperato
da altre fonti. Netscape &egrave; disponibile in forma binaria precompilata per Linux
su architetture ix86 e potr&agrave; essere eseguito ``al volo'' appena 
estratto dall'archivio.
<P>
<H3>Configurazione di Lynx</H3>

<P>
<P>Una volta avviato, Lynx cercher&agrave; una URL predefinita solitamente non molto
significativa se il sistema non ha un accesso permanente ad Internet.
Per cambiare la URL predefinita (e molti altri dettagli di configurazione)
l'amministratore di sistema dovrebbe editare <CODE>/usr/lib/lynx.cfg</CODE>.
Il file &egrave; grande, circa 57000 byte e contiene informazioni a volte
contraddittorie. Esso dichiara la propria home come <CODE>/usr/local/lib/</CODE>.
Non lontano dall'inizio del file c'&egrave; una linea che comincia con <CODE>STARTFILE</CODE>.
Rimpiazzare questa linea con la voce seguente:
<CODE>STARTFILE:http://localhost</CODE> assicurandosi che non siano inseriti
spazi ecc.&nbsp;:
<HR>
<PRE>
# STARTFILE:http://www.nyu.edu/pages/wsn/subir/lynx.html
STARTFILE:http://localhost
</PRE>
<HR>

Dopo aver salvato il file, Lynx dovrebbe mostrare il nostro documento
<CODE>index.html</CODE> se avviato senza argomenti.
<P>
<H3>Configurazione del browser Arena</H3>

<P>
<P>Arena dapprima cerca la propria URL predefinita quando lanciato senza
argomenti. Questa &egrave; codificata nell'eseguibile ma pu&ograve; essere sovrascritta
tramite la variabile d'ambiente <CODE>WWW_HOME</CODE>. L'amministratore di 
sistema pu&ograve; inserire la linea <CODE>WWW_HOME="http://localhost"</CODE> in
<CODE>/etc/profile</CODE>. La variabile deve essere esportata, o tramite una
istruzione separate (<CODE>export WWW_HOME</CODE>) o appendendo <CODE>WWW_HOME</CODE>
all'istruzione export esistente:
<HR>
<PRE>
WWW_HOME="http://localhost"
export WWW_HOME
</PRE>
<HR>

Al successivo login, la nuova URL predefinita sar&agrave; nota ad Arena a livello di
sistema.
<P>
<H3>Installazione e configurazione di Netscape</H3>

<P>
<P>Netscape &egrave; un prodotto commerciale e quindi non incluso nelle distribuzioni
Linux. &Egrave; scaricabile da Internet o disponibile in collezioni software su
CD-ROM. Netscape giunge in forma binaria precompilata per ogni
importante piattaforma hardware. Per scopi di installazione, &egrave; utile creare 
una directory <CODE>/usr/local/Netscape/</CODE> dove scompattare l'archivio. I
file possono essere lasciati sul posto (eccetto per le librerie Java:
seguire le istruzioni nel file <CODE>README</CODE> accluso ai binari Netscape),
ed &egrave; sufficiente creare un link in <CODE>/usr/local/bin/</CODE> eseguendo il 
comando
<PRE>
# ln -s /usr/local/Netscape/netscape .
</PRE>

dalla directory <CODE>/usr/local/bin/</CODE>.
<P>Netscape &egrave; ora pronto per l'uso e pu&ograve; essere configurato attraverso il men&ugrave;
`Options''. In ``General Preferences'' c'&egrave; una scheda ``Appearance'' con il
campo ``Home Page Location''. Immettere qui <CODE>http://localhost</CODE> e non
dimenticare di salvare le opzioni (attraverso ``Options'' --- 
``Save Options'') prima  di uscire da Netscape. All'avvio successivo,
Netscape mostrer&agrave; l'homepage di Apache.
<P>
<H2><A NAME="ss3.6">3.6 Cooperazione tra Apache e i Browser</A>
</H2>

<P>
<P>Si pu&ograve; ora condurre il primo test reale del browser e del server http:
avviare uno dei browser disponibili e la pagina 
<CODE>Apache: Red Hat Linux Web Server</CODE> apparir&agrave;.
Questa pagina mostra la locazione dei file e altre informazioni basilari
sull'installazione del server http. Se questa pagina non viene mostrata
controllare se i file menzionati sopra sono nel posto giusto e se la
configurazione del browser &egrave; corretta. Chiudere i file di configurazione
editati prima di lanciare il browser di nuovo. Se tutti i file sono a
posto e la configurazione del browser sembra corretta, esaminare il setup
di rete della propria macchina. L'hostname potrebbe essere differente
da quello immesso nella configurazione, o il setup di rete potrebbe 
essere in s&eacute; non corretto. &Egrave; molto importante che <CODE>/etc/hosts</CODE>
contenga almeno una linea come
<HR>
<PRE>
127.0.0.1               localhost localhost.localdomain
</PRE>
<HR>

che implica la possibilit&agrave; di connettersi localmente alla propria
macchina. Questo &egrave; verificabile richiamando uno dei programmi
di rete che richiedono un hostname come argomento, come 
<CODE>telnet localhost</CODE>
(ammesso che <CODE>telnet</CODE> sia installato). Se l'esecuzione
fallisce occorre verificare la configurazione di rete prima di continuare.
<P>
<H2><A NAME="ss3.7">3.7 Il Motore Database e la sua installazione</A>
</H2>

<P>
<P>L'installazione del database richiede poca preparazione in pi&ugrave; rispetto
ai passi precedenti.
Ci sono pochi motori database SQL disponibili, con differenti 
prerequisiti per l'amministrazione e l'esecuzione, ed uno dei migliori
&egrave; msql, o ``Mini-SQL'' di David Hughes. msql &egrave; shareware. A seconda della
versione utilizzata, &egrave; previsto un addebito di 250 dollari USA o pi&ugrave; per
siti commerciali, 65 dollari o pi&ugrave; per utenti privati, mentre enti educativi,
formativi e organizzazioni no-profit registrate possono usare il software
gratuitamente. 
I costi esatti sono forniti nelle note di licenza della documentazione del
database. Le cifre indicate sono solo un indicatore approssimativo.
<P>Alcune parole per giustificare la scelta di msql da parte dell'autore.
Prima di tutto, c'&egrave; l'esperienza personale. Durante la ricerca di motori
database, msql si &egrave; dimostrato il pi&ugrave; semplice da installare e mantenere,
e fornisce una sufficiente copertura del linguaggio SQL tale da soddisfare
le esigenze generali. Solo durante la stesura di questo articolo
l'autore ha scoperto le seguenti parole nell'Alligator Descartes'
DBI FAQ (perl database interface FAQ):
<P>
<BLOCKQUOTE>
Dal punto di vista dell'autore, se l'insieme di dati &egrave;
relativamente piccolo, con tabelle inferiori al milione
di righe, e meno di mille tabelle in un dato database, 
allora mSQL &egrave; una soluzione perfettamente accettabile per il
vostro problema. Questo database &egrave; estremamente economico,
meravigliosamente robusto ed ha un supporto eccellente. [...]
</BLOCKQUOTE>
<P>Msql &egrave; disponibile attualmente in due versioni, msql-1.0.16 e 
msql-2.0.1, che differiscono in prestazioni (non osservabili 
in progetti di piccola scala) e software allegato (la versione
pi&ugrave; recente presenta pi&ugrave; strumenti, un proprio linguaggio di scripting
ecc.). Verranno descritte entrambe le versioni di msql siccome la loro
installazioni differisce in alcuni punti.
<P>
<H3>Installazione di msql-1.0.16</H3>

<P>
<P>msql &egrave; disponibile in formato sorgente ed in forma binaria compilata
con supporto ELF. L'uso dei binari ELF rende l'installazione semplice
in quanto l'archivio <CODE>msql-1.0.16.ELF.tgz</CODE> contiene un albero
di directory assoluto e completo, cosicch&eacute; tutte le directory sono
create correttamente quando estratte da <CODE>/</CODE>.
<P>Se si decide di compilare msql-1.0.16 e si intende usare il
pacchetto MsqlPerl piuttosto che l'interfaccia DBI (vedere una 
trattazione dettagliata delle differenze pi&ugrave; oltre) tenere presente
che MsqlPerl potrebbe segnalare degli errori in fase di test che 
richiedono l'installazione di una patch per correggere una errata 
gestione dell'SQL.
La patch &egrave; descritta nella documentazione MsqlPerl
(file <CODE>patch.lost.tables</CODE>).
In particolare le richieste di MsqlPerl includeranno tre linee
in <CODE>msqldb.c</CODE> dopo la linea 1400 che riporta <CODE> entry->def = NULL;</CODE>:
<PRE>
        *(entry->DB) = 0;
        *(entry->table) = 0;
        entry->age = 0;
</PRE>
<P>La porzione di codice dovrebbe apparire come
<HR>
<PRE>
        freeTableDef(entry->def);
        safeFree(entry->rowBuf);
        safeFree(entry->keyBuf);
        entry->def = NULL;
        *(entry->DB) = 0;
        *(entry->table) = 0;
        entry->age = 0;
</PRE>
<HR>
<P>La compilazione di msql richiede diversi passi. Dopo la 
scompattazione dell'archivio con i sorgenti &egrave; necessario
costruire una directory destinazione. Questo si ottiene con
<PRE>
# make target
</PRE>

Se tutto va bene, il sistema risponde con
<BLOCKQUOTE><CODE>
<PRE>
Build of target directory for Linux-2.0.30-i486 complete
</PRE>
</CODE></BLOCKQUOTE>

Bisogna ora spostarsi nella directory appena creata ed immettere
dapprima il comando
<PRE>
# ./setup
</PRE>

La sequenza <CODE>./</CODE> &egrave; necessaria per assicurarsi di eseguire
il comando <CODE>setup</CODE> in questa directory e non un altro con
lo stesso nome. Verr&agrave; richiesto di scegliere la locazione
della directory con i sorgenti e se si desidera una installazione
come utente root. Una volta che l'utente ha effettuato le scelte
il sistema esegue una serie di test per verificare la 
disponibilit&agrave; di software (compilatore, utilit&agrave; ecc.) per terminare
col messaggio
<BLOCKQUOTE><CODE>
<PRE>
Ready to build mSQL.
You may wish to check "common/site.h" although the defaults should be
fine.  When you're ready, type  "make all" to build the software
</PRE>
</CODE></BLOCKQUOTE>
<P>Si potr&agrave; immettere
<PRE>
# make all
</PRE>

Se tutto va come previsto, si legger&agrave;:
<BLOCKQUOTE><CODE>
<PRE>
make[2]: Leaving directory `/usr/local/Minerva/src/msql'
&lt;-- [msql] done

Make of mSQL complete.
You should now mSQL using make install

NOTE : mSQL cannot be used free of charge at commercial sites.
       Please read the doc/License file to see what you have to do.

make[1]: Leaving directory `/usr/local/Minerva/src'
</PRE>
</CODE></BLOCKQUOTE>
<P>Tutti i binari devono essere resi visibili dal percorso di ricerca creando
dei link software in <CODE>/usr/local/bin/</CODE>. Spostarsi nella
directory ed immettere il comando
<PRE>
# ln -s /usr/local/Minerva/bin/* .
</PRE>

dopo il quale i link saranno impostati correttamente.
<P>
<H3>Test di msql-1</H3>

<P>
<P>Dopo l'installazione &egrave; possibile testare se il database funziona.
Prima di ogni altra cosa il server (demone) deve essere avviato.
L'amministratore di sistema con i privilegi di root immette il
comando
<PRE>
# msqld &amp;
</PRE>

(non dimenticare di aggiungere il simbolo <CODE>&amp;</CODE>, altrimenti
msql non verr&agrave; eseguito in background)
dopodich&eacute; apparir&agrave; il seguente messaggio a schermo:
<BLOCKQUOTE><CODE>
<PRE>
mSQL Server 1.0.16 starting ...

Warning : Couldn't open ACL file: No such file or directory
Without an ACL file global access is Read/Write
</PRE>
</CODE></BLOCKQUOTE>
<P>Questo messaggio ci informa che ogni cosa funziona ma che non
esistono restrizioni di accesso. Per il momento &egrave; sufficiente
avviare il demone msql da shell, ma in seguito si potrebbe desiderare
che il sistema esegua automaticamente il comando per noi.
Il comando deve essere inserito in uno script <CODE>rc.d</CODE>
appropriato.
Solo ora l'amministratore pu&ograve; immettere il primo comando 
effettivo di database:
<PRE>
# msqladmin create inventur
</PRE>

msql risponde con <CODE>Database "inventur" created.</CODE>. Come
ulteriore prova, si verifichi che la directory 
<CODE>/usr/local/Minerva/msqldb/</CODE> contiene ora la 
sottodirectory vuota <CODE>../inventur/</CODE>. Potremmo manipolare
il nuovo database con gli strumenti di amministrazione; queste
procedure sono tutte coperte in dettaglio dalla documentazione
msql.
<P>
<H3>Installazione di msql-2.0.1</H3>

<P>
<P>C'&egrave; una versione pi&ugrave; recente e pi&ugrave; potente del server mSQL di
Huges, l'installazione del quale differisce in pochi punti.
L'installazione ex-novo di msql-2 implica i passi seguenti.
Copiare l'archivio nel punto di estrazione previsto, per
esempio <CODE>/usr/local/msql-2/</CODE>, poi estrarre i file:
<PRE>
# tar xfvz msql-2.0.1.tar.gz 
</PRE>
<P>Spostarsi nella directory radice dell'albero di installazione
e immettere
<PRE>
# tar xfvz msql-2.0.1.tar.gz 
</PRE>
<P>spostarsi in <CODE>targets</CODE> e cercare il proprio tipo di
piattaforma. Dovrebbe esserci una nuova sottodirectory
<CODE>Linux-</CODE><I>(vostra versione)-(vostra cpu)/</I>.
Spostarsi in essa ed avviare il programma di setup:
<PRE>
# ./setup
</PRE>
<P>C'&egrave; anche un file <CODE>site.mm</CODE> che pu&ograve; essere editato.
Vogliamo conservare il percorso di installazione in 
<CODE>/usr/local/Minerva/</CODE> (predefinito per msql 1.0.16)?
In questo caso modificare la linea <CODE>INST_DIR=...</CODE> di
conseguenza. Altrimenti, lasciare tutto com'&egrave;.
<P>Ora possiamo lanciare la compilazione del database
<PRE>
# make
# make install
</PRE>
<P>Se tutto va per il vero giusto, vedremo un messaggio come:
<BLOCKQUOTE><CODE>
<PRE>
[...]

Installation of mSQL-2 complete.

*********
**   This is the commercial, production release of mSQL-2.0
**   Please see the README file in the top directory of the
**   distribution for license information.
*********
</PRE>
</CODE></BLOCKQUOTE>
<P>Dopo che tutto &egrave; installato correttamente dobbiamo curarci
dei dettagli amministrativi. Qui comincia la vera differenza
da msql-1. Anzitutto, creare un utente responsabile della
amministrazione del database.
<P>
<PRE>
# adduser msql
</PRE>
<P>Poi si imposti <CODE>msql</CODE> come proprietario di tutti i file
nella directory mSQL col comando:
<PRE>
# cd /usr/local/Minerva
# chown -R msql:msql *
</PRE>
<P>Poi possiamo creare link per tutti gli eseguibili binari del database
in <CODE>/usr/local/bin/</CODE> col comando:
<PRE>
# ln -s /usr/local/Minerva/bin/* .
</PRE>
<P>
<P>
<H3>Test di msql-2</H3>

<P>Possiamo avviare il server database con il comando
<CODE>msql2d &amp;</CODE>; dovremmo ottenere una risposta simile a questa:
<BLOCKQUOTE><CODE>
<PRE>
Mini SQL Version 2.0.1
Copyright (c) 1993-4 David J. Hughes
Copyright (c) 1995-7 Hughes Technologies Pty. Ltd.
All rights reserved.

        Loading configuration from '/usr/local/Minerva/msql.conf'.
        Server process reconfigured to accept 214 connections.
        Server running as user 'msql'.
        Server mode is Read/Write.

Warning : No ACL file.  Using global read/write access.
</PRE>
</CODE></BLOCKQUOTE>
<P>Ci&ograve; sembra perfetto. Il database &egrave; compilato ed installato, e 
possiamo ora continuare con i moduli perl siccome questi
si basano in parte sulla presenza di un database funzionante
per il test.
<P>Incidentalmente, questo &egrave; anche un buon momento per stampare
il manuale completo fornito con msql-2.0.1:
<PRE>
# gzip -d manual.ps.gz
# lpr manual.ps
</PRE>
<P>Possiamo ora procedere con la compilazione delle interfacce, ma
&egrave; una buona idea mantenere il server SQL attivo ed in esecuzione
perch&eacute; ci&ograve; rende il test delle librerie di interfaccia un po' pi&ugrave;
semplice.
<P>
<H2><A NAME="ss3.8">3.8 Scelta delle interfacce: DBI/mSQL, MsqlPerl, Lite</A>
</H2>

<P>Una frase spesso citata del Camel Book (la principale documentazione
perl) afferma che c'&egrave; pi&ugrave; di un modo di ottenere un risultato quando
si usa perl. Questo, ahim&egrave;, resta vero anche per il nostro modello di
applicazione. Ci sono fondamentalmente tre modi di accedere ad un
database msql via CGI. Prima di tutto la domanda &egrave; se utilizzare o 
meno perl. Se usiamo perl (su ci&ograve; si focalizza questo articolo) 
potremo ancora scegliere tra due modelli completamente diversi di 
interfaccia. A fianco del perl, possiamo anche utilizzare il
linguaggio scripting di msql, chiamato Lite, che &egrave; ragionevolmente
semplice e simile al C.
<P>
<H3>DBI e DBD-mSQL</H3>

<P>Al momento della redazione di questo articolo, l'uso della interfaccia
perl DBI per l'accesso a database viene preferito. DBI ha alcuni 
vantaggi: fornisce un controllo unificato di accesso ad un numero di
database commerciali per mezzo di un unico insieme di comandi. Il
database effettivamente in uso su un dato sistema &egrave; poi contattato
attraverso un driver che nasconde efficacemente le peculiarit&agrave; del
database al programmatore. Cos&iacute;, l'uso di DBI permette una agevole
transizione tra differenti database di differenti produttori. In un
singolo script &egrave; possibile contattare diversi database. Fare 
riferimento alle DBI-FAQ per i dettagli.
C'&egrave;, tuttavia, uno svantaggio: l'interfaccia DBI &egrave; ancora in fase
di sviluppo e i numeri di versione aumentano rapidamente (talvolta
gli aggiornamenti si hanno in meno di un mese). Analogamente, anche
i singoli driver di database sono aggiornati frequentemente e possono
riferirsi a specifiche versioni dell'interfaccia di database.
Utenti che effettuano nuove installazioni dovrebbero attenersi strettamente
ai numeri di versione dati in questo articolo perch&eacute; altre versioni
possono causare problemi di compilazione e di test la risoluzione dei
quali non &egrave; cosa per gente debole di cuore.
<P>
<H3>MsqlPerl</H3>

<P>MsqlPerl &egrave; una libreria per l'accesso a msql direttamente da script
perl. Essa scavalca l'interfaccia DBI ed &egrave; piuttosto compatta. 
Sebbene essa lavori bene con entrambe le versioni di msql, il suo uso
non &egrave; pi&ugrave; consigliato a vantaggio dell'interfaccia DBI generalizzata.
Nondimeno, in un contesto specifico, MsqlPerl pu&ograve; risultare la scelta
giusta grazie alle dimensioni contenute ed alla facilit&agrave; di 
installazione. Da notare, essa ha meno dipendenze dalla versione di
quelle rivelate dall'interazione di DBI con diversi driver di 
database.
<P>
<H3>Il linguaggio scripting di msql: Lite</H3>

<P>Ultimo ma non meno importante, msql-2 possiede un suo linguaggio di 
script: Lite. Il linguaggio &egrave; un parente stretto del C, snellito
dalle sue stranezze e arricchito con caratteristiche di tipo shell
(in sintesi, qualcosa di simile ad una versione di perl molto
specializzata). Lite &egrave; un linguaggio semplice ed &egrave; ben documentato
nel manuale msql-2. Il pacchetto msql-2 fornisce anche una applicazione
di esempio basata su Lite.
<P>Non descriveremo Lite in questa sede perch&eacute; esso &egrave; specifico di 
msql-2, e perch&eacute; si assume che i lettori di questo articolo abbiano
un interesse ed una comprensione di base del perl. Nondimeno un 
approfondimento di Lite &egrave; altamente raccomandato: Lite pu&ograve; fornire
la soluzione vincente in un ambiente basato esclusivamente su msql-2 
(senza ricorso ad altri database), grazie alla sua concezione semplice
e diretta.
<P>
<H2><A NAME="ss3.9">3.9 La via generale: DBI e DBD-msql</A>
</H2>

<P>Assumiamo che perl sia stato installato durante il setup di sistema o 
attraverso il gestore pacchetti summenzionato. Non daremo altri dettagli qui.
Per verificare che la versione di perl sia aggiornata eseguiamo:
<P>
<PRE>
# perl -v
</PRE>
<P>perl dovrebbe rispondere col seguente messaggio:
<BLOCKQUOTE><CODE>
<PRE>

 This is perl, version 5.003 with EMBED
        Locally applied patches:
        SUIDBUF - Buffer overflow fixes for suidperl security

        built under linux at Apr 22 1997 10:04:46
        + two suidperl security patches

Copyright 1987-1996, Larry Wall
</PRE>
</CODE></BLOCKQUOTE>
<P>Probabilmente, tutto &egrave; a posto.  Il passo successivo include
l'installazione delle librerie perl per database in generale 
(DBI), il driver msql (DBD-mSQL) e CGI. Il driver CGI &egrave;
necessario in ogni caso.
Sono necessari i seguenti archivi:
<OL>
<LI> DBI-0.81.tar.gz</LI>
<LI> DBD-mSQL-0.65.tar.gz</LI>
<LI> CGI.pm-2.31.tar.gz (or successivo)</LI>
</OL>
<P>Qui occorre una puntualizzazione per i neofiti: l'installazione
di test descritta qui funziona bene utilizzando software con 
<EM>esattamente</EM> questi numeri di versione, mentre combinazioni
di altre versioni falliscono per un motivo o per l'altro.
Il debug di combinazioni di versioni difettose &egrave; sconsigliabile a
chi non abbia grande familiarit&agrave; con i dettagli delle convenzioni
di chiamata delle interfacce ecc.
In alcuni casi un metodo pu&ograve; essere semplicemente rinominato pur
effettuando lo stesso compito, ma a volte la struttura interna cambia
significativamente. Quindi, ancora una volta, &egrave; necessario mantenere
i numeri di versione qui indicati se si vuole operare in sicurezza, 
anche se nel frattempo fossero comparse versioni successive.
Aggiornamenti frequenti di queste interfacce sono una regola piuttosto 
che un'eccezione, quindi l'installazione di versioni differenti da quelle
indicate pu&ograve; essere fonte di problemi.
<P>&Egrave; molto importante che il driver di database per mSQL (DBD-mSQL) sia
installato <EM>dopo</EM> l'interfaccia generica DBI.
<P>Si comincer&agrave; creando la directory <CODE>/usr/local/PerlModules/</CODE> 
siccome &egrave; molto importante mantenere l'albero originale delle
directory perl intatto. Potremmo anche scegliere un nome di directory 
diverso siccome il nome non &egrave; assolutamente critico, e sfortunatamente
ci&ograve; non &egrave; specificato nei file README dei vari moduli perl.
Dopo aver copiato gli archivi suddetti in <CODE>/usr/local/PerlModules/</CODE>
li scompattiamo con
<PRE>
# tar xzvf [file-archivio]
</PRE>
<P>per ognuno dei tre archivi. Non dimenticare di fornire il nome di file
corretto a <CODE>tar</CODE>. Il processo di installazione per i tre moduli 
&egrave; essenzialmente standardizzato; solo i messaggi a schermo che mostrano
passi significativi per i singoli pacchetti sono riportati nel seguito.
<P>
<H3>Installazione dell'interfaccia database di perl - DBI</H3>

<P>
<P>L'interfaccia verso il database deve sempre essere installata prima
del driver di database specifico. La scompattazione dell'archivio 
DBI crea la directory <CODE>/usr/local/PerlModules/DBI-0.81/</CODE>.
Spostandosi nella directory, si trovano un file <CODE>README</CODE> (che
andrebbe letto) ed un perl-Makefile (estensione .PL). 
Diamo il comando
<PRE>
# perl Makefile.PL
</PRE>
<P>Il sistema dovrebbe rispondere con un lungo messaggio la cui parte 
importante &egrave; mostrata qui:
<P>
<BLOCKQUOTE><CODE>
<PRE>
[...]
MakeMaker (v5.34)
Checking if your kit is complete...
Looks good
        NAME => q[DBI]
        PREREQ_PM => {  }
        VERSION_FROM => q[DBI.pm]
        clean => { FILES=>q[$(DISTVNAME)/] }
        dist => { DIST_DEFAULT=>q[clean distcheck disttest [...]
Using PERL=/usr/bin/perl

WARNING! By default new modules are installed into your 'site_lib'
directories. Since site_lib directories come after the normal library
directories you MUST delete old DBI files and directories from
your 'privlib' and 'archlib' directories and their auto subdirectories.

Writing Makefile for DBI
</PRE>
</CODE></BLOCKQUOTE>
<P>Questo dovrebbe andare bene, come indicato dal programma (looks good), e
possiamo procedere col passo successivo:
<PRE>
# make
</PRE>

Se non si hanno messaggi di errore (il protocollo dettagliato mostrato
a schermo <EM>non</EM> &egrave; un messaggio di errore) si testi la nuova libreria
installata con il comando
<PRE>
# make test
</PRE>

Osservare le seguenti linee di output (effettuare lo scroll all'indietro
con <CODE>[Shift]-[PgUp]</CODE>):
<BLOCKQUOTE><CODE>
<PRE>
[...]
t/basics............ok
t/dbidrv............ok
t/examp.............ok
All tests successful.
[...]
DBI test application $Revision: 1.20 $
Switch: DBI-0.81 Switch by Tim Bunce, 0.81
Available Drivers: ExampleP, NullP, Sponge
ExampleP: testing 2 sets of 5 connections:
Connecting... 1 2 3 4 5
Disconnecting...
Connecting... 1 2 3 4 5
Disconnecting...
Made 10 connections in  0 secs ( 0.00 usr  0.00 sys =  0.00 cpu)

test.pl done
</PRE>
</CODE></BLOCKQUOTE>

Il passo finale &egrave; quello di installare tutti i file nelle directory
appropriate. Ci&ograve; si ottiene col comando
<PRE>
# make install
</PRE>

Non resta altro. Se per qualche ragione l'installazione fallisce e deve 
essere rieseguita non dimenticarsi di eseguire prima
<PRE>
# make realclean
</PRE>

Questo rimuove i resti indesiderati della precedente installazione. Si 
possono anche rimuovere i file installati copiando il contenuto dello
schermo (mostrato abbreviato)
<BLOCKQUOTE><CODE>
<PRE>
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBIXS.h
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.so
Installing /usr/lib/perl5/site_perl/i386-linux/./auto/DBI/DBI.bs
[...]
Writing /usr/lib/perl5/site_perl/i386-linux/auto/DBI/.packlist
Appending installation info to /usr/lib/perl5/i386-linux/5.003/perllocal.pod
</PRE>
</CODE></BLOCKQUOTE>

in un file, rimpiazzando ogni occorrenza di <CODE>Installing</CODE> con <CODE>rm</CODE>.
Se tale file viene chiamato <CODE>uninstall</CODE> si pu&ograve; poi eseguire
<PRE>
# . uninstall
</PRE>

che rimuover&agrave; i file installati.
<P>
<H3>Il driver msql di perl DBD-mSQL </H3>

<P>
<P>Il driver msql pu&ograve; essere installato soltanto <EM>dopo</EM> la felice
installazione dell'interfaccia generica per database di perl.
<P>I passi fondamentali sono gli stessi di sopra; cos&igrave; avremo dapprima
<PRE>
# perl Makefile.PL
</PRE>
<P>Qui, il sistema dovrebbe rispondere con un invito alla lettura della 
documentazione a corredo. Esso rilever&agrave; poi dove risiede msql, e chieder&agrave;
quale versione &egrave; in uso.
<BLOCKQUOTE><CODE>
<PRE>

$MSQL_HOME not defined. Searching for mSQL...
Using mSQL in /usr/local/Hughes

 -> Which version of mSQL are you using [1/2]?
</PRE>
</CODE></BLOCKQUOTE>

inserire il numero di versione corretto. Seguiranno poche linee di testo.
Osservare le seguenti:
<BLOCKQUOTE><CODE>
<PRE>
Splendid! Your mSQL daemon is running. We can auto-detect your configuration!

I've auto-detected your configuration to be running on port: 1114
</PRE>
</CODE></BLOCKQUOTE>
<P>Si pu&ograve; ora testare il driver con
<PRE>
# make test
</PRE>

Di nuovo, segue un output piuttosto lungo. Se esso termina con
<BLOCKQUOTE><CODE>
<PRE>
Testing: $cursor->func( '_ListSelectedFields' ). This will fail.
        ok: not a SELECT in msqlListSelectedFields!
Re-testing: $dbh->do( 'DROP TABLE testaa' )
        ok
*** Testing of DBD::mSQL complete! You appear to be normal! ***
</PRE>
</CODE></BLOCKQUOTE>

si &egrave; sulla buona strada ed &egrave; possibile installare il driver con
<PRE>
# make install
</PRE>

Questo conclude le operazioni di installazione; il prossimo paragrafo
riguarda MsqlPerl e se si &egrave; scelto l'uso di DBI pu&ograve; essere saltato. 
<P>
<H2><A NAME="ss3.10">3.10 L'interfaccia MsqlPerl</A>
</H2>

<P>Se si decide di usare esclusivamente l'interfaccia MsqlPerl non occorre
il driver di database generico, ma solo <CODE>MsqlPerl-1.15.tar.gz</CODE>, 
siccome, come detto in precedenza, MsqlPerl fornisce una interfaccia
diretta tra server database e perl senza l'uso dell'interfaccia DBI.
Installazione e test sono immediati.
<P>Dopo aver eseguito <CODE>perl Makefile.PL</CODE> l'utilit&agrave; make pu&ograve; essere 
avviata. Dapprima occorrer&agrave; rispondere alla domanda su dove risiede msql.
Se msql &egrave; in <CODE>/usr/local/Minerva/</CODE> si potr&agrave; confermare la risposta
di default.
<P>Poi eseguire <CODE>make test</CODE>. Prima di ci&ograve; bisogna assicurarsi di avere
un database chiamato <CODE>test</CODE> e di possedere i diritti di lettura/scrittura
su di esso. Tale database pu&ograve; essere creato con
<PRE>
# msqladmin create test
</PRE>
<P>
<H2><A NAME="ss3.11">3.11 La libreria CGI di perl</A>
</H2>

<P>
<P>L'installazione del componente CGI di perl &egrave; il pi&ugrave; semplice dei tre
passi. &Egrave; sufficiente eseguire i comandi seguenti nell'ordine dato e tutto 
&egrave; fatto:
<P>
<PRE>
# perl Makefile.PL
# make
# make install
</PRE>
<P>
<P>Diversamente dai driver precedenti questa interfaccia non ha una opzione 
di test (<CODE># make test</CODE>) siccome gli altri moduli <EM>devono</EM>
essere testati in ogni caso.
<P>Viene anche creata una sottodirectory con script CGI di esempio. &Egrave; possibile
copiare i contenuti di questa directory in <CODE>/home/http/cgi-bin/</CODE> 
ed usare il browser per sperimentare gli script.
<P>
<H2><A NAME="ss3.12">3.12 Lista di controllo dell'installazione</A>
</H2>

<P>Abbiamo compiuto i passi seguenti, nell'ordine dato:
<OL>
<LI> Installazione di Linux con supporto di rete</LI>
<LI> Installazione di un server http (Apache)</LI>
<LI> Installazione di un browser (Arena, lynx o Netscape)</LI>
<LI> Installazione di un server SQL (msql)</LI>
<LI> Installazione di una interfaccia perl SQL </LI>
<LI> Installazione dei file CGI </LI>
</OL>
<P>Infine, &egrave; possibile fare un po' di pulizia. Tutti i rami di directory 
contenenti i sorgenti per le installazioni possono essere rimossi (tuttavia, 
non vanno cancellati gli archivi originali!) siccome tutti i file binari e 
la documentazione si trovano in directory differenti.
<P>
<HR>
<A HREF="WWW-mSQL-HOWTO-4.html">Avanti</A>
<A HREF="WWW-mSQL-HOWTO-2.html">Indietro</A>
<A HREF="WWW-mSQL-HOWTO.html#toc3">Indice</A>
</BODY>
</HTML>