prof. Nunzio Brugaletta |
|
EnneBi - Computer
Science
Avanti - Indietro
- Inizio
Si è già avuto modo di osservare l'importanza e la diffusione delle tecnologie del Web anche oltre l'originario ambiente in cui sono nate. Il software che sta alla base delle applicazioni web-based è il web server. In questo paragrafo si vedranno i parametri di uso comune, utilizzati dal web server Apache (versione 2) per poter gestire un'applicazione basata sulle tecnologie web (HTML e web programming, per esempio, con PHP).
Il file di configurazione di Apache è /etc/apache2/apache2.conf e ogni opzione (direttiva nella terminologia del file) è preceduta, come solito nei file di configurazione di Linux, da righe di commento che documentano in maniera esaustiva il significato dell'opzione: se la direttiva non è attivata, la riga è commentata; se si vuole attivare l'opzione basta togliere il commento o, viceversa, se si vuole disattivare una opzione, generalmente, non si cancella la riga ma la si commenta.
Il file è idealmente composto da 3 sezioni: Global environment, Main server configuration, Virtual Hosts. La configurazione in realtà è spalmata in una serie di file, raggruppati anche in directory, che vengono richiamati, per mezzo della direttiva include, nel file apache2.conf.
Section 1: Global environment. Contiene direttive che controllano il processo Apache quando avviato:
StartServers 5 ... MaxClients 150
Un server, per soddisfare le richieste dei client, può duplicarsi in modo da rendere più efficiente il servizio stesso. La direttiva StartServers indica quante istanze del server vengono avviate all'inizio, la MaxClients indica invece il numero totale massimo di duplicazioni del processo server, ovvero, quante richieste di client il server può soddisfare. Chiaramente questi due parametri influenzano in modo notevole le prestazioni del server: più processi ci sono, più richieste si possono accogliere in contemporanea, ma più elaborazioni deve svolgere la macchina.
Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf
Sono direttive che permettono il caricamento di moduli che estendono le funzionalità del server. I vari moduli installati e disponibili sono conservati nella directory /etc/apache2/mods-available. Nella directory /etc/apache2/mods-enabled si creano i link simbolici ai moduli che si vogliono caricare, con il server, e rendere disponibili.
Il link al modulo dir.conf, per esempio, permette di specificare quali sono i nomi di default della pagina da inviare al client in mancanza di specifica ulteriore:
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
I comandi di shell eseguiti nella directory /etc/apache2/mods-enabled:
# cd /etc/apache2/mods-enabled # ln -s /etc/apache2/mods-available/userdir.conf userdir.conf # ln -s /etc/apache2/mods-available/userdir.load userdir.load # ln -s /etc/apache2/mods-available/php5.conf php5.conf # ln -s /etc/apache2/mods-available/php5.load php5.load
generano quattro link simbolici (riferimenti ai file: esattamente come se i file fossero ricopiati nella directory) ai moduli che consentono: i primi due, rispettivamente il file di configurazione e quello contenete le direttive di caricamento del modulo stesso, per ogni utente, di gestire un sito web nella propria home e di renderlo disponibile per mezzo del server, gli ultimi due per permettere l'interazione del web server con l'interprete php.
Il file userdir.conf contiene righe che permettono all'utente di specificare la directory in cui inserire le proprie pagine web:
UserDir public_html ... <Directory /home/*/public_html>
In questo modo, per esempio, l'utente tux può inserire le proprie pagine nella directory /home/tux/public_html e, se presente la home page con nome index.html, questa sarà inviata al client che effettua una richiesta del tipo http://nomeserver/~tux/.
Gli altri due link simbolici consentono di utilizzare nelle proprie pagine il linguaggio di scripting PHP caricando il modulo per far interagire il web server con l'interprete PHP e consentendo la gestione, da parte del web server stesso, delle pagine di tipo .php.
Section 2: 'Main' server configuration. Con la direttiva:
Include /etc/apache2/ports.conf
si include, nella configurazione, il file in cui si definiscono le porte su cui è in ascolto il server web.
# cd /etc/apache2 # cat ports.conf Listen 80
in questo caso si tratta della porta standard 80.
User www-data Group www-data
Indicano il nome dell'utente, e del gruppo cui appartiene l'utente, che lancerà il processo server. Questa è una prassi comune nei server: al momento dell'installazione viene generato un utente e un gruppo cui appartiene l'utente, con diritti limitati alla singola azione di lancio del servizio associato. In questo modo, a meno di bug del programma, un eventuale malintenzionato che riuscisse a bloccare il server potrebbe agire solo come utente con limitati permessi.
Section 3: Virtual Hosts. La directory /etc/apache2/sites-enabled conserva le configurazioni dei nomi di dominio, e delle directory corrispondenti, accessibili nella macchina nella quale è in esecuzione il server.
Include /etc/apache2/sites-enabled/
con la direttiva si includono nella configurazione del server, i file che specificano le configurazioni dei singoli domini accessibili. Il link a /etc/apache2/sites-available/default specifica le caratteristiche del sito di default:
DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory>
La DocumentRoot specifica la directory che contiene le pagine del sito. Racchiuso dai tag, in stile HTML, <Directory /var/www> sono specificate le caratteristiche della directory. In modo particolare la Options specifica la possibilità di visualizzare l'elenco dei file contenuti se non c'è index.html (Indexes), o la possibilità di utilizzare link simbolici (FollowSymlinks). La AllowOverride None indica l'impossibilità esterna (nella directory specificata) di utilizzare file di configurazioni (.htaccess) che modificano queste specifiche. Order specifica l'ordine delle Allow (permessi agli IP che possono accedere al sito. In questo caso tutti) o Deny (elenco IP che non hanno accesso al sito).
È possibile abilitare il supporto di Apache per i Name-Based Vritual Host. Si tratta in particolare di gestire più siti web collegati ad un singolo IP. Questa esigenza si è sviluppata principalmente negli ultimi anni: per rispondere all'esigenza di presenza in Internet, sono nate società che forniscono la possibilità di ospitare, per chi non possa provvedere in proprio, le pagine web di diverse aziende in un unica macchina fisica. Se si vogliono gestire più domini sulla stessa macchina basta creare un nuovo file, per esempio mieisiti, con le proprie configurazioni in /etc/apache2/sites-available e creare un link simbolico ad esso nella /etc/apache2/sites-enabled. Il file mieisiti potrebbe, per esempio e nell'ipotesi che la macchina con IP 192.168.1.100 sia quella che deve ospitare più host virtuali, contenere:
NameVirtualHost 192.168.1.100 <VirtualHost 192.168.1.100> ServerName prove.php DocumentRoot /home/tux/public_html/prove </VirtualHost> <VirtualHost 192.168.1.100> ServerName principale DocumentRoot /var/www </VirtualHost>
Nell'esempio proposto sono specificati due host virtuali raggiungibili, rispettivamente, con gli URL http://prove.php e http://principale. Nei tag relativi ai due host è specificato il nome e la DocumentRoot. Per poter risolvere i nomi è necessario che questi siano specificati, per esempio, in /etc/hosts:
####### /etc/hosts ###### 192.168.1.100 principale prove.php
|
ennebi@solira.org |