Gestione moduli Apache per openSuse
Per la gestione del webserver Apache Httpd sulla distribuzione openSuse abbiamo il classico comando a2enmod, condiviso con altre distribuzioni, che permette di: 1) capire se un modulo è abilitato, 2) attivare un modulo che è non attivo e 3) disattivare un modulo.
Per comodità di gestione del sistema ho preparato un semplice script che si occupa di fare da wrapper verso il citato a2enmod andando a fornire funzionalità quali: 1) lista di tutti i moduli presenti sul sistema, 2) lista di tutti i moduli abilitati, 3) verifica dell'abilitazione di un modulo, 4) abilitazione di uno o più moduli e 5) disattivazione di uno più moduli.
Per poter utilizzare questo tool create il file /usr/local/bin/apache2mods.sh, rendentelo eseguibile e al suo interno inserite questo codice:
#!/bin/shLIBSUFFIX=""[ "$(arch)" = "x86_64" ] && LIBSUFFIX=64MODSDIR=/usr/lib${LIBSUFFIX}/apache2A2ENMOD=$( which a2enmod 2>/dev/null )A2CTL=$( which apache2ctl 2>/dev/null )if [ ! -e ${MODSDIR} ]; then echo "Directory ${MODSDIR} not found" exit 1fiif [ "$A2ENMOD" = "" ]; then echo "Executable 'a2enmod' not found" exit 1fiif [ "$A2CTL" = "" ]; then echo "Executable 'apache2ctl' not found" exit 1ficd $MODSDIR 2>&1 >/dev/nullMODSAVAIL=$( ls mod_*.so | sed -es/^mod_// | sed -es/.so$// | tr '\n' ' ' )MODSLOADED=$( $A2ENMOD -l )if [ "$1" = "" ]; then echo "" echo "Usage: apache2mods.sh <option> [modules]" echo "Option: " echo "- all : display all available modules" echo "- all-enabled : display all enabled modules" echo "- enabled <mod> : display if the given module as been loaded" echo "- enable <mod> [<mod> ...] : enable the given modules" echo "- disable <mod> [<mod> ...] : enable the given modules" echo "" exit 0fiif [ "$1" = "all" ]; then echo "Apache2 available modules: " echo "${MODSAVAIL}" echo "" exit 0fiif [ "$1" = "all-enabled" ]; then echo "Apache2 enabled modules: " echo "$( ${A2ENMOD} -l)" echo "" exit 0fiif [ "$1" = "enabled" ]; then MOD=$2 ISOK="not enabled" $A2ENMOD -q ${MOD} 2>/dev/null >/dev/null && ISOK="enabled" echo "Module ${MOD} ${ISOK}" echo "" exit 0fiif [ "$1" = "enable" ]; then shift 1 echo "Apache2 enabling modules: " for MOD in $@ ; do ISOK="error" $A2ENMOD ${MOD} 2>/dev/null >/dev/null && ISOK="ok" echo "- enabling ${MOD}: ${ISOK}" done $A2CTL restart echo "" exit 0fiif [ "$1" = "disable" ]; then shift 1 echo "Apache2 disabling modules: " for MOD in $@ ; do $A2ENMOD -q ${MOD} 2>/dev/null >/dev/null if [ "$?" != "0" ]; then ISOK="not loaded, nothing to do" else ISOK="error" $A2ENMOD -d ${MOD} 2>/dev/null >/dev/null && ISOK="ok" fi echo "- disabling ${MOD}: ${ISOK}" done $A2CTL restart echo "" exit 0fi A questo punto potrete usare i seguenti comandi:
- apache2mods.sh all : ritorna la lista di tutti i moduli apache presenti sul sistema
- apache2mods.sh all-enabled : ritorna la lista di tutti i moduli apache presenti sul sistema e attualmente abilitati nel webserver
- apache2mods.sh enabled <modulo> : indica se il modulo indicato è stato abilitato o meno
- apache2mods.sh enable <modulo> [<modulo> ... <modulo>] : abilita i moduli indicati tra gli argomenti (uno o più moduli possono essere indicati)
- apache2mods.sh disable <modulo> [ <modulo> ... <modulo>] : disabilita i moduli indicati tra gli argomenti (uno o più moduli possono essere indicati)