**** L' INDIANO ED IL PINGUINO **** La configurazione del Web Server Apache alla portata di tutti Ivan Fabris Sorpresi? L'indiano in questione è il Web Server Apache, e questo mese vedremo come configurarlo in modo da poterci fare qualcosa di utile: dopotutto se abbiamo deciso di usare Linux invece che win dovremo pur approfittare delle tante possibilità in più che ci vengono offerte! Apache è è il server http più popolare in rete, ed è disponibile in formato binario in tutte le distribuzioni, mentre i sorgenti li potete trovare su http://www.apache.org . ** Installazione Eseguite il comando "which httpd". Se vi risponde con "/usr/sbin/httpd" o qualcosa di simile, allora il server Apache è già installato nel vostro sistema, altrimenti inserite il cd della vostra distribuzione nel lettore, montate il filesystem e posizionatevi nella directory in cui si trovano i pacchetti ( usualmente RedHat/RPMS per le distribuzioni RedHat e Mandrake, oppure /suse/n1 per la SUSE ) ed installate il pacchetto della versione che possedete, con rpm -i apache-numero_di_versione.rpm. Il cd di PCAction in ogni caso contiene l' ultima versione, che nel momento in cui scrivo è la 1.3.9. Una volta installato il pacchetto, troverete in /home una nuova directory, /home/httpd, che è la root dir in cui scriverete i file html da mostrare al mondo intero. In questa dir si trovano già alcuni file di esempio ed il manuale online di Apache. I file di configurazione verranno invece installati in /etc/httpd, e i file di aiuto in /usr/doc. Potete anche scaricare i sorgenti dalla home page di Apache, e compilarli al solito modo: 1) "starare" i file, 2) lanciare lo script di configurazione con l' opzione --help per vedere quali sono le possibilità che vi interessano, 3) configurare di conseguenza ed infine compilare ed installare; tutto questo se desiderate particolari caratteristiche tipo l'integrazione proxy, ma queste funzioni avanzate esulano dallo scopo di questo articolo: a noi serve un server web dignitoso e sicuro, e facile da configurare, per cui procediamo ** La configurazione Il file di configurazione di Apache è /etc/httpd/conf/httpd.conf. Gli altri due file, srm.conf e access.conf sono stati assorbiti nel primo ed il loro uso è ormai obsoleto e sconsigliato nelle ultime release del server. Per modificare questo file ci sono tre modi: editor testuale, linuxconf oppure comanche, un programma fatto apposta per configurare apache; i tre metodi sostanzialmente si equivalgono, comanche è più bello da vedere, linuxconf ( rete/Apache web server ) è un po' più criptico ma ugualmente efficace, e l'editing manuale è come al solito il più efficace... strano come efficacia moltiplicato facilità d'uso dia una costante... comunque qualunque strumento si usi, le opzioni da configurare sono sempre le stesse: * Configurazione di base ServerType standalone Questa direttiva stabilisce il modo di avvio del server, manuale, come in questo caso, oppure dipendente dal superdemone inetd, usando l' opzione inetd al posto di standalone; la differenza è che nel primo modo il server lo controllate voi, con tutti gli svantaggi del carico sul sistema, mentre con inetd viene attivato solo quando provengono richieste http dalla porta 80, ma i tempi di risposta sono maggiori. Inoltre se usate inetd dovete aggiungere in /etc/inetd.conf la linea http stream tcp nowait nobody /usr/sbin/tcpd httpd /etc/httpd/conf/httpd.conf Port 80 Questa è la porta standard per http Le prossime sono le configurazioni per le prestazioni del server: Apache si adatta dinamicamente alle richieste esterne, fino a dei limiti che voi fissate dipendentemente dalle risorse del vostro sistema: per un computer casalingo i parametri indicati vanno più che bene StartServers 10 Numero massimo di server in funzione contemporaneamente, esclusi i sever momentanei MinSpareServers 2 Quantità di server di riserva per fronteggiare carichi momentanei, come più richieste da uno stesso browser MaxSpareServers 5 Massimo delle richieste da un singolo client MaxClient 15 Numero massimo di server che possono essere attivati... è il numero massimo di utenti che possono usare il server contemporaneamente KeepAliveTimeout 120 Numero massimo di secondi di attesa tra due richieste dallo stesso browser, dopodiché l'istanza del server muore ed il client viene disconnesso MaxKeepAliveRequests 100 Il numero massimo di richieste consecutive da un singolo browser, 0=infinite, questo numero dovrebbe essere tenuto piuttosto alto Timeout 60 Il tempo dopo il quale una connessione attiva viene disattivata, questo evita al server di seguire per troppo tempo una cattiva connessione. ServerRoot /etc/httpd La directory dove vengono conservati i file di configurazione e i log degli accessi e degli errori HostNameLookups off Stabilisce se nei log vanno conservati i numeri ip ( off ) o se si preferiscono i nomi corrispondenti ( on ) *Moduli Servono ad estendere le funzioni di apache, e solitamente sono in file separati, per una maggiore flessibilità e leggerezza dell'eseguibile. Sono disponibili molti moduli, una lista completa la trovate nel manuale online di Apache ed all'indirizzo http://modules.apache.org LoadModule status_module modules/mod_status.so Carica il modulo scelto, reperibile al percorso indicato ServerAdmin i.fabris@fo.nettuno.it L'indirizzo email che viene mostrato per esempio quando si fa riferimento ad una pagina inesistente, a cui riferire eventuali problemi. ServerName Se la vostra Linuxbox ha un nome diverso da localhost.localdomain, e questo non è registrato in /etc/hosts, assegnate a questa variabileiol nome della vostra macchina... non aspettatevi però di essere individuabili in internet tramite quel nome, se non è registrato al NIS ed associato al vostro ip attuale: il vostro server potrà essere raggiunto tramite il vostro numero ip corrente * Configurazione dello spazio web DocumentRoot /home/httpd/html La directory radice in cui sistemare le nostre pagine html, nel caso che sia abilita l'opzione FollowSymLink sarà possibile uscirne e vagare in ogni punto del nostro hd ErrorLog logs/error_log TransferLog logs/access_log AgentLog logs/browser_log I log degli errori, degli accessi e dei tipi di browser che usano il nostro server; il path si riferisce a sottodirectory di ServeRoot, a meno che non siano precedute da / User nobody Group nobody Il server viene lanciato da root ma viene subito declassato all'utente ed al gruppo indicati, che hanno privilegi minimi. Ogni azione successiva del server, come la lettura di file html, l'esecuzione di cgi,ecc. viene eseguita con i diritti di user:group, che devono esistere nel vostro sistema *Direttive -Options Consente di impostare alcune variabili di livello globale o riferite solo a particolari ambienti,per un controllo raffinato degli accessi al server ed alle sue varie zone: per esempio si può bloccare una sottodirectory a certi utenti, oppure consentire l'esecuzione di programmi cgi. Le parole chiave ammesse sono None Disabilita tutte le opzioni All Abilita tutte le opzioni, esclusa la MultiViews. All e None sono reciprocamente esclusive e non possono essere usate assieme FollowSymLinks Se specificata, consente al browser di seguire i link simbolici anche al di fuori della directory radice. ExecCGI Consente di eseguire i programmi cgi Indexes Consente di ottenere il listato dei file nella directory, potete abilitarlo ed aggiungere FancyIndexing on in modo da avere un listato dei file più allegro. Se non è abilitato una URL che termina con una / causerà errore ( se invece in quella dir è presente uno dei file listati in DirectoryIndex, esso verrà visualizzato ) Includes I Server Side Include sono permessi IncludesNOEXEC Come sopra, ma i comandi #exec e #include dei cgi sono disabilitati MultiViews Abilita esplicitamente il MultiViews ( Fate come se non esistesse ) SymLinksIfOwnerMatch Il server seguirà un link simbolico solo se il proprietario link è lo stesso del file o directory di destinazione Queste parole chiave possono essere escluse e sommate con gli operatori + e - , in modo da controllare il comportamento di un ramo di directory, usando la direttiva Directory ( e ce ne sono molte altre ), che racchiude un gruppo di istruzioni specifiche per quel ramo Options Indexes ExecCGI Options +Includes -Indexes in questo esempio la direttiva Indexes avrà effetto in /home/httpd/html ed in tutte le sue sottodirectory esclusa doc, ove invece sarà abilitata Incluse, mentre ExecCGI avrà effetto su tutto il ramo. *Misc UserDir public_html Se decidiamo di mettere alcune pagine nel nostro spazio utente, possiamo definirne il percorso in questo modo. Così quando un browser ci invierà una richiesta del tipo http://numero_ip/~nome_utente/ le pagine verranno cercate in /home/nome_utente/public_html/ invece che in /home/httpd/html/ DirectoryIndex index.html index.htm index.shtml index.cgi Default.htm default.htm Questi sono i nomi dei file di default, verranno caricati se la URL termina con un /. Per esempio, le URL http://nome_host/dir/ http://nome_host/dir/index.htm sono equivalenti, se in dir esiste il file index.htm FancyIndexing on Con FancyIndexing avremo un listato dei file con allegre icone anziché in plain text. Le icone le possiamo stabilire noi agendo sulla sezione successiva con le direttive AddIconByEncoding, AddIconByType, AddIcon e DefaultIcon AccessFileName .htaccess Possiamo mettere in ogni sottodirectory un file .htaccess con dentro le direttive di accesso a quella directory Alias nuovo_nome vecchio_nome Se vogliamo risparmiare tempo quando scriviamo, possiamo assegnare un percorso ad una variabile. A dire il vero ci sarebbero ancora decine di opzioni e di parole chiave da analizzare, basta dare un'occhiata al manuale online per convincersene, ma per far funzionare un server in casa abbiamo già fin troppo. Se proprio volete andare sul difficile, il manuale online è ricchissimo di informazioni.Ed ora... ** Avvio e funzionamento Niente di più facile, da root col comando apachectl potrete avviare, fermare e controllare il server, e fare un controllo sulla correttezza delle modifiche che avrete eventualmente fatto a httpd.conf. Lanciate apachectl per vedere le possibili opzioni, sono poche ed intuitive. Appena avviato il server, lanciate un navigatore qualsiasi e dategli come URL http://localhost, dovreste vedere "It Worked!".Ora potete sostituire le pagine predefinite con le vostre. Se terrete d'occhio il file di log, magari con tail -f /etc/httpd/logs/access_log ( o comunque lo abbiate chiamato ), mentre navigate, lo vedrete registrare tutti i vostri movimenti, e quelli di chiunque entri nel vostro server ** Un po' di sicurezza Sicuramente non correte alcun rischio nel far vedere alcune pagine agli amici, o addirittura a permettere loro di crearne alcune in una directory utente, il vostro server resta online finché siete online voi, ed il vostro ip cambia ogni volta che vi connettete ad internet. Tuttavia controllate ogni tanto i file di log, anche perché tendono a crescere velocemente e sarebbe il caso di prevedere un processo cron che li cancelli ogni tanto, e non permettete, neanche a voi stessi, di seguire i SymLinks. Il server supporta tranquillamente i Javascript, le applet, i moduli flashplayer e le URL che puntano ad un file attiveranno un download, insomma avrete tutto ciò che si trova in Internet. Il server che trovate sul cd e' già pronto a mettere a disposizione sia l'interprete php3 che il perl: basta che guardiate le foto in queste pagine. Come prova per il php3 scrivete una semplice pagina in html, così come vi ha insegnato Stefano Zanero; tra i due tag e inserite le seguenti istruzioni rinominate il file in phpinfodemo.php3 ed inseritelo in /home/httph/html. Ora attivate il server e con Netscape puntate a http://localhost/phpdemo.php3, ed osservate tutte le variabili che php3 vi mette a disposizione! E se avete seguito i programmi proposti nei mesi precedenti, prendete BlueFish e CoffeCup e cominciate a creare pagine web con supporto php, perl e ssl. Sul vostro server ( e su tutti quelli che vi rendono disponibili questi servizi faranno un figurone! Buon divertimento col vostro nuovo sever! **** DIDA FOTO 0: a0.jpg Ecco cosa succede se cerchiamo di accedere a localhost se Apache è inattivo FOTO 1: a1.jpg Linuxconf all'opera su httpd.conf FOTO 2: a2.jpg Anche Comanche è un tool molto carino da usare FOTO 3: a3.jpg Il file httpd.conf è molto ben commentato, ma il manuale online è meglio! FOTO 4: a4.jpg E finalmente il coronamento di tante fatiche! FOTO 5: a5.jpg Ora possiamo mettere sul nostro server tutto ciò che vogliamo, senza limiti di spazio. FOTO 6: a6.jpg Effetto FancyIndexing FOTO 7: a7.jpg Il php3 fa bella mostra di se con una funziona che elenca tutte le variabili disponibili: questa è una piccola rappresentazione del mio sistema