mar 072011
 

Se nel vostro lavoro sviluppate siti web, vi consiglio caldamente di proseguire nella lettura, perchè la maggior parte dei problemi in cui incappano i webmaster deriva proprio dalla mancata conoscenza di queste informazioni.

Innanzi tutto: tre basi tecniche che non possono mancare.
1) in programmazione ci sono due modi per parallelizzare l’esecuzione delle applicazioni: i processi e i thread. I processi sono delle entità a se stanti ciascuno con la sua memoria e le sue informazioni di stato; i processi possono dialogare tra loro attraverso sistemi che normalmente sono delegati al sistema operativo. I thread, invece, sono dei sottoprocessi che condividono le stesse variabili e quindi comunicano tra loro direttamente
2) ogni processo in Unix/Linux viene eseguito da un utente a livello di Filesystem: le autorizzazioni di ciò che può fare il processo all’interno del sistema operativo dipendono quindi dalle autorizzazioni che ha quell’utente
3) in Unix/Linux ogni file o directory ha un proprietario e un gruppo. Si devono definire le autorizzazioni (lettura, scrittura ed esecuzione) che ha il proprietario, il gruppo e tutti gli altri su ciascun file o directory. In Unix/Linux le autorizzazioni sono rappresentate da un numero di tre cifre, ciascuna delle quali indica il diritto del proprietario, del gruppo e degli altri. Ciascuna cifra è formata dalla somma di quattro valori: 0 equivale a nessun diritto, 1 è il diritto di esecuzione, 2 di scrittura e 4 di lettura. Ad esempio un file con permessi 740 vuol dire che il proprietario ha tutti i permessi (1+2+4=7), il gruppo ha solo i permessi di lettura e tutti gli altri nessun permesso.

Un po’ di storia: cos’è Apache?
Apache è un pacchetto inizialmente sviluppato per il mondo Unix/Linux per attivare le funzionalità di Web Server, cioè rendere il computer in grado di ospitare siti web. La diffuzione di questo pacchetto è notevole: secondo una statistica stilata nell’anno 2000, 15 milioni di web server pari al 60% del totale utilizzava Apache, al secondo posto c’era Microsoft IIS che però si fermava solo al 21%; il trend dell’ultimo decennio vede Apache ancora in forte crescita per cui stiamo parlando di ciò che è lo standard “de facto” dei web server.
E’ importante precisare che apache lavora autonomamente solo per fornire contenuti statici: per la parte dinamica (script CGI o PHP ad esempio) Apache si appoggia a programmi esterni oppure a moduli aggiuntivi eseguiti internamente.
La precedente master version di Apache (la 1.3) già implementava il multiprocessing per esaudire le richieste: all’avvio di Apache venivano istanziatiati un numero varibile di processi (si dichiarava un numero minimo e un numero massimo) atti a soddisfare le richieste web. Ad esempio, con un minimo 5 e un massimo di 20, all’avvio venivano creati 5 processi di Apache; se la quantità di richieste contemporanee di pagine web superava le 5 unità, venivano creati dinamicamente nuovi processi fino ad un massimo di 20 che si autodistruggevano al completamento della richiesta.
Apache 2.0, invece, permette di scegliere tra più modi di gestire i processi: questa configurazione è chiamata Multi Processing Mosule (MPM). Vediamoli nel dettaglio.

Prefork
Prefork è il modulo che lavora esattamente come la versione 1.3 di Apache e viene mantenuto sia per ragioni di compatibilità con la vecchia versione, sia perchè se si usano moduli aggiuntivi per servire contenuti dinamici (mod_php su tutti) è l’unico worker che garantisce piena compatibilità. Tutti i processi di apache vengono eseguiti da un unico utente di sistema dichiarato nel file di configurazione principale.

Worker
Worker è il modulo MPM introdotto con la versione 2.0 di Apache che introduce i thread all’interno dei processi per migliorare in modo significativo le prestazioni. Come nel prefork si dichiara il numero minimo e massimo di processi istanziabili, ma anche il numero minimo e massimo di thread e il numero massimo di thread per processo. Purtroppo questo modulo MPM è incompatibile con alcuni moduli esterni, ad esempio il mod_php. Come in prefork, tutti i processi di apache (e quindi anche tutti i thread) vengono eseguiti da un unico utente di sistema dichiarato nel file di configurazione principale.

Da questa lettura risulta evidente una cosa: se l’utente con cui sono creati i processi di apache non ha i permessi di scrittura su un determinato file o directory, non può scrivere. Punto. Se dovete far scrivere un file dall’utente con cui viene eseguito apache, dovete dargli i permessi di scrittura.

I VirtualHost
VirtualHost è una configurazione di apache che permette di ospitale pià siti all’interno di un unico server. In pratica, apache riconosce qual è l’URL digitata, cerca tra i VirtualHost se una di queste direttive corrisponde e, in caso affermativo, risponde con il sito corretto.
All’interno della configurazione di un VirtualHost, è possibile specificare moltissimi parametri, tra cui, le impostazioni di sicurezza di determinate directory e il metodo attraverso il quale servire contenuti dinamici come gli script PHP.

Articoli simili

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>