Pregunta ¿Cómo verificar qué módulos de Apache están habilitados / instalados?


¿Cuál es la forma más elegante de verificar qué módulos de Apache están habilitados?


336


origen




Respuestas:


Estás en Ubuntu así que intenta:

apache2ctl -M

414



apache2ctl -M Funciona genial - udo
apache2 -M resultados en este error apache2: bad user name ${APACHE_RUN_USER} - udo
Bastante justo - se debe al hecho de que no está ejecutando el comando como el usuario de tiempo de ejecución de apache (probablemente www-data) definido en la configuración de apache. Hay una manera de solucionar esto, pero también podría apegarse a apache2ctl. - Linker3000
sudo apache2ctl -M | sort - mmdemirbas
Tenga en cuenta que hay muchas opciones útiles (indicadores) para apache2ctl pero no se incluyen ni en la página de manual ni en apache2ctl --help. Eso es porque se entregan a httpd. Se enumeran en el documentación de httpd solamente. - Lutz Prechelt


httpd -M le dirá qué módulos están integrados o compartidos.


105



hmm ... recibo un "bash: httpd: comando no encontrado" al ejecutar httpd -M como root - udo
Entonces, especifique la ruta completa a la httpd ejecutable. - Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams: en Ubuntu (y otras distribuciones basadas en Debian), el nombre es apache2y no httpd, que es por lo que no se encuentra. - Daniel Andersson
Apache es httpd en redhat. Pruebe una de las otras respuestas si esta no funciona para usted. - Jacks_Depression
CentOS también usa httpd en lugar de apache2 - pedromanoel


Nada de las respuestas anteriores funciona si no puede ejecutar comandos en el servidor remoto. Si solo tiene privilegios de "usuario" o ninguno, intente crear test.php guión:

<pre>
<?php
print_r(apache_get_modules());
?>
</pre>

Aunque solo funcionará si PHP está instalado como mod_php.


35



Además, querrás que esto no sea públicamente visible. Puede querer restringir ese resultado al cliente con una IP de administrador. Y querrá eliminar esa secuencia de comandos tan pronto como haya terminado con ella. Porque defensa en profundidad; no lo hagas más fácil de lo necesario. - Parthian Shot


Tal vez esto ayude a algunas personas en hosts compartidos sin acceso a httpd, apachectl o procesos:

Módulos habilitados: ls /etc/apache2/mods-enabled/

Módulos disponibles: ls /etc/apache2/mods-available/


18



Aquí está la lista completa, apache2ctl filtrarlos - jgpATs2w


También puedes usar apachectl

apachectl -t -D DUMP_MODULES

17





Creo que en realidad hay tres preguntas aquí. No estoy seguro de lo que estás preguntando.

  • ¿Qué módulos tienes en el disco? ¿Cuáles son todos los módulos que puedes usar?

Esto sería (normalmente) en el directorio de módulos de su distribución de apache, generalmente / etc / httpd / modules /

  • ¿Qué módulos es una instancia específica configurada para ejecutarse?

Esto se puede verificar con / usr / sbin / httpd -M, al menos para el sistema base apache. Si desea verificar un archivo de configuración específico / usr / sbin / httpd -M -f / ruta / a / config / archivo

  • Que hay en un apache corriendo

Para obtener mucha información, puede verla con http: // nombre de máquina / información del servidor / Esto no está configurado por defecto, tendrías que configurar es una fuga de información, así que configúrelo para que solo las personas locales puedan verlo.

Si está en la máquina y tiene acceso para ser el usuario en ejecución, también puede ver qué se carga al verificar el proceso. Puede encontrar el proceso principal con:

ps -ef | gawk '/httpd/ && $3 == 1{print $2}'

Entonces echa un vistazo

cat /proc/PID_FROM_ABOVE/maps

10



Información útil, pero debido a que OP usa Ubuntu, los nombres de los archivos y las ubicaciones son diferentes, por ejemplo: / usr / sbin / apache2 en lugar de httpd y ps -ef | gawk '/ apache2 / && $ 3 == 1 {print $ 2}' La ubicación de los módulos se maneja de manera diferente, con subcarpetas mods-available y mods-enabled - Linker3000
Gracias @ Linker3000 ... Tienes razón, esto es para RedHat / Centos, voy a dejar tu comentario sobre cómo convertir a Ubuntu - Rich Homolka


Si estás en Redhat / CentOS, httpd se usa en lugar de apache2ctl.

Esto significa que necesita usar el

httpd -M

Sin embargo, httpd casi nunca está en el camino que esperas.

Puedo confirmar en CentOS 5.8 que la ruta real es /usr/sbin/httpd.

/usr/sbin/httpd -M

Pero si ese no es el camino, puedes descubrirlo. Así es como pude hacerlo.

Primero, revisé el daemon que se usa para controlarlo.

less /init.d/httpd

Alrededor de la línea 40ish

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=${HTTPD-/usr/sbin/httpd}
prog=httpd

Lo cual me dijo exactamente dónde encontrarlo. Espero que esto ayude.


10





Listar todos los módulos habilitados

a2query -m

5