Veamos cómo listar módulos de Apache compilados (incluidos en el binario apache2), módulos cargados, módulos disponibles para cargar (usar), módulos habilitados y módulos disponibles para instalar en un servidor Debian.



Apache suele incluir algunos pocos módulos compilados en el binario apache2. Estos son los módulos estáticos. Para listarlos simplemente se debe utilizar la opción -l:

root@debian:~# apache2 -l
Compiled in modules:
  core.c
  mod_so.c
  mod_watchdog.c
  http_core.c
  mod_log_config.c
  mod_logio.c
  mod_version.c
  mod_unixd.c

Este comando no interfiere con ninguna instancia del demonio en ejecución, al igual que ocurre al listar la versión de Apache.

Luego se dispone de una buena cantidad de módulos que se pueden cargar durante el inicio del demonio en la configuración de Apache. Se denominan módulos compartidos. En Debian y derivados, el directorio /etc/apache2/mods-available/ posee un archivo .load para cada módulo disponible:

root@debian:~# ls -1 /etc/apache2/mods-available/*.load
/etc/apache2/mods-available/access_compat.load
/etc/apache2/mods-available/actions.load
/etc/apache2/mods-available/alias.load
/etc/apache2/mods-available/allowmethods.load
/etc/apache2/mods-available/asis.load
/etc/apache2/mods-available/auth_basic.load
/etc/apache2/mods-available/auth_digest.load
/etc/apache2/mods-available/auth_form.load
/etc/apache2/mods-available/authn_anon.load
/etc/apache2/mods-available/authn_core.load
/etc/apache2/mods-available/authn_dbd.load
/etc/apache2/mods-available/authn_dbm.load
/etc/apache2/mods-available/authn_file.load
/etc/apache2/mods-available/authn_socache.load
/etc/apache2/mods-available/authnz_fcgi.load
/etc/apache2/mods-available/authnz_ldap.load
/etc/apache2/mods-available/authz_core.load
/etc/apache2/mods-available/authz_dbd.load
/etc/apache2/mods-available/authz_dbm.load
/etc/apache2/mods-available/authz_groupfile.load
/etc/apache2/mods-available/authz_host.load
/etc/apache2/mods-available/authz_owner.load
/etc/apache2/mods-available/authz_user.load
/etc/apache2/mods-available/autoindex.load
/etc/apache2/mods-available/brotli.load
/etc/apache2/mods-available/buffer.load
/etc/apache2/mods-available/cache_disk.load
/etc/apache2/mods-available/cache.load
/etc/apache2/mods-available/cache_socache.load
/etc/apache2/mods-available/cern_meta.load
/etc/apache2/mods-available/cgid.load
/etc/apache2/mods-available/cgi.load
/etc/apache2/mods-available/charset_lite.load
/etc/apache2/mods-available/data.load
/etc/apache2/mods-available/dav_fs.load
/etc/apache2/mods-available/dav.load
/etc/apache2/mods-available/dav_lock.load
/etc/apache2/mods-available/dbd.load
/etc/apache2/mods-available/deflate.load
/etc/apache2/mods-available/dialup.load
/etc/apache2/mods-available/dir.load
/etc/apache2/mods-available/dump_io.load
/etc/apache2/mods-available/echo.load
/etc/apache2/mods-available/env.load
/etc/apache2/mods-available/expires.load
/etc/apache2/mods-available/ext_filter.load
/etc/apache2/mods-available/file_cache.load
/etc/apache2/mods-available/filter.load
/etc/apache2/mods-available/headers.load
/etc/apache2/mods-available/heartbeat.load
/etc/apache2/mods-available/heartmonitor.load
/etc/apache2/mods-available/http2.load
/etc/apache2/mods-available/ident.load
/etc/apache2/mods-available/imagemap.load
/etc/apache2/mods-available/include.load
/etc/apache2/mods-available/info.load
/etc/apache2/mods-available/lbmethod_bybusyness.load
/etc/apache2/mods-available/lbmethod_byrequests.load
/etc/apache2/mods-available/lbmethod_bytraffic.load
/etc/apache2/mods-available/lbmethod_heartbeat.load
/etc/apache2/mods-available/ldap.load
/etc/apache2/mods-available/log_debug.load
/etc/apache2/mods-available/log_forensic.load
/etc/apache2/mods-available/lua.load
/etc/apache2/mods-available/macro.load
/etc/apache2/mods-available/md.load
/etc/apache2/mods-available/mime.load
/etc/apache2/mods-available/mime_magic.load
/etc/apache2/mods-available/mpm_event.load
/etc/apache2/mods-available/mpm_prefork.load
/etc/apache2/mods-available/mpm_worker.load
/etc/apache2/mods-available/negotiation.load
/etc/apache2/mods-available/perl.load
/etc/apache2/mods-available/proxy_ajp.load
/etc/apache2/mods-available/proxy_balancer.load
/etc/apache2/mods-available/proxy_connect.load
/etc/apache2/mods-available/proxy_express.load
/etc/apache2/mods-available/proxy_fcgi.load
/etc/apache2/mods-available/proxy_fdpass.load
/etc/apache2/mods-available/proxy_ftp.load
/etc/apache2/mods-available/proxy_hcheck.load
/etc/apache2/mods-available/proxy_html.load
/etc/apache2/mods-available/proxy_http2.load
/etc/apache2/mods-available/proxy_http.load
/etc/apache2/mods-available/proxy.load
/etc/apache2/mods-available/proxy_scgi.load
/etc/apache2/mods-available/proxy_uwsgi.load
/etc/apache2/mods-available/proxy_wstunnel.load
/etc/apache2/mods-available/ratelimit.load
/etc/apache2/mods-available/reflector.load
/etc/apache2/mods-available/remoteip.load
/etc/apache2/mods-available/reqtimeout.load
/etc/apache2/mods-available/request.load
/etc/apache2/mods-available/rewrite.load
/etc/apache2/mods-available/sed.load
/etc/apache2/mods-available/session_cookie.load
/etc/apache2/mods-available/session_crypto.load
/etc/apache2/mods-available/session_dbd.load
/etc/apache2/mods-available/session.load
/etc/apache2/mods-available/setenvif.load
/etc/apache2/mods-available/slotmem_plain.load
/etc/apache2/mods-available/slotmem_shm.load
/etc/apache2/mods-available/socache_dbm.load
/etc/apache2/mods-available/socache_memcache.load
/etc/apache2/mods-available/socache_shmcb.load
/etc/apache2/mods-available/speling.load
/etc/apache2/mods-available/ssl.load
/etc/apache2/mods-available/status.load
/etc/apache2/mods-available/substitute.load
/etc/apache2/mods-available/suexec.load
/etc/apache2/mods-available/unique_id.load
/etc/apache2/mods-available/userdir.load
/etc/apache2/mods-available/usertrack.load
/etc/apache2/mods-available/vhost_alias.load
/etc/apache2/mods-available/xml2enc.load

Estos archivos contienen simplemente una línea con la directiva LoadModule para el módulo en cuestión. Adicionalmente, algunos módulos pueden incluir una configuración adicional mínima en un archivo .conf.

La configuración por defecto en Debian y derivados cargará todo módulo cuyo archivo .load se encuentre enlazado desde el directorio de módulos habilitados /etc/apache2/mods-enabled/:

root@debian:~# ls -l /etc/apache2/mods-enabled/*.load
lrwxrwxrwx 1 root root 36 sep 13  2019 /etc/apache2/mods-enabled/access_compat.load -> ../mods-available/access_compat.load
lrwxrwxrwx 1 root root 28 sep 13  2019 /etc/apache2/mods-enabled/alias.load -> ../mods-available/alias.load
lrwxrwxrwx 1 root root 33 sep 13  2019 /etc/apache2/mods-enabled/auth_basic.load -> ../mods-available/auth_basic.load
lrwxrwxrwx 1 root root 33 sep 13  2019 /etc/apache2/mods-enabled/authn_core.load -> ../mods-available/authn_core.load
lrwxrwxrwx 1 root root 33 sep 13  2019 /etc/apache2/mods-enabled/authn_file.load -> ../mods-available/authn_file.load
lrwxrwxrwx 1 root root 33 sep 13  2019 /etc/apache2/mods-enabled/authz_core.load -> ../mods-available/authz_core.load
lrwxrwxrwx 1 root root 33 sep 13  2019 /etc/apache2/mods-enabled/authz_host.load -> ../mods-available/authz_host.load
lrwxrwxrwx 1 root root 33 sep 13  2019 /etc/apache2/mods-enabled/authz_user.load -> ../mods-available/authz_user.load
lrwxrwxrwx 1 root root 32 sep 13  2019 /etc/apache2/mods-enabled/autoindex.load -> ../mods-available/autoindex.load
lrwxrwxrwx 1 root root 30 sep 13  2019 /etc/apache2/mods-enabled/deflate.load -> ../mods-available/deflate.load
lrwxrwxrwx 1 root root 26 sep 13  2019 /etc/apache2/mods-enabled/dir.load -> ../mods-available/dir.load
lrwxrwxrwx 1 root root 26 sep 13  2019 /etc/apache2/mods-enabled/env.load -> ../mods-available/env.load
lrwxrwxrwx 1 root root 29 sep 13  2019 /etc/apache2/mods-enabled/filter.load -> ../mods-available/filter.load
lrwxrwxrwx 1 root root 30 sep 16  2019 /etc/apache2/mods-enabled/headers.load -> ../mods-available/headers.load
lrwxrwxrwx 1 root root 27 sep 13  2019 /etc/apache2/mods-enabled/mime.load -> ../mods-available/mime.load
lrwxrwxrwx 1 root root 32 sep 13  2019 /etc/apache2/mods-enabled/mpm_event.load -> ../mods-available/mpm_event.load
lrwxrwxrwx 1 root root 34 sep 13  2019 /etc/apache2/mods-enabled/negotiation.load -> ../mods-available/negotiation.load
lrwxrwxrwx 1 root root 27 sep 13  2019 /etc/apache2/mods-enabled/perl.load -> ../mods-available/perl.load
lrwxrwxrwx 1 root root 33 sep 13  2019 /etc/apache2/mods-enabled/reqtimeout.load -> ../mods-available/reqtimeout.load
lrwxrwxrwx 1 root root 31 sep 13  2019 /etc/apache2/mods-enabled/setenvif.load -> ../mods-available/setenvif.load
lrwxrwxrwx 1 root root 36 sep 16  2019 /etc/apache2/mods-enabled/socache_shmcb.load -> ../mods-available/socache_shmcb.load
lrwxrwxrwx 1 root root 26 sep 16  2019 /etc/apache2/mods-enabled/ssl.load -> ../mods-available/ssl.load
lrwxrwxrwx 1 root root 29 sep 13  2019 /etc/apache2/mods-enabled/status.load -> ../mods-available/status.load

Se observa que todos son enlaces simbólicos hacia archivos del directorio mods-available/. El mismo comportamiento que utiliza Debian para los sitios habilitados/disponibles.

Ahora bien, anteriormente demostré cómo listar todos los módulos cargados mediante el comando apache2ctl -M. Este comando lista todos los módulos actualmente en uso y es el primer lugar donde buscar un módulo necesario, ya que puede haber módulos compartidos cargados por fuera del directorio mods-enabled/.

Si el módulo necesario no se encuentra en esta salida, verificar si está habilitado:

root@debian:~# ls -l /etc/apache2/mods-enabled/*authnz*
ls: cannot access '/etc/apache2/mods-enabled/*authnz*': No such file or directory

Puede ser que el módulo haya sido habilitado pero el servicio aún no fue reiniciado, con lo cual aún no está en uso y no aparece en la salida de apache2ctl -M.

Si no está habilitado, el siguiente paso consiste en ver si está disponible, listando el contenido del directorio mods-available/:

root@debian:~# ls -1 /etc/apache2/mods-available/*authnz*
/etc/apache2/mods-available/authnz_fcgi.load
/etc/apache2/mods-available/authnz_ldap.load

En este ejemplo estaba buscando el módulo authnz_fcgi. Si el módulo está disponible, es posible habilitarlo creando el enlace simbólico en el directorio mods-enabled/. O simplemente empleando el utilitario a2enmod, el cual (en versiones recientes de Debian) soporta el autocompletado con TAB:

root@debian:~# a2enmod authnz_
authnz_fcgi  authnz_ldap

Luego de habilitarlo es necesario reiniciar el servicio para que sea cargado en memoria:

root@debian:~# a2enmod authnz_fcgi 
Enabling module authnz_fcgi.
To activate the new configuration, you need to run:
  service apache2 restart

En ocasiones el módulo necesario no está disponible (no aparece listado en mods-available/). En estos casos no quedará otra opción que buscarlo en los repositorios de paquetes disponibles.

Todos los paquetes que instalan módulos de Apache en Debian comienzan con el nombre libapache2-mod-*. Por ejemplo, para buscar módulos de autenticación, buscar:

root@debian:~# apt-cache search libapache2-mod-auth
libapache2-mod-auth-kerb - apache2 module for Kerberos authentication
libapache2-mod-auth-radius - Apache 2.x module for RADIUS authentication
libapache2-mod-auth-cas - CAS authentication module for Apache2
libapache2-mod-auth-gssapi - GSSAPI Authentication module for Apache2
libapache2-mod-auth-mellon - SAML 2.0 authentication module for Apache
libapache2-mod-auth-openid - OpenID authentication module for Apache2
libapache2-mod-auth-openidc - OpenID Connect authentication module for Apache
libapache2-mod-auth-pgsql - Module for Apache2 which provides PostgreSQL authentication
libapache2-mod-auth-plain - Module for Apache2 which provides plaintext authentication
libapache2-mod-auth-pubtkt - key-based single-sign-on authentication module for Apache
libapache2-mod-auth-tkt - lightweight single-sign-on authentication module for Apache
libapache2-mod-authn-sasl - SASL authentication backend provider for Apache
libapache2-mod-authn-yolo - Yolo style authentication for Apache 2
libapache2-mod-authn-yubikey - Yubikey authentication provider for Apache
libapache2-mod-authnz-external - authenticate Apache against external authentication services
libapache2-mod-authnz-pam - PAM authorization checker and PAM Basic Authentication provider
libapache2-mod-authz-unixgroup - access control based on on unix group membership for Apache

Referencias


Tal vez pueda interesarte


Compartí este artículo