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