La moda del momento, ciò di cui tutti parlano è senz'altro il World Wide Web.
Mettere su un sito WWW non è certo una cosa esoterica e anche con una modesta Linux box possiamo provare questo brivido.
Questo articolo è il primo di una serie che descriverà l'installazione di un server Web su una macchina Linux e la creazione di programmi per interfacciare il vostro sito ad un database.
Linux è conosciuto come un sistema particolarmente efficiente a livello di networking e personalmente ho verificato che basta una configurazione hardware molto modesta per l'installazione di un server Web.
Nell'ultimo periodo mi sono dedicato all'installazione del server Web della Regione Emilia-Romagna e alla scrittura di tutti i programmi necessari per interfacciare questo server a vari databases.
La Linux box in questione era un 486 a 66 MHz con 16 mega di ram. Non è certo una configurazione modesta, ma anche a pieno regime il server non assorbiva che pochi punti percentuali del carico della macchina, che veniva comunque usata anche come server in una rete di macchine (urgh) Windows for Workgroups, tramite Samba, come pop server per la distribuzione della posta e come news server per un newsgroup locale agli uffici della regione, nonché per lo sviluppo degli script, delle pagine html e del net surfing da parte degli occupanti dell'Ufficio Reti, senza parlare del client SNMP usato per permettere il monitoring della rete locale.
Se si tiene conto che non è obbligatorio che un server Web svolga queste attività e che non è neanche necessario che sia stato installato X (il server non ne ha assolutamente bisogno), ci si rende conto che potrebbe bastare anche un 386 per servire qualche centinaio di connessioni al giorno.
Tutte le indicazioni che seguono, riguardo il reperimento del server http sono relative alla distribuzione Slackware di Linux. Se avete altre distribuzioni e non trovate qualcosa che si chiami pressappoco httpd*.tgz, dovrete scaricarvi il server dalla rete. Non dovrete comunque preoccuparvi di compilare il demone, perché comunque si riescono a trovare pacchetti già compilati e pre-configurati per Linux.
Se avete una distribuzione Slackware, completa dei pacchetti ``contrib'', cioè di quei pacchetti non curati direttamente dal creatore della distribuzione, avete già risolto i vostri problemi. Personalmente ho i cd della Infomagic, nel mio caso è bastato entrare come root, spostarmi nella directory:
e lanciare setup. Scegliendo l'opzione PKGTOOL dal primo menu e Current dal successivo il sistema propone via via i nomi di tutti i pacchetti che trova all'interno della directory corrente, chiedendoci se vogliamo installarli. Il pacchetto da installare è httpd.tgz e contiene il server http della NCSA.
A questo punto avrete i file di configurazione del server nella directory:
il cui contenuto è
-rw-r--r-- 1 root root 938 Oct 23 1994 access.conf-dist
-rw-r--r-- 1 root root 1902 Oct 23 1994 httpd.conf-dist
-rw-r--r-- 1 root root 3263 Dec 13 1993 mime.types
-rw-r--r-- 1 root root 3337 Oct 23 1994 srm.conf-dist
Non potete ancora attivare il demone, perché i file che terminano per *-dist vanno rinominati, ma prima esaminiamoli per verificarne la configurazione.
Editiamo il file httpd.conf-dist. Possiamo lasciare inalterate le opzioni ServerType e Port. Notate l'opzione successiva: User nobody. Questa opzione indica l'utente sotto il quale il server dovrà funzionare. È importante notare che l'utente nobody ha il minimo possibile delle permissions per motivi di sicurezza e questo incide sui programmi che scriveremo successivamente per interfacciare il server Web ai nostri DBs: dovremo tenere sempre conto che se lanciamo lo script da command line questo verrà eseguito con le nostre permissions, non con quelle che il server http gli concederà.
Una opzione che dovremo sicuramente modificare è ServerAdmin: l'indirizzo dell'amministratore del server. Sostituiamo l'indirizzo di default you@your.address con il nostro indirizzo.
Se stiamo installando il server su una macchina non collegata ad Internet possiamo usare un indirizzo del tipo utente@localhost, sostituendo al posto di utente il nome dell'utente gestore del Web Server.
Le opzioni successive riguardano le directory che il server dovrà usare per i suoi file di log. Queste opzioni possono essere lasciate così come sono.
L'ultima opzione, ServerName, è da utilizzare solo se vogliamo che il nome con cui il server dovrà essere noto sia diverso da quello che abbiamo assegnato alla nostra macchina. È importante però che questo nome sia uguale a quello con cui è noto dal DNS (Domain Name Server). Se non avete problemi di alias o se avete in progetto di installare un server su una macchina che non è in rete, al solo scopo di provare i vostri programmi, potete lasciare questa opzione commentata.
A questo punto il vostro server è già in grado di funzionare. Ovviamente se esaminate gli altri file vi renderete conto che manca ancora qualcosa, ad esempio nel file srm.conf-dist trovate riferimenti alla directory /var/httpd/icons, in cui dovreste avere le icone che saranno utilizzate dal vostro server. Per il momento potrete risolvere la cosa creando un link tra la directory in cui avete tutte le icone utilizzate da X e la directory richiesta:
Ora possiamo rinominare i file di configurazione:
$ mv httpd.conf-dist httpd.conf
$ mv srm.conf-dist srm.conf
Un attimo ancora prima di far partire il demone: dobbiamo scrivere una pagina, almeno una per verificare che il server funzioni. La root del nostro Web server è quella specificata nei files access.conf e srm.conf, cioè /var/httpd/htdocs.
Spostiamoci in questa directory e creiamo un file index.html, ad esempio:
<p><i>Ora abbiamo elementi sufficienti per poter testare il server. Da root facciamo partire il demone:
<html>
<head>
<title>Prima pagina del mio server</title>
</head>
<body>
Questa &egrave la prima pagina, la root page, del mio server web personale.
</body>
</html>
</i></p><p> </p>
Tutto a posto! Ci si può già collegare al server: facendo partire X e aprendo il vostro browser preferito basta specificare il vostro URL. Nel caso stiate usando il server su una macchina che non è in rete specificate:
Se è tutto a posto potrete vedere la pagina che avete appena creato, altrimenti potrete trovare qualche indicazione degli errori avvenuti nel file /var/httpd/logs/error_log. Se invece è tutto a posto troverete i log dei collegamenti nel file /var/httpd/logs/access_log.
A questo punto vi consiglio una sana ed istruttiva lettura: l'installazione del server Web vi ha creato una directory, /usr/doc/httpd e ve l'ha riempita di documentazione in formato postscript, testo e html: ce n'è per tutti i gusti. Leggetela!
Quanto pesa il demone http sul vostro sistema? Provate a dare il comando:
sul mio sistema ricevo questa risposta:
<tt> 0 0 2766 1 1 0 269 312 116766 S ? 0:00 httpd </tt>
il server quindi occupa 312 K di ram ed è inattivo nella memoria, in attesa di connessioni, quindi non consuma cicli macchina.
Fantastico!
Ora però viene la parte più impegnativa dell'impresa: usare il server Web per fare qualcosa di più interessante che non sfogliare delle pagine.