Moduli

Lista dei moduli

Versione Debian:

apache2ctl -M

Versione Unix:

httpd -M

La lista da i moduli correntemente caricati nello spazio di indirizzamento del programma.

Vi sono tre tipi di moduli:

  • Static - linkati staticamente nel programma principale
  • Shared - librerie condivise (shared objects) linkati allo start del programma
  • Dynamic - che permettono il caricamento a runtime. Apache non usa questo tipo di moduli.

Abilitazione e Disabilitazione Moduli

Versione Debian

Abilitare un modulo, esempio:

sudo a2enmod rewrite

Disabilitare un modulo, esempio:

sudo a2dismod status

I comandi rispettivamente aggiungono o tolgono un link simbolico nella sottodirectory mods-enabled alla sottodirectory mods-available.

Basta, p.es., rewrite e non mod_rewrite.

Occorre restartare il servizio:

sudo systemctl restart apache2

Versione Unix

Editare il file di configurazione principale:

vi /etc/apache2/httpd.conf

Non c'è sudo nel contenitore alpine. Siamo già root.

Trovare nel file il modulo desiderato.

Togliere o porre il cancelletto (#) a inizio riga per abilitare o disabilitare il modulo.

Restartare Apache:

httpd -k restart

Installazione Moduli

In versione Debian

Debian/Ubuntu possiede un numero elevato di moduli Apache aggiuntivi, nella distribuzione di release.

Per listarli:

sudo apt update
sudo apt search libapache2-mod-

Possono poi venir installati col normale comando sudo apt install ....

In Versione Alpine/Docker

Alpine possiede un numero più limitato di moduli di Apache, sviluppati e contribuiti da terzi.

Listare i moduli disponibili:

apk update
apk search apache | grep mod

Vengono poi installati col comando di installazione pacchetti di Alpine: apk add ....

A volte un ente contribuisce un suo modulo e lo rende disponibile nel suo repository come package. Per averlo dobbiamo aggiungere il repository e la chiave pubblica alla configurazione.

Per esempio:

wget -q https://apk.signalsciences.net/sigsci_apk.pub ; mv sigsci_apk.pub /etc/apk/keys/
echo https://apk.signalsciences.net/3.19/main | tee -a /etc/apk/repositories && apk update

Configurazione Condizionale

La presenza o meno di moduli determina se venga attivato o meno un parametro di configurazione, che ha un modulo come prerequisito, o venga caricato un modulo dipendente.

Per esempio, caricamento di un modulo dipendente:

<IfModule !mpm_prefork_module>
  LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
  LoadModule cgi_module modules/mod_cgi.so
</IfModule>

Esempio di configurazioni dipendenti:

<IfModule unixd_module>

User apache
Group apache

</IfModule>

Quest'ultimo serve per lanciare Apache coi permessi di un utente e di un gruppo particolari, invece di root.

Altro esempio:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

Quando il Path è una directory, viene mostrato questo file in essa contenuta.

Altro esempio:

<IfModule alias_module>
    # Redirect permanent /foo http://www.example.com/bar
    # Alias /webpath /full/filesystem/path
    ScriptAlias /cgi-bin/ "/var/www/localhost/cgi-bin/"
</IfModule>