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)