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>