Configuración de Apache.

El servidor lee la información de tres ficheros con directivas de configuración. Cualquier directiva puede aparecer en cualquiera de estos ficheros. Los nombres de estos ficheros son relativos a la raíz de instalación del servidor, la cual es definida por la directiva ServerRoot, la opción en línea de comando -d o en un sistema Windows por el registro:

Además, el servidor también leerá un fichero conteniendo los tipos mime de los documentos. Por defecto el fichero será conf/mime.types.

Sin embargo, la tendencia es que solo se utilice como fichero principal del servidor Web a conf/httpd.conf, agrupando las directivas de configuración en tres secciones:

Global Enviroment.

En esta sección se definen las directivas que controlan el funcionamiento general de Apache, como pueden ser el número de peticiones concurrentes que puede manejar, donde puede encontrar los ficheros de configuración...

  • ServerType { standalone | inetd }:

    El servidor se lanza bien como un servicio independiente que está corriendo como un demonio esperando alguna petición (standalone) o bien es lanzado por el superservidor de internet (inetd) como un servicio bajo demanda.

  • ServerRoot:

    Define el directorio donde reside toda la información de configuración y registro que necesita el servidor.

  • PidFile:

    Indica el fichero en el cual el servidor registrará el identificador de proceso con el que se lanza.

  • ScoreBoardFile:

    Fichero utilizado para almacenar información interna del proceso servidor. Se requiere para algunas arquitecturas para comunicar entre los procesos hijos y el padre.

  • Timeout:

    Número de segundos tras los cuales el servidor cierra la conexión.

  • KeepAlive:

    Si se permiten o no conexiones persistentes.

  • MaxKeepAliveRequest:

    El número máximo de peticiones permitidas durante una conexión persistente.

  • MinSpareServers:

    Define el número de procesos servidores hijo desocupados que no atienden una petición.

  • MaxSpareServers:

    Define el nº máximo de procesos servidor hijo desocupados que no manejan una petición. Si existieran mas de lo que define la directiva, el proceso padre mataría los procesos que exceden.

  • StartServers:

    Número de procesos servidor hijo que serán creados cuando arranca Apache por primera vez.

  • Maxclients:

    Define el número de peticiones simultáneas que apache puede soportar. Como máximo se crean este nº de procesos servidores hijo.

  • MaxRequestPerChild:

    Define el nº de peticiones que cada proceso hijo tiene permitido procesar antes de morir.

  • ThreadsPerChild:

    Nº de hilos concurrentes que el servidor permitirá utilizar. Este valor representa el nº máximo de conexiones que el servidor puede manejar a la vez.

  • Listen:

    Esta directiva instruye al servidor Apache para que escuche en mas de una dirección IP o en mas de un puerto.

  • LoadModule:

    Esta directiva enlaza dentro del servidor la librería o fichero objeto nombrado cuando se arranca el servidor y añade la estructura del modulo a la lista de módulos activos.

Main Server Configuration.

Estas directivas definen los parámetros del servidor principal, el cual responde a las peticiones que no son manejadas por un host virtual. También proporciona parámetros por defecto para todos los hosts virtuales.

  • Port:

    Define el puerto en el cual escucha el servidor (0 - 65535). Hay que tener en cuenta la relación que tiene esta directiva con el fichero /etc/services y que algunos puertos, especialmente los situados por debajo del 1024, están reservados para protocolos específicos. El puerto estándar para el protocolo HTTP es el 80.

  • User/Group:

    Definen el usuario y el grupo con el que el servidor contestará las peticiones. Para poder utilizar esta directiva, el servidor standalone debe ejecutarse inicialmente como usuario root. El usuario no debería poseer privilegios que otorguen acceso a ficheros que no deseemos.

  • ServerAdmin:

    Define la dirección de correo que el servidor incluirá en cualquier mensaje de error que devuelva al cliente.

  • ServerName:

    Define el nombre de host del servidor. Se suele utilizar cuando se crean redirecciones. Sino se define el nombre de servidor, intentará deducirlo a través de su dirección IP.

  • DocumentRoot:

    Define el directorio desde el cual el servidor servirá los documentos. A menos que la URL solicitada coincida con una directiva Alias, el servidor añadirá el PATH a la URL.

  • Directory:

    <Directory></Directory> se utilizan para encerrar un grupo de directivas que se aplicarán al directorio en cuestión y sus sub-directorios. El parámetro directorio, puede ser una trayectoria completa o un metacaracter.

  • Options: [+|-] opcion:

    Controla que características están disponibles para un directorio en particular. La opción se puede definir a None, de forma que ninguna característica extra se habilita o a All de forma que todas se habilitan menos MultiViews. Otras características extra son: ExecCGI , FollowSymLinks, Includes, IncludesNOEXEC, Indexes, MultiViews, SymLinksIfOwnerMatch.

  • AllowOverride override:

    Cuando el servidor encuentra un fichero .htaccess (definido por la directiva AccessFileName) necesita conocer que directivas declaradas en este fichero pueden sobreescribir información de acceso.

    El parámetro override puede ser definido a None y en tal caso el servidor no leerá el fichero o puede ser definido a All, de forma que permitirá todas las directivas.

    El parámetro override también puede ser definido a: AuthConfig, FileInfo, Indexes, Limit, Options.

  • UserDir directorio:

    Define el nombre del directorio que será añadido al directorio HOME del usuario si se recibe una petición ~usuario.

  • DirectoyIndex fichero:

    Nombre/s del fichero/s a usar como página de inicio de un directorio.

  • AccessFileName fichero:

    El nombre del fichero a buscar en cada directorio para información de control de acceso.

  • Alias url directorio:

    Esta directiva permite que los documentos sean almacenados en un sistema de ficheros diferente al definido por la directiva DocumentRoot.

  • Location url:

    La directiva proporciona control de acceso por URL. Es similar a la directiva Directory.

  • ScriptAlias url directorio:

    Tiene el mismo comportamiento que la directiva Alias, excepto que además define el directorio para que pueda contener scripts CGI.

Virtual Hosts.

Un servidor Web puede albergar diferentes sitios web utilizando diferentes nombres de hosts (alias) o diferentes IP's. En esta sección se define el comportamiento específico de cada servidor virtual que alberga el servidor.

  • <VirtualHost> </VirtualHost>

    <VirtualHost> and </VirtualHost> se utilizan para agrupar un conjunto de directivas que se aplicarán solo a un host virtual. Dentro de este par de directivas se pueden incluir cualquier otra que haga refenrencia a este host particular.

  • NameVirtualHost:

    Especifica la dirección a resolver cuando se utiliza un sistema basado en nombres de host virtuales.

  • ServerName:

    Especifica el nombre de host que aparecerá en la cabecera de la petición.

Los beneficios de utilizar el soporte de host virtuales permite definir prácticamente un número de servidores ilimitado, de fácil configuración y que no requiere hardware adicional. La principal desventaja es que el software cliente debe soportar esta parte del protocolo.

Pero como veremos, es fácil mantener varios sitios web con diferentes nombres de dominio tan solo con definir varios alias (CNAME) para ese host:

NameVirtualHost 111.22.33.44

<VirtualHost 111.22.33.44>

ServerName www.domain.tld

DocumentRoot /www/domain

</VirtualHost>

<VirtualHost 111.22.33.44>

ServerName www.otherdomain.tld

DocumentRoot /www/otherdomain

</VirtualHost>