Questa pagina spiega come utilizzare Webmin per configurare il server Web Apache . Copre host virtuali, controllo dell'accesso IP, restrizioni sulle password e molto altro.
Introduzione ad Apache
Apache è il server HTTP più popolare di Internet, grazie al suo costo zero, all'ampia disponibilità e all'ampio set di funzionalità. Tutte le distribuzioni Linux lo includono come pacchetto standard e può essere installato o compilato per ogni altra variante Unix supportata da Webmin. Tuttavia, ha un numero molto elevato di direttive di opzione definite in un file di configurazione di testo, quindi può essere difficile da configurare per un amministratore inesperto.
Nel corso degli anni dalla sua prima introduzione, sono state rilasciate molte versioni di Apache. A partire dalla 1.0 e passando alle attuali serie 1.3 e 2.2, ogni versione include più funzionalità e opzioni. La funzionalità di base del webserving e il layout del file di configurazione sono rimasti sostanzialmente gli stessi, anche se l'implementazione interna è cambiata in modo significativo.
Apache ha un design modulare, in cui ogni modulo è responsabile di una parte del suo set di funzionalità complessivo. Esistono diversi moduli standard inclusi in quasi tutte le installazioni di Apache e molti altri che sono opzionali o devono essere scaricati separatamente. I moduli possono essere compilati nell'eseguibile del server web o caricati dinamicamente da librerie condivise in fase di esecuzione. Questa architettura modulare può essere utilizzata per risparmiare memoria evitando la necessità di caricare moduli che non forniscono alcuna funzionalità utile per un particolare sistema.
Apache prende la sua configurazione da più file di testo, ognuno dei quali contiene una serie di direttive, solitamente una per riga. Ogni direttiva ha un nome e uno o più valori e imposta un'opzione come il percorso di un file di registro o il tipo MIME per alcuni file. Le direttive che Apache riconosce dipendono dai moduli in uso. La maggior parte dei moduli aggiunge il supporto per diverse direttive per configurare le funzioni che forniscono.
Spesso, vorrai ospitare più di un sito Web su un singolo server. Apache può essere configurato per utilizzare una configurazione diversa a seconda del sito Web richiesto da un browser. Ognuno di questi siti è chiamato host virtuale ed è definito nel file di configurazione con una speciale sezione
Allo stesso modo, le sezioni
Un altro metodo per creare direttive che si applicano solo a una singola directory è inserirle in uno speciale file di configurazione chiamato .htaccess che risiede nella directory stessa. Spesso questi file vengono creati da utenti regolari, in modo che possano configurare i propri siti Web senza aver bisogno dell'accesso completo al file di configurazione principale. Questo è molto utile su un sistema che ospita più siti che sono ciascuno di proprietà di un diverso utente Unix, piuttosto che su un sistema con un solo sito web che è impostato dal proprietario del server.
Il modulo del server Web Apache
Questo è uno dei moduli Webmin più complessi e potenti, poiché consente di configurare quasi tutte le funzionalità di Apache. Può determinare la versione di Apache che è installata sul tuo sistema e i moduli che utilizza e regola la sua interfaccia utente di conseguenza in modo che tu possa modificare solo quelle direttive che il server web comprende. Tuttavia, l'interfaccia è generalmente la stessa per tutte le versioni di Apache.
Poiché ci sono così tante direttive e il modulo tenta di consentirne la configurazione, raggruppa le direttive in categorie come Processi e Limiti, Reti e Indirizzi e Programmi CGI. Queste categorie sono rappresentate da icone che appariranno quando si apre un server virtuale, una directory o un file di opzioni nel modulo. In tutti i casi è possibile visualizzare e modificare le impostazioni di ciascuna categoria facendo clic sulla relativa icona.
Apache ha un gran numero di moduli standard e un numero ancora maggiore di moduli separati che sono stati sviluppati da altre persone. Webmin non supporta la modifica delle direttive nella maggior parte di queste non standard, come mod_perl e mod_php. Tuttavia, ignorerà in modo sicuro qualsiasi direttiva del file di configurazione che non comprende, in modo che qualsiasi impostazione per i moduli non supportati eseguita manualmente non venga danneggiata.
Quando apri il modulo Apache, verrà visualizzata la pagina a schede mostrata di seguito :
Pagina principale del modulo Apache WebserverNella prima scheda ci sono le icone per le varie categorie di opzioni globali, oltre ad alcune funzionalità extra. Nel secondo c'è un elenco di tutti i server virtuali attuali e nel terzo c'è un modulo per aggiungere un nuovo host virtuale. Se hai un numero molto elevato di server virtuali sul tuo sistema (più di 100 per impostazione predefinita) verrà invece visualizzato un modulo di ricerca per trovare i server. Il primo server sarà sempre lo speciale Server predefinito , che contiene direttive che si applicano a tutti gli altri server virtuali e gestisce le richieste che altri server non gestiscono.
Naturalmente, il modulo Apache non funzionerà se non avete Apache installato sul vostro sistema. In questo caso, la pagina principale visualizzerà un messaggio di errore al posto del modulo di configurazione del modulo o dell'elenco dei server virtuali. Tutte le distribuzioni Linux includono uno o più pacchetti per esso sul loro CD-ROM o sito Web, quindi installalo da lì usando il modulo Pacchetti software prima di continuare.
Poiché il modulo presuppone che i file eseguibili e di configurazione di Apache si trovino nelle posizioni utilizzate dal pacchetto della tua distribuzione, riporterà lo stesso errore sul software non installato se lo hai compilato e installato manualmente. In questo caso, fai clic su Module Config collega e regola i percorsi nelle posizioni corrette per il tuo sistema.
Sulle versioni di Unix che non includono Apache per impostazione predefinita, Webmin presuppone che verrà installato dalla distribuzione dei sorgenti standard da www.apache.org. Se hai installato il server web da un pacchetto opzionale che è stato reso disponibile per il tuo sistema operativo, la pagina principale si lamenterà del fatto che non è installato e dovrai modificare la configurazione del modulo.
L'interfaccia utente del modulo è piuttosto complessa e ha un gran numero di pagine, moduli e sottopagine a causa della complessità e della potenza dei file di configurazione di Apache. Tuttavia, ci sono elementi dell'interfaccia che si ripetono su molte pagine in tutto il modulo, come :
- Icone di categoria Quando si fa clic sull'icona di un server virtuale, di una directory o di un file di opzioni, nella parte superiore della pagina viene visualizzata una tabella di icone con nomi come Tipi MIME e Programmi CGI. Sotto ciascuna di queste icone ci sono campi e tabelle per la configurazione delle opzioni relative all'etichetta dell'icona in cui si trovano. Questo layout comunemente usato suddivide in categorie il vasto numero di opzioni modificabili di Apache, poiché ci sono troppi campi da visualizzare su una singola pagina. Le icone esatte che appaiono e i campi sotto di esse variano a seconda della parte della configurazione del server web che stai modificando e della versione di Apache installata. Tuttavia, il loro layout di base è sempre lo stesso.
- Campi tabelle In molti moduli, alcuni campi utilizzano tabelle per immettere più valori come i tipi MIME e le estensioni di file associate. Non c'è limite al numero di righe che ogni tabella può avere, ma Webmin visualizzerà solo una singola riga vuota in ogni tabella alla volta. Ciò riduce le dimensioni dei moduli che hanno molte tabelle, ma significa che puoi aggiungere solo una nuova riga alla volta a una tabella. Per aggiungerne più di uno, dovrai salvare il modulo e quindi reinserirlo nuovamente, in modo che venga visualizzata una nuova riga vuota sotto quella appena compilata.
Le sezioni seguenti spiegano in modo più dettagliato quali icone fare clic e quali tabelle compilare quando si eseguono operazioni come l'abilitazione di script CGI e l'impostazione dei tipi MIME.
Avvio e arresto di Apache
Prima che i browser possano connettersi al server web Apache sul tuo sistema, il suo processo server deve essere avviato. Puoi verificare se è attualmente in esecuzione guardando nella parte superiore di una qualsiasi delle pagine del modulo. Se i link etichettati Applica modifiche e Interrompi Apache appare, allora è attualmente attivo. Tuttavia, se appare solo il collegamento *Avvia Apache*, non è ancora in esecuzione.
Per avviarlo, fai clic su Avvia Apache collegamento. Se tutto va bene, la pagina in cui ti trovi attualmente verrà visualizzata nuovamente e i collegamenti in alto dovrebbero cambiare per indicare che ora è in esecuzione. In caso contrario, verrà visualizzato un messaggio di errore che spiega cosa è andato storto:molto probabilmente la causa sarà un errore nel file di configurazione.
Per arrestare il server web una volta in esecuzione, fai clic su Interrompi Apache link in una qualsiasi delle pagine del modulo. Nell'improbabile eventualità che Webmin non sia in grado di arrestare il server, verrà visualizzata una pagina di messaggio di errore. Se viene interrotto correttamente, la stessa pagina verrà nuovamente visualizzata con i collegamenti in alto modificati per mostrare che non è più in esecuzione.
Quando Apache è attivo, ogni pagina avrà un Applica modifiche link in alto che può essere utilizzato per segnalare al server web di ricaricare la sua configurazione corrente. Dopo aver apportato modifiche a questo modulo (tranne quelle nei file .htaccess), è necessario fare clic su questo collegamento per renderle attive. A differenza di altri moduli Webmin che hanno un pulsante Applica nella pagina principale, questo lo ha in ogni pagina in modo da non dover tornare all'indice ogni volta che apporti una modifica.
Modificare le pagine sul tuo server web
Questa sezione spiega come trovare e modificare i file sul tuo sistema che vengono visualizzati quando un client si connette al tuo server web Apache. Se sai già come farlo, sentiti libero di saltarlo e passare alla sezione successiva.
Quando Apache viene installato per la prima volta da un pacchetto o dall'origine, la sua configurazione iniziale in genere non avrà alcun server virtuale impostato. Invece esisterà solo il server predefinito, che serve le pagine a qualsiasi client che si connette sulla porta 80. Puoi visualizzare le pagine predefinite eseguendo un browser Web e andando all'URL http://_nomehost_/ o http://_localhost_/ se stai eseguendo il browser sullo stesso sistema su cui si trova Webmin. La pagina che apparirà sarà probabilmente solo quella fornita con Apache o la tua distribuzione Linux.
La directory principale del documento da cui Apache fornisce i file verrà mostrata nella pagina principale del modulo accanto al Server predefinito icona. Su Redhat Linux, ad esempio, questa directory è /home/httpd/html per impostazione predefinita. I file in questa directory possono essere modificati accedendo come root o utilizzando il modulo File Manager di Webmin. Eventuali modifiche apportate verranno immediatamente riportate sul sito Web.
Se il tuo sistema ospiterà solo un singolo sito Web statico, potrebbe non essere necessario configurare altri aspetti di Apache. Puoi semplicemente caricare o copiare file HTML, immagini e altri file nella directory e nelle sue sottodirectory per creare il sito che desideri. Il file più importante è index.html, che viene servito da Apache ogni volta che un browser non richiede una pagina specifica. Poiché la maggior parte delle persone andrà prima su http://_yourserver_/, la pagina index.html sarà la prima che vedrà.
Per semplificare la modifica, potresti voler cambiare la proprietà della directory principale del documento e di tutti i suoi file a un utente non root. Tuttavia, devi assicurarti che siano ancora leggibili dall'utente su cui viene eseguito il processo del server Apache, che in genere è chiamato httpd. Il modo più semplice per farlo è rendere tutti i file e le directory leggibili ed eseguibili in tutto il mondo.
Creazione di un nuovo host virtuale
Se desideri ospitare più siti Web sul tuo sistema, dovrai creare un host virtuale Apache per ciascuno. Prima di poter aggiungere un sito, il suo indirizzo deve essere registrato nel DNS, sia su un server DNS sul tuo sistema che su un altro host. Se i file del sito devono essere di proprietà di un utente Unix diverso da quello che possiede la directory principale del documento, allora anche lui deve essere creato prima.
L'intero processo per aggiungere un server virtuale, inclusi i passaggi precedenti, è:
- Decidi un nome host che verrà utilizzato nell'URL del nuovo sito Web, ad esempio www.example.com .
- Decidi se il tuo nuovo sito sarà basato su IP o sul nome. Un sito basato sul nome funzionerà bene con tutti tranne che con i vecchi browser, quindi è di gran lunga la scelta migliore al giorno d'oggi. Un sito basato su IP funzionerà con qualsiasi browser, ma necessita di un proprio indirizzo IP separato da aggiungere al sistema. Poiché gli indirizzi IP sono spesso scarsi, questo ha senso solo se è necessario configurare anche un server FTP o POP3 virtuale per il dominio.
- Se il tuo sito sarà basato su IP, usa il modulo Configurazione di rete (trattato in Configurazione di rete) per aggiungere un nuovo indirizzo IP virtuale all'interfaccia di rete esterna sul tuo sistema. Assicurati che venga attivato all'avvio e che sia attivo ora. Se il tuo sistema ha un solo indirizzo IP Internet statico assegnato dal tuo ISP, tutti gli indirizzi IP virtuali aggiuntivi che aggiungi non funzioneranno. In tal caso, dovrai invece utilizzare un server virtuale basato sul nome o richiedere che il tuo ISP ti assegni più indirizzi.
- Se il esempio.com il dominio esiste già su un server DNS, aggiungi un record per www.example.com con l'indirizzo IP esterno del tuo sistema (per un sito basato sul nome) o l'indirizzo scelto nel passaggio precedente (per un sito basato su IP). Se il dominio non esiste ancora, dovrai aggiungerlo a un server DNS e registrarlo con un registrar DNS come Network Solutions. In ogni caso, la pagina BIND DNS Server spiega come aggiungere record e domini in dettaglio.
- Se il sito utilizzerà la porta HTTP standard 80 (che è quasi sempre quella che desideri), puoi saltare al passaggio 8. Altrimenti, nella pagina principale del modulo Apache Webserver fai clic su Rete e Indirizzi icona per visualizzare il modulo mostrato nel primo screenshot qui sotto.
- Nella riga vuota in Ascolta indirizzi e porte tabella, seleziona Tutto sotto l'Indirizzo colonna e deseleziona Predefinito sotto il Porto colonna. Quindi inserisci il numero di porta TCP per il tuo sito web nel campo accanto ad esso e fai clic su Salva pulsante in fondo alla pagina.
- Nella pagina principale del modulo, scorrere fino al modulo *Crea un nuovo server virtuale* sotto l'elenco degli host virtuali esistenti.
- Se stai configurando un server virtuale basato su IP, in Indirizzo campo è necessario inserire l'indirizzo IP virtuale che è stato aggiunto nel passaggio 3. Se si configura un server virtuale basato su nome, immettere invece l'indirizzo IP esterno del sistema nel campo. Se il tuo server Apache è stato configurato per accettare connessioni basate sul nome su qualsiasi indirizzo IP, puoi selezionare Qualsiasi opzione per questo campo invece. Vedere la spiegazione di seguito per maggiori dettagli. Se il tuo nuovo server virtuale utilizzerà una porta diversa da 80 e sarà l'unico server su quella porta, puoi selezionare Qualsiasi opzione anche in modo che gestisca tutte le richieste che arrivano sulla porta.
- Se stai configurando un server virtuale basato su IP, deseleziona Aggiungi nome indirizzo server virtuale casella di controllo. Per i server basati sui nomi, dovrebbe essere lasciato abilitato.
- Se il nuovo host virtuale utilizzerà una porta non standard, seleziona l'ultima opzione per la Porta campo e inserisci il numero nel campo accanto.
- Nella Radice del documento campo, immettere il percorso completo della directory che conterrà i file per questo sito Web. Ad esempio, potrebbe essere /home/example/www .
- Nel Nome server campo, inserisci i nomi host che i client utilizzeranno per fare riferimento a questo sito Web come www.example.com . Puoi inserire più di un nome, ad esempio web.example.com e esempio.com se questo sarà un server basato sui nomi che dovrebbe essere accessibile a diversi URL.
- A meno che tu non abbia un file separato sul tuo sistema che contiene tutti gli host virtuali, lascia Aggiungi server virtuale al file campo impostato su File httpd.conf standard . Altrimenti puoi scegliere File selezionato e inserisci il percorso nel campo accanto ad esso. Assicurati che il file scelto sia effettivamente utilizzato da Apache (ad esempio da una direttiva Include in httpd.conf) o il server virtuale sarà inutile e non apparirà in Webmin. Se utilizzi sempre lo stesso file separato per l'archiviazione di host virtuali, il File a cui aggiungere server virtuali campo spiegato in Configurazione del modulo Apache Webserver la sezione seguente può essere utile. Se è impostata, un'altra opzione viene aggiunta al campo *Aggiungi server virtuale al file* per l'aggiunta al file impostato da questa opzione di configurazione del modulo.
- Per fare in modo che Webmin copi tutte le direttive da un altro server virtuale a quello che stai creando, selezionalo da Copia direttive da menù. Questo può essere utile se tutti i tuoi host virtuali hanno una configurazione simile.
- Quando hai finito di compilare il modulo, fai clic su Crea pulsante. Il nuovo server virtuale verrà aggiunto al file di configurazione di Apache e all'elenco dei server nella pagina principale.
- Fai clic sull'icona del nuovo server virtuale, che ti porterà alla sua pagina delle opzioni, mostrata nel secondo screenshot qui sotto.
- Scorri verso il basso fino al modulo in Opzioni per directory e inserisci la directory principale del documento che hai scelto nel passaggio 11 nel Percorso campo. Assicurati di Tipo è impostato su Rubrica e Regexp? campo a Corrispondenza esatta .
- Fai clic su Crea per aggiungere una nuova sezione al file di configurazione della directory. Ciò è necessario affinché tu possa concedere ai client i diritti per sfogliare i file che contiene, cosa che la configurazione della directory Apache predefinita nega.
- Fare clic sulla nuova icona per la directory che è stata aggiunta alla pagina delle opzioni del server virtuale. Questo ti porterà alla pagina delle opzioni della directory, mostrata nel terzo screenshot qui sotto.
- Fai clic su Opzioni documento icona e nel modulo visualizzato cambia le Opzioni della directory campo a *Selezionato sotto*. Sotto Imposta per directory colonna, modificare la voce per Genera indici di directory a Sì . Quindi fai clic su Salva pulsante in fondo alla pagina.
- Per rendere attive tutte le modifiche, fai clic su Applica modifiche pulsante nella parte superiore di qualsiasi pagina.
- L'utente o l'utente che possiede il server virtuale può ora iniziare ad aggiungere file alla directory principale del documento. Puoi provarlo aprendo l'URL (come http://_www.example.com_/) nel tuo browser web per assicurarti che tutto funzioni correttamente.
Quando Apache riceve una richiesta HTTP, deve prima capire a quale server virtuale si riferisce la richiesta. Per prima cosa cercherà un server virtuale basato sul nome il cui nome host corrisponda all'host richiesto dal client e il cui indirizzo e porta siano gli stessi a cui si è connesso il client. Se non ne viene trovato nessuno, verrà utilizzato il primo server virtuale definito per l'indirizzo e la porta oppure, se non ce ne sono, la richiesta verrà gestita dal server predefinito.
I server virtuali basati sui nomi possono essere utilizzati solo su indirizzi elencati in Indirizzi per i server virtuali dei nomi campo nella pagina globale Networking and Addresses. Se segui le istruzioni sopra, un indirizzo verrà aggiunto automaticamente a questo elenco quando crei un nuovo server virtuale. Se tutti i server virtuali sul tuo sistema saranno basati su nomi, puoi aprire questa pagina, inserire * nel campo e fare clic su Salva in modo che Apache gestirà tali richieste su qualsiasi indirizzo IP. Questo ha senso anche se il tuo sistema ha un indirizzo IP assegnato in modo dinamico e vuoi servire più host virtuali.
Una volta creato un server virtuale, puoi modificarne le impostazioni o eliminarlo seguendo questi passaggi :
- Nella pagina principale del modulo, fare clic sull'icona del server virtuale. Questo ti porterà alla pagina delle opzioni del server mostrata nello screenshot sopra.
- Scorri verso il basso fino ai Dettagli del server virtuale modulo in fondo alla pagina.
- Modifica l'Indirizzo , Porto e altri campi su quello che vuoi e fai clic su Salva pulsante. Questi campi hanno lo stesso significato del modulo di creazione del server virtuale. Tuttavia, se l'indirizzo viene modificato su un server virtuale basato sul nome, potrebbe essere necessario modificarlo anche nella pagina globale di rete e indirizzi. Oppure, se vuoi eliminare il server virtuale e tutte le direttive di configurazione che contiene, fai clic su Elimina server virtuale pulsante invece.
- Tornando alla pagina principale del modulo, fai clic su Applica modifiche collegamento per rendere attive le nuove impostazioni.
Non è possibile modificare le impostazioni per il server predefinito, né eliminarlo.
Impostazione delle opzioni per directory
Apache ti consente di specificare diverse opzioni per determinate directory, per tutti i server virtuali o solo per uno solo. Includendo le directory, puoi effettivamente impostare opzioni che si applicano a tre tipi di oggetti sul tuo server Apache:
- Rubrica Le opzioni si applicano a una directory specificata ea tutti i file in essa contenuti o nelle sottodirectory che contiene.
- File Le opzioni si applicano ai file con un nome specificato in qualsiasi directory.
- Posizione Le opzioni si applicano a qualsiasi file o directory richiesta da un URL il cui percorso inizia con la posizione specificata. Ad esempio, nell'URL http://www.example.com/pippo il percorso sarebbe /foo .
Ogni volta che Apache elabora una richiesta, controlla le opzioni che si applicano ad essa in un ordine fisso. Quelli delle sezioni di directory e dei file .htaccess vengono letti per primi in modo che le directory più specifiche vengano controllate per prime. Sono quindi seguiti da file e quindi da sezioni di posizione. Quindi vengono lette le opzioni dal server virtuale a cui è stata inviata la richiesta (se presente) e infine le opzioni dal server predefinito.
La pagina delle opzioni per directoryCiò significa che le opzioni impostate per una directory sovrascriveranno le stesse opzioni impostate in una directory di livello superiore o nel server virtuale di cui è membro. Per impostare le opzioni per una directory, file o posizione URL, i passaggi da seguire sono:
- Anche se le opzioni che intendi impostare si applicano a una directory, devono essere definite in uno dei server virtuali o nel server predefinito. Se si trovano in un host virtuale, si applicheranno solo alle richieste a quel server per i file nella directory o nella posizione dell'URL scelta. Ma se si trovano nel server predefinito, verranno effettuate richieste a qualsiasi host virtuale per i file nella directory. Nella pagina principale del modulo, fai clic su Server predefinito icona o l'icona di un server virtuale a cui si desidera limitare le opzioni di directory. Per le directory, di solito è più semplice inserire le loro opzioni nel server predefinito poiché ogni host virtuale ha in genere la propria directory radice dei documenti separata. Tuttavia, le opzioni di posizione dell'URL devono essere inserite nel server virtuale a cui sono correlate, poiché lo stesso percorso dell'URL può essere utilizzato in modi diversi su più di un host virtuale. Lo stesso vale per le opzioni dei file.
- Nella pagina delle opzioni del server visualizzata (mostrata nella Figura 29-4), scorrere fino al modulo *Crea opzioni per directory, file o posizione*.
- Dal Tipo menu, scegli una delle opzioni sopra descritte.
- Se stai impostando le opzioni per una directory, inseriscila nel Percorso campo come /home/example/www/images . Puoi anche inserire un percorso con caratteri jolly come /home/example/w* , che farà sì che le opzioni vengano applicate a tutte le directory corrispondenti. Se le opzioni vengono impostate per una posizione URL, inserisci la parte dell'URL dopo il nome host nel campo Percorso, ad esempio /images . Puoi anche utilizzare caratteri jolly della shell come * e ? anche nell'URL. Se imposti le opzioni per i file, inserisci un nome file nel Percorso campo come secret.html . Ancora una volta, è possibile utilizzare caratteri jolly nel nome del file, ad esempio segreto*.
- Se vuoi essere in grado di utilizzare espressioni regolari complesse nella directory, nel nome del file o nella posizione dell'URL, imposta Regexp? campo per Abbina espressione regolare . Ciò ti consentirà di utilizzare i caratteri delle espressioni regolari Perl come [, ], +, . e * nel percorso.
- Fai clic su Crea pulsante per aggiungere la nuova sezione della directory alla configurazione di Apache. La pagina delle opzioni del server virtuale verrà nuovamente visualizzata, ma con una nuova icona per la directory.
Ora che hai creato una nuova icona per una directory, una posizione URL o un nome file, puoi impostare le opzioni che si applicano ad essa. Una delle modifiche più comuni per directory è la configurazione della modalità di elenco dei file quando un browser richiede una directory con un URL come http://www.example.com/images/. Per impostazione predefinita, se nella directory è presente un file index.html, verrà visualizzato o, in caso contrario, verrà mostrata una pagina che elenca tutti i file in esso contenuti.
Se desideri modificare il nome del file di indice, lo stile dell'elenco delle directory o qualsiasi altra impostazione relativa all'indicizzazione, i passaggi da seguire sono :
- Fare clic sull'icona della directory che si desidera configurare nella pagina delle opzioni del server virtuale. Questo ti porterà alla pagina delle opzioni della directory mostrata nella Figura 29-5.
- Fai clic su Indicizzazione directory icona per visualizzare un modulo per l'impostazione delle opzioni di indicizzazione e di elenco.
- Per modificare l'aspetto degli elenchi di directory, imposta il campo *Opzioni indice directory* su Selezionato di seguito e modificare i campi nella casella sottostante. Le impostazioni predefinite genereranno un elenco di file molto semplice, ma puoi migliorarlo impostando le seguenti opzioni :
- Visualizza indici di directory fantasiosi Se abilitato, l'elenco dei file includerà la loro icona, dimensione e data di modifica.
- Mostra il titolo HTML come descrizione Se abilitato, la descrizione per i file HTML sarà presa dai loro tag
. - Altezza icona Questa opzione consente di modificare l'altezza delle icone incluse nell'elenco delle directory. Se è impostato su Predefinito , verrà utilizzata l'altezza delle opzioni standard di Apache.
- Larghezza dell'icona Come l'opzione precedente, questa consente di specificare la larghezza delle icone nell'elenco delle directory.
- Consenti all'utente l'ordinamento delle colonne Quando questa opzione è abilitata, gli utenti potranno ordinare l'elenco dei file facendo clic sulle intestazioni delle colonne, supponendo che vengano visualizzate.
- Mostra le descrizioni dei file Se abilitato, l'elenco delle directory includerà una descrizione per ogni file presa dal suo tipo MIME o titolo HTML.
- Emetti tag di intestazione HTML Quando abilitato, l'elenco delle directory includerà i normali tag e che dovrebbero iniziare ogni pagina HTML. Vorresti disattivarlo solo se fornisci i tuoi file di intestazione e piè di pagina.
- Mostra gli ultimi orari modificati Se abilitato, l'elenco delle directory includerà la data dell'ultima modifica per ciascun file.
- Mostra dimensioni file Quando abilitato, l'elenco includerà la dimensione di ciascun file.
- Includi icona nel link Se questa opzione è abilitata, l'icona nell'elenco sarà un collegamento al file stesso. Altrimenti solo il nome del file è un collegamento.
- Larghezza nome file Questa opzione controlla la lunghezza della colonna del nome del file nell'elenco delle directory. Puoi inserire un numero di caratteri o * per ridimensionare la colonna alla lunghezza del nome file più lungo.
- Larghezza della descrizione Questa opzione controlla la lunghezza della colonna della descrizione nell'elenco delle directory, se presente. Puoi inserire un numero di caratteri o * per ridimensionare la colonna alla lunghezza della descrizione più lunga.
- Visualizza prima le directory Se abilitato, l'elenco mostrerà tutte le directory al di sopra di qualsiasi file indipendentemente da qualsiasi altro file. Le opzioni disponibili dipendono dalla versione di Apache che hai installato sul tuo sistema. Quelli sopra elencati sono validi per la versione 1.3.19, ma se hai una versione più recente potrebbero essere disponibili più opzioni.
- Se vuoi che Apache restituisca un file diverso da quello predefinito (di solito index.html) quando un browser richiede la directory, inserisci un elenco di nomi di file nella File indice della directory campo. Se ne può inserire più di uno e verrà utilizzato il primo trovato. Se nessuno dei file di indice viene trovato, al browser verrà restituito un elenco di directory che utilizza le opzioni scelte nel passaggio 3.
- Per fare in modo che il server web ignori determinati file durante la generazione dell'elenco dei file nella directory, inserisci i loro nomi di file in File da ignorare nell'indice della directory campo. Puoi usare i caratteri jolly della shell nelle espressioni regolari, come *.doc .
- Per inserire un file HTML all'inizio dell'elenco delle directory, inserisci il suo nome file (relativo alla directory) nel File di intestazione dell'indice della directory campo.
- Allo stesso modo, per aggiungere un file alla fine dell'elenco delle directory, inserirlo nel File a piè di pagina dell'indice della directory campo.
- Per controllare l'ordine predefinito della directory, deseleziona Predefinito in Ordina indice directory per campo e selezionare un ordine e una colonna in base al quale eseguire l'ordinamento dai due menu adiacenti.
- È possibile impostare le descrizioni dei file compilando la tabella *Descrizioni indice directory*. Nella riga vuota della tabella, inserisci un breve messaggio che descrive il file nella Descrizione colonna e un elenco di nomi di file o nomi di caratteri jolly in Nomi di file colonna. Poiché viene mostrata solo una riga vuota alla volta, dovrai visitare nuovamente questa pagina dopo aver aggiunto ogni descrizione se desideri inserirne più di una.
- Infine, fai clic su Salva pulsante nella parte inferiore della pagina per memorizzare le modifiche e tornare alla pagina delle opzioni della directory. Per attivarli, fai clic su Applica modifiche link ovunque nel modulo Apache.
La maggior parte di queste opzioni può essere impostata per un intero server virtuale facendo clic sull'icona Directory Indexing anche nella pagina delle opzioni del server virtuale. In questo caso, si applicheranno a tutti i file richiesti dall'host virtuale a meno che non vengano sovrascritti dalle opzioni per una directory o un percorso URL.
Nella pagina delle opzioni della directory ci sono molte altre icone su cui puoi fare clic per impostare le opzioni che si applicano solo a quella directory, percorso URL o nome file. Alcuni di questi sono spiegati in altre sezioni più avanti in questo capitolo, come Alias e reindirizzamenti e *Password per la protezione di una directory*.
Puoi modificare la directory, i nomi dei file o la posizione dell'URL a cui si applicano le impostazioni utilizzando le Opzioni applicabili a modulo nella parte inferiore della pagina delle opzioni della directory. Ha esattamente gli stessi campi del modulo di creazione descritto all'inizio di questa sezione. If you make any changes, click the Save button to update the Apache configuration and then the Apply Changes link to make them active. Or to remove the directory configuration and all its options, click on Delete instead.
Creating aliases and redirects
Normally, there is a direct relationship between the path in URL and the file that is returned by the webserver. For example, if a browser requests http://www.example.com/images/foo.gifand the document root for www.example.com is /home/example/www , then the file /home/example/www/images/foo.gif would be read by the webserver and returned to the client.
This can be changed though by using what Apache calls aliases. An alias maps a particular URL path to a file or directory, which does not necessarily have to be under the document root. So in the example above, the /images URL path might actually be aliases to the directory /www/images , which would cause the file /www/images/foo.gif to be read instead.
Aliases can be defined globally or in a virtual server. To create one, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to create the alias under. If you want it to apply to all virtual servers (or you don't have any), click on the *Default Server *icon instead.
- On the virtual server options page that appears, click on the Aliases and Redirects icon. This will take you to the page in the screenshot below.
- Fill in the empty row in the Document directory aliases table with the URL path (under From ) and the file or directory that it should map to (under To ). If you are editing the default server, there may already be several entries in this table that are part of the standard Apache configuration. There will always be exactly one empty row in the table. If you need to add more than one alias, you will need to re-visit this page after filling in the row and saving.
- Fai clic su Salva button to have your new alias stored in the Apache configuration. The browser will return to the virtual server options page.
- To make the alias active, click on the Apply Changes link at the top of the page.
The aliases and redirects form
Existing aliases can be editing by just changing the entries in the Document directory aliases table and then clicking Save . You should not change the alias for /icons in the default server though, as this is used by Apache when it generates icons for directory listings. If you want to delete an alias, just delete the contents of both its fields in the table.
Aliases can also be created that use Perl regular expressions to match more complex URL paths. These must be entered into the Regexp document directory aliases table on the Aliases and Redirects form, which has the same columns as the *Document directory aliases* table described above. The difference is that any regular expression can be entered into the From field, such as ^/images/(.*)\.gif$ . The To field can taken a string that refers to bracketed sections in the expression, such as /images/$1.jpg . This would convert any request for a GIF file into one for the JPEG with the same name.
Redirects are similar to aliases, but have a different purpose and work in a different way. Whenever a client requests a URL path that has been redirected, Apache will tell it to go to another URL (possibly on another server) instead. For example, you might redirect all requests to http://www.example.com/webmin/ to ''http://www.webmin.com/''. Unlike the way aliases behave, if a browser requests a page like /webmin/foo.gif it will not be redirected to ''http://www.webmin.com/foo.gif'' - it will just go to the URL ''http://www.webmin.com/'' instead.
Redirects are implemented by the webserver sending the special 302 status code to the browser, which tells it to go to a new location. It is quite possible for the new URL to be a redirect itself, and you can even create a loop of redirects - not that this is a good idea.
To set up redirection for a path on your server, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to create the redirect under. If you want it to apply to all virtual servers, click on the *Default Server *icon instead.
- On the virtual server options page that appears, click on the Aliases and Redirects icon to go to the page in Figure 29-6.
- In the empty row of the *URL redirects *table, enter the URL path on your server under the From column, such as /webmin . Under the To column, enter the URL that requests should be redirected to, such as http://www.webmin.com/ . The Status field is optional, but can be filled in if you want to change the HTTP status code that will be used for this redirect. The default is 302, which indicates a temporary redirection. However, you can 301 to tell browsers that the direction is permanent, or 303 to tell them that the original content has been replaced. There will always be exactly one empty row in the table. If you need to add more than one redirect, you will need to re-visit this page after filling in the row and saving.
- Fai clic su Salva button to have your new redirect stored in the Apache configuration. The browser will return to the virtual server options page.
- To make the redirection active, click on the Apply Changes link at the top of the page.
As with aliases, existing redirects can be edited by just changing the entries in the URL redirects table and then clicking Save . To delete a redirect, just delete the contents of all of its fields in the table.
You can also create regular expression redirects that behave in a similar way to regexp aliases, using the Regexp URL redirects table on the same page. Under the From column you can enter a URL path expression such as ^/webmin/(.*)$ , and under the To column a URL that can refer to bracketed parts of the path, such as http://www.webmin.com/$1 . In this example, an request by a client for a page under /webmin would be redirected to the same file at www.webmin.com .
Also on the Aliases and Redirects page are two more tables labelled Permanent URL redirects and Temporary URL redirects . The first behaves exactly the same as a normal redirection, but with the status code always set to 301, indicating a permanent redirection. The second also behaves like a normal redirect, but always uses a status code of 302 (temporary redirection). This option is really quite useless, as normal redirections default to using status 302 if one is not specified.
Redirects can also be defined in the options for directories, URL locations, filenames and .htaccess files. When editing the options for one of these (described in the *Setting per-directory options* section), the exact same icon and table are available as when setting up aliases for a virtual server. Naturally, a redirect in a directory only makes sense if the URL path being redirected actually refers to that some file or sub-directory that it contains. The same goes for redirects in URL locations - the path being redirected must start with the location's path.
If Apache on your system has been compiled with or dynamically loads the proxy module (covered in the *Configuring Apache as a proxy server* section below), tables labelled *Map locale to remote URLs* and Map remote Location:headers to local will appear on the Aliases and Redirects form under the virtual server options page. These allow you to specify a URL path that when requested will cause Apache to itself request pages from another website and return them to the browser. Even though the URL that the user is accessing is on your server and their browser is connecting only to your system, the content is actually being loaded from elsewhere.
To set up this URL mapping, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to create the mapping under. If you want it to apply to all virtual servers, click on the *Default Server* icon instead.
- On the virtual server options page that appears, click on the Aliases and Redirects icon to go to the page in Figure 29-6.
- In the empty row in the Map locale to remote URLs table, enter a URL path on your server (like /webmin ) into the first field, and the full URL that you want the pages to be requested from into the second (like http://www.webmin.com/ ).
- In the empty row in the Map remote Location:headers to local table, enter the same full remote URL into the first field and the URL path on your server into the second. This second table controls the conversion of redirects issued by the remote server, and should almost always be set. If it is not set, whenever the remote server issues a redirect the browser will end up connecting directly to it instead of to your server.
- Fai clic su Salva button to have your new mapping stored in the Apache configuration. The browser will return to the virtual server options page.
- To make the mapping active, click on the Apply Changes link at the top of the page.
You can test it out by going to the mapped URL path on your system, and you should see pages that have been requested from the remote server. The process is not totally transparent though, because it does not convert HTML files in any way. So if in the example above the remote server contained an HTML page with a link like , following it would take the browser to /foo.html on your system, not /webmin/foo.html as you might expect. There is no solution to this problem, apart from making sure that the remote server always uses relative links and image paths.
Running CGI programs
CGI stands for Common Gateway Interface, and is a standard method for webservers to run external programs, pass them details of a browser's request, and read back any content that the program generates. CGI programs are one of the simplest way of adding dynamic pages to your webserver, and are relatively easy to set up and develop. Server-side includes (covered in the next section) are even simpler, but very limited in what they can do.
A CGI program can be written in any language as long as it follows certain rules. The most common is Perl, but C, Python, PHP or any other language that can access environment variables and produce output can be used. You can even write shell scripts that are valid CGI programs. This section is not going to explain the details of how to write them though - there are plenty of books that cover that already.
CGI programs are just files on your system, like any other HTML or image file. The difference is that when they are requested by a browser, Apache executes them and returns their output instead of the contents of the file. Because you only want this to happen for programs and not for HTML files, the server must be configured to identify certain files as CGI programs. This is normally done in one of two ways - by putting all CGI programs into a certain directory, or by giving them all a file extension like .cgi.
The choice is yours, but the latter option is simpler to use as you can freely mix CGI scripts, HTML and image files in the same directory. To set it up, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to set up CGI programs for. Or click on the *Default Server *icon if you want to use them on all servers.
- Click on the icon for the directory that you want CGI programs to be enabled under. Typically each virtual server will have an icon for options for its document root directory, but if not you can create one by following the steps in the *Setting per-directory options* section above. If you only want to allow CGI programs to be run in some sub-directory of the website, you can create a new directory icon for that as well.
- On the directory options page, click on the Document Options icon and change the Directory options field from Default to Selected below . Then set the rows Execute CGI programs and Generate directory indexes a Sì , and click the Save pulsante in fondo alla pagina. This tells Apache that CGI programs can be executed in the directory.
- Back on the directory options page, click on the MIME Types icon. In the Content handlers table, select cgi-script from the first blank menu under the Handler column, and enter .cgi into the field next to it under the Extensions colonna. Then click the Save button at the end of the form. This tells Apache to treat all files in the directory ending in .cgi as CGI programs.
- Finally, click the Apply Changes link on any page. You should now be able to create a file with a .cgi extension in the chosen directory, and test it out in a web browser.
An alternative to this approach is to specify a directory in which all files are treated as CGI programs. This has the advantage that they can be given any name you like, instead of being forced to have a .cgi extension. You can also set permissions on this directory to restrict who is allowed to create CGI programs, while still allowing others to edit normal HTML pages.
To set up a directory for CGI scripts, the steps to follow are :
- On the module's main page, click on the icon for the virtual server that you want to set up a CGI directory for. Or click on the *Default Server* icon if you want to set it up for all servers.
- Click on the CGI Programs icon to bring up a page for setting various CGI options.
- The CGI directory aliases table works in a very similar to the Document directory aliases table described in the previous section. However, in addition to mapping a URL path to a directory on your server it also tells Apache that any files accessed through that path should be treated as CGI programs. In the first empty row of the table, enter a URL path like /cgi-bin/ into the From field and a directory like /home/example/cgi-bin/ into the To campo.
- Fai clic su Salva button at the bottom of the page to return to the virtual server options page. Then click the Apply Changes link to make the CGI directory active.
You should now be able to create CGI programs in the directory, and test them out in a web browser. On some Linux distributions, the default Apache configuration will already have a CGI directory available at the URL path /cgi-bin/, mapped to a directory like /home/httpd/cgi-bin/. If this is good enough for you, there is no need to follow the steps above - instead, you can just put CGI programs in that directory.
Normally, all CGI programs execute as the Unix user that the webserver runs as, typically named httpd or apache. On a system with multiple users who cannot be fully trusted, this is not a good thing - anything that one user's CGI program can do, everyone else's can as well. So for example if a user writes a CGI program that edits some file, he would have to make that file writeable by the httpd user, meaning that everyone else's CGI programs could write to it as well.
Fortunately, there is a solution. Apache comes with an optional program called suexec that can be used to have CGI programs run as some other Unix user, rather than as the webserver user. Typically the CGI programs under each virtual server will be run as the Unix user who owns that server's files. To set this up, the steps to follow are :
- Make sure that the suexec program exists on your system, and that it has setuid-root permissions. Apache typically expects to find it in /usr/sbin or /usr/local/apache/sbin, and most Linux distributions include it as a standard part of their Apache package. However, some do not have it setuid by default, so you may need to run chmod 6711 /usr/sbin/suexec to make it so.
- On the main page of the module, click on the icon for the virtual server that you want to have CGI programs run as a different user on. This will take you to the options page shown in Figure 29-4.
- Click on the User and Group icon on the virtual server options page.
- For the Run as Unix user field, select User name and enter the name of the user who owns the virtual server into the field next to it.
- Similarly, for Run as Unix group select Group name and enter the primary group of the user specified in the previous step.
- Fai clic su Salva button to return to the options page for the virtual server.
- To activate suexec for the first time, you need to stop and re-start Apache. Use the Stop Apache link at the top of the page to halt it, and then the Start Apache link to start it up again.
- To check that suexec is actually working, check the Apache error log file for a line containing suEXEC mechanism enabled that was logged when the webserver was re-started.
Because it can execute commands as any user on your system, suexec has many security restrictions to prevent misuse by normal users. It will only run CGI programs that are owned by the user and group specified in steps 4 and 5, and only if they are not writeable by any other user, or in a directory that is writeable by another user. The IDs of the user and group must be above minimums that are compiled into the program, to prevent programs owned by system users such as root or bin from being run. Finally, the program must reside under a directory that is compiled into suexec, and nowhere else on the filesystem.
This last restriction can be very annoying if you have a large number of virtual servers and want to enable the execution of CGI programs in their directories. The default allowed directory is typically the standard CGI directory for Apache, such as /home/httpd/cgi-bin. To change this, you will need to re-compile suexec with a different directory, such as /home.
Whenever suexec fails to run a CGI program, it fails with HTTP status code 500. Because there are many things that can go wrong, you should check the file suexec_log in the same directory as the other Apache logfiles to see why it is refusing to execute a particular program. For each failure, a line is written to this file explaining the problem, such as incorrect permissions or a file ownership mismatch.
Writing CGI programs can be difficult because when they fail, very little information is displayed in the browser. All you see is a message like 500 server error , which no explanation of the real cause. However, more detailed error information is written to the Apache error log file. This is usually named error_log, and can be found in the same directory as the Apache access log files. See the section below on Configuring logging for more details on how to find and change it.
Anything that a CGI programs outputs to STDERR will also be written to the error log, which is useful if you want your program to generate debugging information that is not sent to the web browser. Because many programming languages like Perl output error messages on STDERR if a script fails to compile or run, all such messages will also be written to the error log file.
The biggest problem with CGI programs is that the webserver has to launch a new process every time one is requested. If the CGI is written in Perl or PHP, the process then has to load the interpreter for that language which can itself be a large program. The end result is that processing a request for a CGI page takes much longer than a request for a static HTML or image file, and generates much more load on the server system.
For this reason, optional modules have been developed that allow the webserver to run Perl and PHP scripts using an interpreter that is part of the Apache process. These modules are called mod_perl and mod_php, and are included in the Apache package in many Linux distributions. Installing and configuring them is not covered in this chapter though.
Setting up server-side includes
Server-side includes allow you to create simple dynamic web pages without the complexity of writing an entire CGI program in a language like Perl. When active, some of the HTML files served by Apache are checked for special tags starting with appears in the HTML of page, it is replaced with the contents of the file something.html .
Server-side includes can also be used to access and set environment variables, to conditionally display HTML based on variables and to run CGI programs or shell commands and have their output included in the page. This section will not cover the tags that are available and the purposes though - instead, you should read the documentation on the Apache website or a good book on HTML.
Normally, allowing un-trusted users to create HTML pages containing server-side include tags is perfectly safe because they cannot be used to perform potentially dangerous operations like editing files on the server. The exception to this is the tag, which can be used to run an arbitrary shell command and have its output included in the web page. Because the command runs as the Unix user that Apache is running as (normally httpd), a user who is not allowed to create CGI programs may be able use this kind of tag to read or modify files that he would not normally be able to. For this reason, Apache can be configured to enable server-side includes with or without the risky exec tag.
Because checking an HTML file for server-side include tags is CPU intensive, they are often only activated for files with the .shtml extension. This way you can put static HTML in .html files and dynamic content into .shtml files, so that the server does not have to waste time looking for tags in files that do not contain them. However, it is also quite possible to have all .html files checked for server-side includes if you wish.
To turn on includes for a virtual server, the steps to follow are:
- On the module's main page, click on the icon of the virtual server that you want to enable server-side includes on. Or click on the Default Server icon to enable them for all virtual hosts.
- Click on the icon for the directory that you want server-side includes to be enabled under. Typically each virtual server will have an icon for options for its document root directory, but if not you can create one by following the steps in the *Setting per-directory options* section above. If you only want to enable server-side includes in some sub-directory of the website, you can create a new directory icon for that as well.
- On the directory options page, click on the Document Options icon and change the Directory options field from Default to Selected below . If you want to enable server-side includes without the exec tag, change the Server-side includes row to Yes . If you want to enable the potentially risky exec tag as well, change Server-side includes and execs row to Yes invece. Either way, when they have been enabled click the Save pulsante in fondo alla pagina.
- Click on the MIME types icon on the directory options page. If you want to enable includes on all HTML files, find the *Content handlers* table to select server-parsed from the first empty menu under the Handler column, and enter .html into the field next to it under the Extensions colonna. This tells Apache that files ending in .html should be checked for server-side include tags. If you want to enable includes for only .shtml files, enter .shtml instead of .html under the Extensions colonna. Then in the Extra MIME types table enter text/plain into the first empty field under the Type column and .shtml into the field under Extensions next to it. This tells Apache that .shtml files should be checked for server-side include tags, and that they actually contain HTML.
- Finally, click the Save button at the bottom of the MIME Types page, and then the Apply Changes link back on the directory options page.
Once server-side includes are enabled, you can test them by creating an .html or .shtml file in the chosen directory with some special tags it in. Then open the page in your web browser to see the result. If for some reason server-side includes were not enabled properly, nothing will show up at all because the