Attualmente il gruppo di sviluppo di Apache mantiene due tree differenti del progetto HTTP server:
- Apache1.3: La release più vecchia, anagraficamente e concezionalmente parlando ma inevitabilmente più testata rispetto alla nuova release.
- Apache2.0: Il nuovo tree comprendente nuove features e nuova logica nella gestione delle richieste http e della configurazione del servizio.
Di seguito sono riportate le principali features della nuova release:
Configurazione
Sono state apportate alcune modifiche a livello di file di configurazione e delle direttive da utilizzare per semplificare parti come il caricamento dei moduli e il binding di indirizzi ip e porte.
Inoltre vengono utilizzate di default direttive come ServerTokens per modificare i vari header contenenti informazioni sul server e la direttiva Include per gestire il servizio con più file di configurazione.
E' garantita la compatibilità della vecchia versione, di cui mantiene gran parte delle direttive.
Miglior supporto per piattorme non Unix e supporto unicode nativo di WIN NT
Molta attenzione è stata destinata nel migliorare le stabilità e le performance in sistemi non unix come BeOS, OS/2 e Windows ove si è utilizzato anche utf-8 per l'encoding per i file name. Tale soluzione funziona solo con sistemi basati su tecnologia NT (Win NT, 2000 e XP) poichè gli altri sistemi operativi come win 98, ME utilizzano le codepage locali.
RegEx
Apache 2 supporta le regular expression in formato perl5 grazie al nuovo motore PCRE conforme allo standard POSIX.2
Gestione del Multilanguage
Attulamente si ha la possibilità di gestire risorse web multilanguage tramite le preferenze dell'utente (ovvero tramite i vari header inviati dal client contenente i settaggi del browser) oltre che per la scelta del set dei caratteri.
Questa localizzazione del contenuto è stata introdotto anche per la gestione degli errori.
Nuovi Moduli
Alcuni moduli come il modulo proxy sono stati riscritti ed altri aggiunti nel pool di moduli che vengono installati di default come mod_dav per gestire il protocollo webdav.
Inoltre la nuova API permette di unire le funzionalità di più moduli e quidi di utilizzare moduli come se fossero dei filtri per la gestione delle risorse web.
Thread
La struttura di Apache 1.3 prevedeva che le rischieste http venissero gestite da un pool di processi che aumentavano o dimuniavano a seconda del carico.
Con Apache2 le richieste http possono essere gestire dai thread, assimilabili come dei canali all'interno di un processo, questo in termini di performance e gestione delle richieste risulta essere un passo avanti.
La gestione dei fork dei processi e dei thread viene gestito dai moduli MPM (Multi Process Modules).
MPM
Ecco i moduli MPM base disponibili per linux e sono attivabili con la compilazione dei sorgenti:
- Prefork
Metodo utilizzato anche nella vecchia release (Apache1.3) di fatto i thread sono disabilitati.
Quando apache viene attivato un pool di processi (definiti tramite la direttiva StartServer) vengono inizializzati e tale pool di processi crescerà a seconda del carico che dovranno gestire, il numero minimo e massimo dei processi vengono settati tramite la direttive: MinSpareServers e MaxSpareServers.
- Worker
Soluzione ibrida implementa sia la funzionalità dei multiprocessi che dei multithread.
Ovvero viene generato un pool di processi di cui ogni singolo processo a sua volta genera un numero fisso di thread, l'adeguamento al carico avviene con la creazione di nuovi processi.
- Perchild
All'avvio del servizio vengono generati un numero fisso di processi i quali generano un numero variabili di thread a seconda del carico. Il vantaggio nell'adottare questa soluzione, rispetto a quella denominata Worker, risiede nel fatto che ogni processo figlio gli si può assegnare un UID e privilegi diversi e vincolare tale processo ad un singolo virtualhost.
Ipoteticamente parlando sarà possibile creare e dedicare dei processi a un virtualhost specifico, con owner e permessi sulle directory differenti.
La soluzione più idonea per un server pubblico che deve offrire un servizio h24 rimane ancora la prefork, per motivi di affidabilità e nel caso in cui si voglia installare nuovi moduli MPM occorrerà patchare e ricompilare i sorgenti.
Inoltre bisogna tenere in considerazione della possibilità che dei moduli sviluppati da terze parti (ovvero da gruppi esterni ad Apache) possono essere incongruenti con la nuova struttura API di apache 2.0 .
Prima analisi di httpd.conf, settaggio dei parametri base. Tool grafici per la configurazione.