26.4. Instalación, activación y configuración de módulos

El software de Apache está creado con un diseño modular: todas las funciones, excepto algunas tareas principales, están gestionadas por módulos. Este concepto se ha extendido hasta tal punto que incluso el protocolo HTTP se procesa mediante un módulo (http_core).

Los módulos de Apache pueden compilarse en el binario de Apache durante la generación, o cargarse de forma dinámica durante la ejecución. Consulte la Sección 26.4.2, “Activación y desactivación” para obtener información detallada acerca de cómo cargar los módulos de forma dinámica.

Los módulos de Apache se pueden dividir en cuatro categorías diferentes:

Módulos base

Los módulos base están compilados en Apache por defecto. Apache en SUSE Linux cuenta sólo con mod_so (necesario para cargar otros módulos) y http_core compilados. Todos los demás están disponibles como objetos compartidos: en lugar de estar incluidos en el binario del servidor en sí, se pueden incluir durante la ejecución.

Módulos de extensión

Por regla general, los módulos etiquetados como "extensiones" se incluyen en el paquete de software de Apache, aunque normalmente no se compilan en el servidor de manera estática. En SUSE Linux, se encuentran disponibles como objetos compartidos que pueden cargarse en Apache en tiempo de ejecución.

Módulos externos

Los módulos etiquetados como externos no se incluyen en la distribución oficial de Apache. Sin embargo, SUSE Linux ofrece algunos de ellos listos y disponibles para su uso.

Módulos de multiprocesamiento

Los MPM son los responsables de aceptar y gestionar peticiones al servidor Web, por lo que representan el núcleo del software del servidor Web.

26.4.1. Instalación de módulos

Si ha seguido el método predeterminado durante la instalación de Apache (descrito en la Sección 26.1.2, “Instalación”), estará instalado con todos los módulos base y de extensión, con el módulo de multiprocesamiento MPM Prefork y el módulo externo PHP5.

Puede instalar otros módulos externos iniciando YaST y eligiendo Software+Instalar/desinstalar software. A continuación, elija Filtro+Buscar y busque apache. Entre otros paquetes, la lista de resultados incluirá todos los módulos externos de Apache disponibles.

26.4.2. Activación y desactivación

YaST permite activar o desactivar los módulos de lenguajes de guiones (PHP5, Perl, Python y Ruby) con la configuración de módulos que se describe en Sección 26.2.2.1, “Asistente de servidor HTTP”. Los demás módulos se pueden activar o desactivar como se describe en Sección 26.2.2.2.2, “Módulos del servidor”.

Si prefiere activar o desactivar los módulos manualmente, utilice los comandos a2enmod mod_foo o a2dismod mod_foo, respectivamente. a2enmod -l genera una lista de todos los módulos activos en cada momento.

[Important]Inclusión de archivos de configuración para módulos externos

Si ha activado módulos externos manualmente, asegúrese de cargar los archivos de configuración correspondientes en todas las configuraciones de hosts virtuales. Los archivos de configuración de los módulos externos se ubican en /etc/apache2/conf.d/ y no se cargan por defecto. Si necesita los mismos módulos en todos los hosts virtuales, puede incluir *.conf desde este directorio. Si no, deberá incluir los archivos individuales. Consulte /etc/apache2/vhosts.d/vhost.template para ver ejemplos.

26.4.3. Módulos base y de extensión

Todos los módulos base y de extensión se describen en profundidad en la documentación de Apache. Aquí se incluye únicamente una breve descripción de los módulos más importantes. Consulte http://httpd.apache.org/docs/2.2/mod/ para conocer más detalles acerca de cada módulo.

mod_alias

Proporciona las directivas Alias y Redirect (Redirigir) con las que puede asignar un URl a un directorio específico (Alias) o bien redirigir un URL solicitado a otra ubicación. Este módulo está habilitado por defecto.

mod_auth*

Los módulos de autenticación proporcionan distintos métodos de autenticación: autenticación básica con mod_auth_basic o autenticación resumida con mod_auth_digest. Esta última se encuentra todavía en fase de experimentación en Apache 2.2.

mod_auth_basic y mod_auth_digest se deben combinar con un módulo proveedor de autenticación, mod_authn_* (por ejemplo, mod_authn_file para la autenticación basada en archivo de texto) y con un módulo de autorización, mod_authz_* (por ejemplo, mod_authz_user para la autorización de usuarios).

Puede encontrar más información acerca de este tema en el tutorial sobre autenticación en la dirección http://httpd.apache.org/docs/2.2/howto/auth.html.

mod_autoindex

Con autoindex se generan listas de directorios cuando no se cuenta con ningún archivo de índice (por ejemplo, index.html). El aspecto de los índices se puede configurar. Este módulo está habilitado por defecto. Sin embargo, las listas de directorios están deshabilitadas por defecto mediante la directiva Options (Opciones). Sobrescriba este ajuste en la configuración de host virtual. El archivo de configuración por defecto para este módulo se encuentra en /etc/apache2/mod_autoindex-defaults.conf.

mod_cgi

mod_cgi es necesario para ejecutar guiones CGI. Este módulo está habilitado por defecto.

mod_deflate

Con este módulo, se puede configurar Apache para que comprima determinados tipos de archivos directamente antes de entregarlos.

mod_dir

mod_dir proporciona la directiva DirectoryIndex (Índice de directorios) con la que se puede configurar qué archivos se deben entregar automáticamente cuando se realiza una petición a un directorio (index.html por defecto). También proporciona una redirección automática al URI correcto cuando una petición de directorio no incluye una barra inclinada de cierre. Este módulo está habilitado por defecto.

mod_expires

Con mod_expires, puede controlar la frecuencia con la que las memorias caché del alterno (proxy) y del navegador actualizan los documentos enviando un encabezado Expires (Caducidad). Este módulo está habilitado por defecto.

mod_include

mod_include permite utilizar inclusiones de servidor (SSI, Server Side Includes), las cuales proporcionan la funcionalidad básica para generar páginas HTML de forma dinámica. Este módulo está habilitado por defecto.

mod_info

Proporciona una descripción completa de la configuración del servidor en http://localhost/server-info/. Por razones de seguridad, debe limitar siempre el acceso a esta URL. Por defecto, sólo se puede acceder a esta URL desde localhost. mod_info se configura en /etc/apache2/mod_info.conf.

mod_log_config

Con este módulo puede configurar el aspecto de los archivos de registro de Apache. Este módulo está habilitado por defecto.

mod_mime

El módulo mime se encarga de que los archivos se entreguen con el encabezado MIME correcto basándose en la extensión del nombre de archivo (por ejemplo, text/html en el caso de documentos HTML). Este módulo está habilitado por defecto.

mod_negotiation

Necesario para la negociación de contenido. Consulte http://httpd.apache.org/docs/2.2/content-negotiation.html para obtener más información. Este módulo está habilitado por defecto.

mod_rewrite

Proporciona la funcionalidad de mod_alias, pero ofrece más funciones y mayor flexibilidad. Con mod_rewrite, puede redirigir URL a partir de distintas reglas, encabezados de petición, etc.

mod_speling

mod_speling intenta corregir automáticamente errores tipográficos en las URL, como errores en el uso de mayúsculas.

mod_ssl

Habilita las conexiones cifradas entre el servidor Web y los clientes. Para obtener más información, consulte la Sección 26.6, “Configuración de un servidor Web seguro con SSL”. Este módulo está habilitado por defecto.

mod_status

Proporciona información sobre la actividad y el rendimiento del servidor en http://localhost/server-status/. Por razones de seguridad, debe limitar siempre el acceso a esta URL. Por defecto, sólo se puede acceder a esta URL desde localhost. mod_status se configura en /etc/apache2/mod_status.conf

mod_suexec

mod_suexec permite ejecutar guiones CGI con un usuario y un grupo distintos. Este módulo está habilitado por defecto.

mod_userdir

Habilita directorios específicos de usuario disponibles en ~usuario/. La directiva UserDir (Directorio de usuario) se debe especificar en la configuración. Este módulo está habilitado por defecto.

26.4.4. Módulos de multiprocesamiento

SUSE Linux ofrece dos módulos de multiprocesamiento (MPM) distintos para su uso con Apache.

26.4.4.1. Módulo MPM prefork

El módulo MPM prefork implementa un servidor Web sin hilos y previo a la bifurcación. Hace que el servidor Web se comporte de manera similar a la versión 1.x de Apache en el sentido en que aísla cada petición y la gestiona bifurcando un proceso hijo independiente. Por lo tanto, las peticiones problemáticas no pueden afectar a otras, lo que evita el bloqueo del servidor Web.

A pesar de que ofrece más estabilidad gracias a este enfoque basado en procesos, el módulo MPM prefork consume más recursos de sistema que su homólogo, el módulo MPM worker. El módulo MPM prefork está considerado el MPM por defecto para los sistemas operativos basados en Unix.

[Important]MPM en este documento

En este documento se presupone que se utiliza Apache con el módulo MPM prefork.

26.4.4.2. Módulo MPM worker

El módulo MPM worker ofrece un servidor Web de múltiples hilos. Un hilo es una forma “más ligera” de un proceso. La ventaja de un hilo sobre un proceso es el bajo consumo de recursos. En lugar de bifurcar sólo procesos hijo, el módulo MPM worker responde a las peticiones mediante hilos con los procesos del servidor. Los procesos hijos previos a la bifurcación son de múltiples hilos. Este enfoque mejora el rendimiento de Apache al consumir menos recursos de sistema que el módulo MPM prefork.

Un gran inconveniente es la estabilidad del módulo MPM worker: si un hilo se daña, todos los hilos de un proceso pueden verse afectados. En el peor de los casos, puede llevar a que el servidor se bloquee. Sobre todo cuando se usa CGI (Common Gateway Interface, interfaz de gateway común) con Apache y hay una carga intensa, se pueden producir errores internos de servidor debidos a hilos que no pueden comunicarse con los recursos del sistema. Otro argumento en contra del uso de MPM worker con Apache es que no todos los módulos de Apache disponibles son hilos de proceso seguro y, por lo tanto, no pueden usarse con MPM worker.

[Warning]Utilización de módulos PHP con MPM

No todos los módulos PHP disponibles son hilos de proceso seguro. Se desaconseja encarecidamente el uso de MPM worker con mod_php.

26.4.5. Módulos externos

Aquí se recoge una lista de todos los módulos externos que se incluyen con SUSE Linux. La documentación de cada módulo se encuentra en el directorio señalado.

FastCGI

FastCGI es una extensión independiente de lenguaje, ampliable y abierta para CGI que proporciona un alto rendimiento sin las limitaciones de las API específicas de servidores. Las aplicaciones FastCGI ofrecen una gran velocidad porque son permanentes: no se inician por petición ni se da sobrecarga en el inicio.

Nombre del paquete: apache2-mod_fastcgi
Archivo de configuración: /etc/apache2/conf.d/mod_fastcgi.conf
Más información: /usr/share/doc/packages/apache2-mod_fastcgi
mod_perl

mod_perl permite ejecutar guiones Perl en un intérprete integrado. El intérprete permanente integrado en el servidor evita la sobrecarga debido al inicio de un intérprete externo y la ralentización debida al tiempo de inicio de Perl.

Nombre del paquete: apache2-mod_perl
Archivo de configuración: /etc/apache2/conf.d/mod_perl.conf
Más información: /usr/share/doc/packages/apache2-mod_perl
mod_php5

PHP es un lenguaje de guiones de servidor HTML multiplataforma integrado.

Nombre del paquete: apache2-mod_php5
Archivo de configuración: /etc/apache2/conf.d/php5.conf
Más información: /usr/share/doc/packages/apache2-mod_php5
mod_python

mod_python permite la incrustación de Python en el servidor HTTP Apache para obtener un rendimiento mucho mayor y flexibilidad adicional para el diseño de aplicaciones basadas en Web.

Nombre del paquete: apache2-mod_python
Más información: /usr/share/doc/packages/apache2-mod_python
mod_ruby

mod_ruby incrusta el intérprete Ruby en el servidor Web Apache, lo que permite que los guiones CGI de Ruby se ejecuten de forma interna. Los guiones se inician mucho más rápido que sin mod_ruby.

Nombre del paquete: apache2-mod_ruby
Más información: /usr/share/doc/packages/apache2-mod_ruby
mod_jk-ap20

Este módulo proporciona conectores entre Apache y un contenedor servlet Tomcat.

Nombre del paquete: mod_jk-ap20
Más información: /usr/share/doc/packages/mod_jk-ap20

26.4.6. Compilación

Los usuarios avanzados pueden ampliar Apache creando módulos personalizados. Para desarrollar módulos de Apache o compilar módulos de otros fabricantes, es necesario disponer del paquete apache2-devel, junto con las correspondientes herramientas de desarrollo. apache2-devel contiene también las herramientas apxs2, necesarias para compilar módulos adicionales para Apache.

apxs2 habilita la compilación e instalación de módulos a partir del código fuente (incluidos los cambios necesarios en los archivos de configuración), tras lo cual se crean objetos compartidos dinámicos (DSO) que se pueden cargar en Apache en tiempo de ejecución.

Los binarios apxs2 se encuentran en /usr/sbin:

  • /usr/sbin/apxs2: adecuado para crear un módulo de extensión que funcione con cualquier MPM. La ubicación de instalación es /usr/lib/apache2.

  • /usr/sbin/apxs2-prefork: adecuado para módulos MPM de prefork. La ubicación de instalación es /usr/lib/apache2-prefork.

  • /usr/sbin/apxs2-worker: adecuado para módulos MPM de worker.

apxs2 instala módulos que todos los MPM puedan utilizar. Los otros dos programas instalan módulos que sólo pueden utilizar los MPM respectivos. apxs2 instala módulos en /usr/lib/apache2, y apxs2-prefork y apxs2-worker instalan módulos en /usr/lib/apache2-prefork o /usr/lib/apache2-worker.

Puede instalar y activar un módulo a partir de código fuente con los comandos cd /path/to/module/source; apxs2 -cia mod_foo.c (-c compila el módulo, -i lo instala y -a lo activa). Las otras opciones de apxs2 se describen en la página Man apxs2(1).