26.4. Installazione, attivazione e configurazione dei moduli

Il software Apache è basato su moduli: tutte le funzionalità eccetto alcuni task di base sono gestite da moduli. Il software si è evoluto a tal punto che, anche l'HTTP viene elaborato da un modulo (http_core).

I moduli Apache possono essere compilati nel binario Apache al momento del build oppure caricati in modo dinamico al runtime. Per ulteriori informazioni sul caricamento dinamico dei moduli, fare riferimento alla Sezione 26.4.2, "Attivazione e disattivazione".

I moduli Apache possono essere suddivisi in quattro diverse categorie:

Moduli di base

I moduli di base vengono compilati in Apache per impostazione predefinita. Apache in SUSE possiede solo mod_so (necessario per caricare altri moduli) e http_core compilati al suo interno. Tutti gli altri moduli sono disponibili come oggetti condivisi: anziché essere inclusi nel binario stesso del server, possono essere inclusi al runtime.

Moduli di estensione

I moduli etichettati come estensioni sono inclusi nel pacchetto di programmi Apache ma non vengono generalmente compilati staticamente sul server. In SUSE Linux, queste estensioni sono disponibili come oggetti condivisi caricabili in Apache in fase di esecuzione.

Moduli esterni

I moduli contrassegnati come esterni non sono inclusi nella distribuzione ufficiale di Apache. SUSE Linux ne fornisce diversi disponibili per l'uso.

Moduli per il multiprocessing

Gli MPM si occupano dell'accettazione e della gestione delle richieste a un server Web, rappresentando la parte centrale del software apposito.

26.4.1. Istallazione dei moduli

Se si è seguito il sistema di installazione predefinito di Apache (descritto riportato nella Sezione 26.1.2, "Installazione"), questo verrà installato con tutti i moduli di base e di estensione, il modulo multiprocessing Prefork MPM e il modulo esterno PHP5.

È possibile installare moduli esterni addizionali avviando YaST e selezionando Software+Gestione software. Ora scegliere Filtro+Ricerca e cercare apache. Fra gli altri pacchetti, l'elenco dei risultati contiene tutti i moduli Apache esterni disponibili.

26.4.2. Attivazione e disattivazione

Utilizzando YaST, è possibile attivare o disattivare i moduli del linguaggio di script (PHP5, Perl, Python e Ruby) con la configurazione del modulo descritta nella Sezione 26.2.2.1, "Assistente di sistema: Server HTTP". Tutti gli altri moduli possono essere abilitati o disabilitati come descritto riportato nella Sezione 26.2.2.2.2, "Moduli del server".

Se si preferisce attivare o disattivare i moduli manualmente, utilizzare i comandi a2enmod mod_foo o a2dismod mod_foo, rispettivamente. a2enmod -l produce un elenco di tutti i moduli correntemente attivi.

[Important]Inclusione dei file di configurazione per i moduli esterni

Se si sono attivati i moduli esterni manualmente, accertarsi di caricare i relativi file di configurazione in tutte le configurazioni di host virtuali. I file di configurazione per i moduli esterni sono situati in /etc/apache2/conf.d/ e non sono caricati per impostazione predefinita. Se si necessita degli stessi moduli su ciascun host virtuale, è possibile includere *.conf da questa directory. In caso contrario includere ciascun singolo file. Per esempi, vedere /etc/apache2/vhost.d/vhost.template.

26.4.3. Moduli di base e di estensione

Tutti i moduli di base e di estensione sono descritti in dettagli nella documentazione di Apache. Qui viene fornita una breve descrizione dei moduli più importanti. Per ulteriori dettagli su ciascun modulo, fare riferimento a http://httpd.apache.org/docs/2.2/mod/.

mod_alias

Fornisce direttive Alias e Redirect con le quali è possibile mappare un URI su una directory specifica (Alias) o reindirizzare un URL richiesto verso un'altra posizione Questo modulo è abilitato per impostazione predefinita.

mod_auth*

I moduli di autenticazione forniscono vari metodi di autenticazione: autenticazione di base con mod_auth_basic o autenticazione classificata con mod_auth_digest. L'autenticazione classificata in Apache 2.2 è considerata sperimentale.

mod_auth_basic e mod_auth_digest devono essere combinati con un modulo di di fornitura di autenticazione mod_authn_* (ad esempio, mod_authn_file per autenticazione basata su file di testo) e con un modulo di autorizzazione mod_authz_* (ad esempio, mod_authz_user per autorizzazione utente).

Ulteriori su questo argomento sono disponibili nell'"Howto Autenticazione" in http://httpd.apache.org/docs/2.2/howto/auth.html.

mod_autoindex

Quando non è presente un file di indice, autoindex genera elenchi del contenuto della directory (ad esempio, index.html). L'aspetto di questi indici è configurabile. Questa modulo è abilitato per impostazione predefinita. Tuttavia, gli elenchi del contenuto delle directory sono disabilitati per impostazione predefinita tramite la direttiva Options; sovrascrivere questa impostazione nella configurazione dell'host virtuale. Il file di configurazione predefinito per questo modulo è situato in /etc/apache2/mod_autoindex-defaults.conf.

mod_cgi

mod_cgi è richiesto per l'esecuzione di script CGI. Questo modulo è abilitato per impostazione predefinita.

mod_deflate

Utilizzando questo modulo, Apache può essere configurato per comprimere in tempo reale determinati tipi di file prima di inviarli.

mod_dir

mod_dir fornisce la direttiva DirectoryIndex con la quale è possibile stabilire quali file sono inviati automaticamente quando viene richiesta una directory (per impostazione predefinita index.html). Fornisce inoltra una ridirezione automatica all'URI corretto quando una richiesta di directory non contiene una barra finale. Questo modulo è abilitato per impostazione predefinita.

mod_expires

Con mod_expires è possibile controllare la frequenza con la quale la cache del proxy e del browser aggiornano i documenti inviando un'intestazione Expires. Questo modulo è abilitato per impostazione predefinita.

mod_include

mod_include consente di utilizzare Server Side Include (SSI), che fornisce una funzionalità di base per la generazione dinamica di pagine HTML. Questo modulo è abilitato per impostazione predefinita.

mod_info

Fornisce una panoramica completa della configurazione del server in http://localhost/server-info/. Per motivi di sicurezza, è consigliabile limitare sempre l'accesso a questo URL. Per impostazione predefinita, solo localhost può accedere a questo URL. mod_info è configurato in /etc/apache2/mod_info.conf.

mod_log_config

Con questo modulo è possibile configurare l'aspetto dei file di log di Apache. Questo modulo è abilitato per impostazione predefinita.

mod_mime

Il modulo mime verifica che i file vengano inviati con l'intestazione MIME corretta, basata sull'estensione del nome file; ad esempio text/html per i documenti HTML. Questo modulo è abilitato per impostazione predefinita.

mod_negotiation

Necessario per la negoziazione del contenuto. Per ulteriori informazioni, fare riferimento a http://httpd.apache.org/docs/2.2/content-negotiation.html. Questo modulo è abilitato per impostazione predefinita.

mod_rewrite

Fornisce la stessa funzionalità di mod_alias, ma offre più funzioni e flessibilità. Con mod_rewrite, è possibile reindirizzare gli URL in base a regole multiple, intestazioni e altro ancora.

mod_speling

mod_speling tenta di correggere automaticamente errori tipografici negli URL, quali errori con maiuscole/minuscole.

mod_ssl

Abilita connessioni cifrate fra il server Web e i client. Per ulteriori informazioni, vedere la Sezione 26.6, "Impostazione di un server Web sicuro con SSL". Questa modulo è abilitato per impostazione predefinita.

mod_status

Fornisce informazioni su attività e prestazioni del server all'indirizzo http://localhost/server-status/. Per motivi di sicurezza, è consigliabile limitare sempre l'accesso a questo URL. Per impostazione predefinita, solo localhost può accedere a questo URL. mod_status è configurato in /etc/apache2/mod_status.conf.

mod_suexec

mod_suexec consente di eseguire script CGI come utente e gruppo differenti. Questa modulo è abilitato per impostazione predefinita.

mod_userdir

Abilita directory specifiche dell'utente in ~user/. È necessario specificare la direttiva UserDir nella configurazione. Questa modulo è abilitato per impostazione predefinita.

26.4.4. Moduli per il multiprocessing

SUSE Linux offre due diversi moduli per il multiprocessing (MPM) per l'utilizzo con Apache.

26.4.4.1. MPM prefork

MPM prefork implementa un server Web non basato su thread e con funzioni di prefork. Rende il server Web simile ad Apache versione 1.x, poiché isola ciascuna richiesta e la gestisce duplicando un processo secondario separato. In questo modo, le richieste problematiche non hanno conseguenze sulle altre, evitando un blocco del server Web.

Se da un lato garantisce stabilità con questo approccio basato sui processi, MPM prefork consuma molte più risorse di un altro programma equivalente, MPM worker. MPM prefork è considerato l'MPM predefinito per i sistemi operativi basati su Unix.

[Important]Gli MPM nella presente documentazione

Questo documento presume l'utilizzo di Apache con l'MPM prefork.

26.4.4.2. MPM worker

MPM worker propone un server Web multithread. Un thread è una forma "più leggera" di processo. Il vantaggio di un thread rispetto a un processo è il consumo più basso di risorse. Invece di duplicare solamente processi secondari, l'MPM worker supporta richieste utilizzando thread con processi del server. I processi secondari di tipo prefork sono multithread. Questo approccio migliora le prestazioni di Apache, consumando un numero inferiore di risorse di sistema rispetto all'MPM prefork.

Uno dei principali svantaggio è la stabilità dell'MPM worker: se un thread viene danneggiato, tutti i thread di un processo possono subirne le conseguenze. La conseguenza peggiore è un arresto del server. Gli errori interni del server, dovuti a thread incapaci di comunicare con le risorse di sistema, possono verificarsi soprattutto per l'utilizzo di CGI con Apache sottoposto a un carico eccessivo. Un altro punto a sfavore dell'utilizzo dell'MPM worker con Apache è che non tutti i moduli di Apache disponibili sono thread-safe, per questo motivo non possono essere utilizzati insieme a MPM worker.

[Warning]Utilizzo di moduli PHP con gli MPM

Non tutti i moduli PHP disponibili sono thread-safe. L'utilizzo dell'MPM worker con mod_php è fortemente sconsigliato.

26.4.5. Moduli esterni

Di seguito vengono elencati tutti i moduli esterni forniti con SUSE Linux. La documentazione del modulo si trova nella directory indicata.

FastCGI

FastCGI è un'estensione CGI indipendente dal linguaggio, scalabile e aperta che fornisce alte prestazioni senza le limitazioni delle API specifiche del server. Le applicazioni FastCGI sono molto veloci, in quanto permanenti. Non vi è alcun overhead dovuto ad avvio su richiesta.

Nome pacchetto: apache2-mod_fastcgi
File di configurazione: /etc/apache2/conf.d/mod_fastcgi.conf
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_fastcgi
mod_perl

mod_perl consente di eseguire script Perl con un interprete incorporato. L'interprete permanente incorporato nel server evita l'overhead dovuto all'avvio di un interprete esterno e la penalità di avvio di Perl.

Nome pacchetto: apache2-mod_perl
File di configurazione: /etc/apache2/conf.d/mod_perl.conf
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_perl
mod_php5

PHP è linguaggio di script HTML lato server, multipiattaforma, incorporato.

Nome pacchetto: apache2-mod_php5
File di configurazione: /etc/apache2/conf.d/php5.conf
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_php5
mod_python

mod_python consente di incorporare Python nel server HTTP Apache per ottenere un notevole miglioramento delle prestazione e maggiore flessibilità nella progettazione di applicazioni basate su Web.

Nome pacchetto: apache2-mod_python
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_python
mod_ruby

mod_ruby incorpora l'interprete Ruby nel server Web Apache e consente l'esecuzione degli script CGI Ruby in modo nativo. Questi script si avviano molto più rapidamente quando si utilizza mod_ruby.

Nome pacchetto: apache2-mod_ruby
Ulteriori informazioni: /usr/share/doc/packages/apache2-mod_ruby
mod_jk-ap20

Questo modulo fornisce connettori fra Apache e un servlet container Tomcat.

Nome pacchetto: mod_jk-ap20
Ulteriori informazioni: /usr/share/doc/packages/mod_jk-ap20

26.4.6. Compilazione

Gli utenti avanzati possono estendere Apache scrivendo moduli personalizzati. Per sviluppare moduli per Apache o per compilare moduli di terzi, è necessario disporre del pacchetto apache2-devel unitamente agli strumenti di sviluppo corrispondenti. apache2-devel contiene inoltre gli strumenti apxs2, necessari alla compilazione di moduli aggiuntivi per Apache.

apxs2 abilita la compilazione e l'installazione di moduli da sorgente (comprese le modifiche necessarie per i file di configurazione) che crea dynamic shared object (DSO, oggetti dinamici condivisi) caricabili in Apache al runtime.

I binari apxs2 si trovano nella posizione/usr/sbin:

  • /usr/sbin/apxs2: è adatto per generare un modulo di estensione che funziona con qualsiasi MPM. La posizione di installazione è /usr/lib/apache2.

  • /usr/sbin/apxs2-prefork: è adatto per il prefork dei moduli MPM. La posizione di installazione è /usr/lib/apache2-prefork.

  • /usr/sbin/apxs2-prefork: è adatto per i moduli di lavoro MPM.

apxs2 installa i moduli in modo tale che possano essere utilizzati per tutti gli MPM. Gli altri due programmi installano i moduli in modo tale che possano essere utilizzati solo per i rispettivi MPM. apxs2 installa i moduli in /usr/lib/apache2, apxs2-prefork e apxs2-worker vengono installati in /usr/lib/apache2-prefork o /usr/lib/apache2-worker.

Installare e attivare un modulo dal codice sorgente con i comandi cd /path/to/module/source; apxs2 -cia mod_foo.c (-c compila il modulo, -i lo installa e -a lo attiva). Le altre opzioni diapxs2 sono descritte alla manpage apxs2(1).