Manejo de módulos tras la instalación
Manejo de módulos tras la instalación
Tras la instalación de Apache, la siguiente tarea es seleccionar qué módulos debemos habilitar inicialmente en función de lo que deseemos que Apache haga y antes de instalar módulos con funciones más avanzadas. Para llevar a cabo esta tarea debemos tener en cuenta los siguientes criterios:
- Debemos hacer que el nº de módulos habilitados sea mínimo imprescindible.
- Una instalación Ubuntu 10.04 básica de Apache 2.2.15 instala los siguientes módulos. Podemos encontrar una descripción de todos ellos en: http://httpd.apache.org/docs-2.2/mod/.
- Módulos compilados con el núcleo de Apache
- core: Las características centrales de Apache, necesario en cualquier instalación. http://httpd.apache.org/docs/2.2/mod/core.html
- http_core: Soporte HTTP, necesario en cualquier instalación. Forma parte de la funcionalidad básica de Apache.
- Prefork, multiprocess, worker, threadpool, ...: El MPM que se va a usar (en función del sistema operativo u otras consideraciones la instalación Apache selecciona el que considera más adecuado), necesario en cualquier instalación. Ya hemos dado detalles de los mismos anteriormente.
- mod_logconfig: Permite registrar las peticiones de los clientes (log). Es un módulo muy flexible y configurable, pudiendo personalizar tanto el formato como el destino de la información registrada. http://httpd.apache.org/docs/2.2/mod/mod_log_config.html.
- mod_logio: Permite registrar el nº de bytes que tienen las peticiones entrantes y salientes. Requiere el anterior para poder funcionar. http://httpd.apache.org/docs/2.2/mod/mod_logio.html
- mod_so: Permite a Apache cargar módulos dinámicamente en tiempo de ejecución, en lugar de tener que recompilar el ejecutable cada vez que queramos añadir o quitar algún módulo. http://httpd.apache.org/docs/2.1/mod/mod_so.html
- Módulos instalados y habilitados en una instalación por defecto
- mod_access: Proporciona control de acceso basado en el nombre del host, dirección IP u otras características de la petición.
- Permite usar las directivas "order", "allow" y "deny“. Debería dejarse habilitado siempre.
- http://httpd.apache.org/docs/2.0/mod/mod_access.html
- mod_authXX o mod_authzXX: Necesarios para implementar diversos tipos de autenticación, los describiremos en detalle posteriormente:
- auth_basic: Permite usar la autenticación Basic. http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html
- authn_file: Permite a otros módulos de autenticación, como Basic o Digest autenticar usuarios leyendo la información de ficheros de texto plano. http://httpd.apache.org/docs/2.2/mod/mod_authn_file.html
- authz_default: Es un módulo de autenticación que se ejecuta en caso de fallo. Si no se ha configurado ningún método de autenticación, cualquier intento de autenticación es denegado por este módulo: http://httpd.apache.org/docs/2.2/mod/mod_authz_default.html
- authz_groupfile: Permite implementar una forma de autenticación que permite al servidor permitir o denegar una petición a una parte de un sitio web concreto basándose en si un usuario pertenece o no a un grupo. http://httpd.apache.org/docs/2.2/mod/mod_authz_groupfile.html
- authz_host: Permite implementar una forma de autenticación que concede o deniega el acceso a partes de una web basándose en el nombre de host, IP u otras características de la petición hecha por el cliente (capturadas en variables de entorno). http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html
- authz_user: Permite conceder o denegar el acceso a una web en función de si un usuario está autenticado o bien es válido, algo que de pende de la directiva Require usada. http://httpd.apache.org/docs/2.2/mod/mod_authz_user.html
- mod_dir: Permite buscar y servir un archivo por defecto (cuyo nombre fija este módulo, pero suele fijarse a "index.html", "default.htm", ...) cuando se accede a una directorio en lugar de a un fichero concreto. En caso de no existir, el módulo mod_autoindex se encarga de hacer un listado del contenido del mismo. http://httpd.apache.org/docs/2.2/mod/mod_dir.html.
- mod_mime: Necesario para fijar el juego de caracteres, la codificación y lenguaje del contenido y los tipos MIME de los documentos admitidos, entre otras cosas. http://httpd.apache.org/docs/2.2/mod/mod_mime.html
- mod_alias: Mapea distintas partes del sistema de ficheros al árbol de documentos de la web y permite la redirección de URLs. http://httpd.apache.org/docs/2.2/mod/mod_alias.html
- mod_status: Proporciona información acerca de la actividad del servidor y su rendimiento. http://httpd.apache.org/docs/2.2/mod/mod_status.html
- mod_setenvif: Permite fijar el valor de variables de entorno según el contenido de determinados atributos de la petición. http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html
- mod_cgid: Permite el manejo de programas CGI. http://httpd.apache.org/docs/2.2/mod/mod_cgid.html
- mod_deflate: Es un filtro de salida que permite comprimir el contenido que el servidor envía al cliente. Hablaremos del mismo más detalladamente en una sección posterior. http://httpd.apache.org/docs/2.2/mod/mod_cgid.html
- mod_env: Controla el entorno (variables de entorno) que usan programas CGI o páginas que usan Server-Side Includes. http://httpd.apache.org/docs/2.2/mod/mod_env.html
- mod_negotiation: Permite seleccionar el documento de respuesta que mejor encaja según las características del cliente dentro de un conjunto de los mismos que esté disponible. Esto puede hacerse mediante mapas de tipos o Multiviews. http://httpd.apache.org/docs/2.2/mod/mod_negotiation.html
- mod_reqtimeout: Permite controlar el tiempo de espera (timeout) y el mínimo de información necesaria para considerar que se ha recibido una petición. http://httpd.apache.org/docs/2.3/mod/mod_reqtimeout.html
Para ver los módulos en funcionamiento en un momento dado, debemos:
- Como se ha dicho antes, apache2 –l lista los módulos compilados en el ejecutable.
- Consultando el directorio /etc/apache2/mods_enabled veremos los módulos habilitados tras la instalación.

La instalación por defecto en Ubuntu, aunque instala muy pocos módulos, puede reducirse aún más, hasta dejar un servidor de capacidades mínimas (lo justo para servir contenido estático). De la lista anterior, podríamos deshacernos de los módulos: setenvif, status, autoindex, cgid. La forma de habilitar o deshabilitar módulos es con los comandos a2enmod y a2dismod respectivamente, tal y como se ve en la siguiente imagen. En ella también podemos apreciar como un cambio en los módulos de Apache requiere un reinicio del mismo para que se haga efectivo. También hay que considerar que reiniciar el servidor es una operación que requiere privilegios de usuario elevados, motivo por el cual es necesario usar el comando sudo para que dicha operación no de un error. Esta forma de trabajar se mantendrá a lo largo de todas las secciones de Apache de este curso donde haya que cambiar la configuración de algún módulo:
