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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
#!/bin/sh LIBSUFFIX="" [ "$(arch)" = "x86_64" ] && LIBSUFFIX=64 MODSDIR=/usr/lib${LIBSUFFIX}/apache2 A2ENMOD=$( which a2enmod 2>/dev/null ) A2CTL=$( which apache2ctl 2>/dev/null ) if [ ! -e ${MODSDIR} ]; then echo "Directory ${MODSDIR} not found" exit 1 fi if [ "$A2ENMOD" = "" ]; then echo "Executable 'a2enmod' not found" exit 1 fi if [ "$A2CTL" = "" ]; then echo "Executable 'apache2ctl' not found" exit 1 fi cd $MODSDIR 2>&1 >/dev/null MODSAVAIL=$( 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 0 fi if [ "$1" = "all" ]; then echo "Apache2 available modules: " echo "${MODSAVAIL}" echo "" exit 0 fi if [ "$1" = "all-enabled" ]; then echo "Apache2 enabled modules: " echo "$( ${A2ENMOD} -l)" echo "" exit 0 fi if [ "$1" = "enabled" ]; then MOD=$2 ISOK="not enabled" $A2ENMOD -q ${MOD} 2>/dev/null >/dev/null && ISOK="enabled" echo "Module ${MOD} ${ISOK}" echo "" exit 0 fi if [ "$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 0 fi if [ "$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 0 fi |
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)