Manuale di Custer web server

Transcript

Manuale di Custer web server
Manuale di Custer web server
Lorenzo Ricci
24 Febbraio 2006
Diario delle Revisioni
Revisione 0
11 Gennaio [email protected]
2006
Revisione 1
24 Febbraio [email protected]
2006
Questo manuale descrive l’implementazione e l’utilizzo di Custer web server.
Custer e‘ un piccolo webserver per il protocollo HTTP. Una volta avviato Custer lavora con la stessa interfaccia
dei principali webserver, accettando le richieste dell’utente e restituendo (salvo bug non previsti!!) la pagina web
o il risultato dello script richiesti.
E‘ stata creata una pagina web ’index.html’ che serve a testare il funzionamento di Custer e su cui e‘ riportata
una piccola revision history con gli autori e le funzionalita‘ aggiunte. Sono stati inoltre creati due piccoli script
per testare le richieste GET e POST. Nella cartella dedicata si trovano ’hello.bash’, che serve a testare i metodi
GET e HEAD, e ’hello2.bash’, che serve a testare il metodo POST.
Le richieste possono essere effettuate con il protocollo HTTP 1.0 che processa una sola richiesta, o con il
protocollo HTTP 1.1 che mantiene la connessione anche dopo la risposta del server.
Sommario
Implementazione di Custer web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Strumenti utilizzati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifiche tecniche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilizzo di Custer web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installazione e primo avvio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opzioni dalla linea di comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Caratteristiche supportate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
History delle funzionalita‘ aggiunte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
2
2
2
2
3
3
Implementazione di Custer web server
Strumenti utilizzati
La realizzazione di Custer web server ha richiesto lo studio approfondito del protocollo HTTP 1.0 e HTTP 1.1,
come definito dal consorzio W3C. Per questo sono stati utilizzati i seguenti documenti:
• >HTTP made really easy (http://www.jmarshall.com/easy/http/) Un ottimo tutorial su HTTP 1.0 e HTTP 1.1,
utile per capire gli schemi generali del protocollo.
• >RCF 1945 (http://www.faqs.org/rfcs/rfc1945.html) La definizione ufficiale del consorzio W3C del protocollo
HTTP 1.0, indispensabile per definire l’implementazione nei dettagli.
• >RCF 2616 (http://www.faqs.org/rfcs/rfc2616.html) La definizione ufficiale del consorzio W3C del protocollo
HTTP 1.1, indispensabile per definire l’implementazione nei dettagli.
1
Manuale di
Custer web server
Specifiche tecniche
Custer e‘ in grado di memorizzare il body dei messaggi, sia quelli di richiesta sia quelli di risposta, sia su di un file
su disco che in un vettore su memoria, questo per consentire sia la possibilita‘ di gestire grandi quantita‘ di dati, sia
la rapida risposta in caso la richiesta sia esigua. Tramite questo e‘ possibile implementare anche un sistema di piu‘
cache, ad esempio una lenta su disco che potrebbe contenere l’output degli script cgi eseguiti piu‘ di frequente,
ed una piu‘ veloce su memoria che gia‘ contiene le piccole pagine HTML restituite dal server nel caso si verifichi
uno degli errori che e‘ in grado di gestire.
Utilizzo di Custer web server
Installazione e primo avvio
Per installare Custer e‘ necessario scompattarlo, spostarsi nella cartella creata e lanciare il comando make e poi
lanciare il comando make install. Una volta installato il programma, nel caso non si sia ROOT, viene creata
una cartella custer nella home page che contiene varie cartelle contenenti il programma e varia documentazione.
Per avviare il programma ci si deve spostare nella cartella $HOME/custer/etc/init.d e avviare il demone custer
seguendo le istruzioni che esso fornisce. Oppure recarsi nella cartella $HOME/custer/usr/sbin per avviare Custer
agendo sulle opzioni descritte in seguito. E‘ importante ricordare che nel caso si avvii Custer in questo secondo
modo e‘ necessario usare l’opzione -r seguita dalla posizione della cartella di installazione custer.
Opzioni dalla linea di comando
Custer e’ un server molto flessibile che puo’ essere personalizzato modificando molti parametri con opzioni dalla
linea di comando.
• -b lunghezza_coda_connessioni Modifica la lunghezza della coda delle connessioni di default portandola a
lunghezza_coda_connessioni.
• -c directory_cgibin Modifica la directory cgi-bin di default portandola a directory_cgibin.
• -p porta Modifica la porta di ascolto di default portandola a porta.
• -q dimensione_buffer_richieste Modifica la dimensione del buffer delle richieste di default portandola a
dimensione_buffer_richieste.
• -c directory_root Modifica la directory root di default portandola a directory_root.
• -s dimensione_buffer_risposte Modifica la dimensione del buffer delle risposte di default portandola a dimensione_buffer_risposte.
• -u default_uri Modifica l’URI di default portandolo a default_uri.
2
Manuale di
Custer web server
La modifica della lunghezza coda delle connessioni permette di stabilire quanti client possono essere connessi
contemporaneamente.
La directory root e’ il posto in cui vengono cercati i file da trasferire al client (cioe’, i file non cgi).
La directory cgi-bin e’ il posto che contiene tutti gli script e le applicazioni cgi, e consente al server di capire che
deve soddisfare la richiesta del client non con il file richiesto ma con il suo output.
La dimensione del buffer delle risposte indica quanti byte devono essere letti dal file richiesto (o dall’output di
un cgi) e scritti sullo stream tra server e client. Impostare questo valore a valori troppo bassi genera un eccessivo
overhead nel processo di lettura/scrittura; impostarlo a valori troppo alti puo’ occupare troppa memoria e puo’
bloccare il client per lunghi periodi. E’ opportuno scegliere valori come 1024 o 4096.
La dimensione del buffer delle richieste indica quanti byte devono essere letti dallo stream tra server e client
e scritti su file. Impostare questo valore a valori troppo bassi genera un eccessivo overhead nel processo di
lettura/scrittura; impostarlo a valori troppo alti puo’ occupare troppa memoria. E’ opportuno scegliere valori
come 1024 o 4096.
Caratteristiche supportate
Custer web server implementa in modo quasi completo i protocolli HTTP 1.0 e HTTP 1.1, come definito dalla
RFC1945 e dalla RFC2616 del consorzio W3C. Questo significa che e‘ in grado di rispondere correttamente
a richieste basate sui metodi GET HEAD e POST. E‘ implementata la conessione permanente che consente di
utilizzare una sola connessione per piu‘ richieste. Le altre limitazioni all’implementazione del protocollo sono la
non completa gestione di tutti i casi di errore previsti dallo standard (al momento sono gestiti soltanto l’errore 403
ed il 501) e l’impossibilita‘ di autenticarsi tramite "realms".
Custer, inoltre, supporta un sottoinsieme dell’interfaccia standard CGI, consentendo al client sia di inviare input
tramite query URL formattata con il metodo GET, sia con il metodo POST, e di ricevere l’output come body del
messaggio di risposta.
History delle funzionalita‘ aggiunte
La versione 0.10 di Michele Dall’Arno contiene:
• I metodi GET e HEAD totalmente.
• Il metodo POST parzialmente.
• Errori 403 e 501.
La versione 0.20 di Lorenzo Ricci aggiunge:
• Il metodo POST totalmente.
• Connessione permanente.
• Log File.
3