Está en la página 1de 22

Instalación y configuración de Apache - Manual completo Página 1 de 22

Instalación y configuración
de Apache
Manual por: DesarrolloWeb.com [http://www.desarrolloweb.com/] Versión on-line:
"Tu mejor ayuda para aprender a hacer webs" http://www.desarrolloweb.com/manuales/41

Arquitectura del servidor Apache


El servidor Apache es un software que esta estructurado en módulos. La configuración de cada
módulo se hace mediante la configuración de las directivas que están contenidas dentro del
módulo. Los módulos del Apache se pueden clasificar en tres categorías:

z Módulos Base: Módulo con las funciones básicas del Apache

z Módulos Multiproceso: son los responsables de la unión con los puertos de la máquina,
acepando las peticiones y enviando a los hijos a atender a las peticiones

z Módulos Adicionales: Cualquier otro módulo que le añada una funcionalidad al servidor.

Las funcionalidades más elementales se encuentran en el módulo base, siendo necesario un


módulo multiproceso para manejar las peticiones. Se han diseñado varios módulos multiproceso
para cada uno de los sistemas operativos sobre los que se ejecuta el Apache, optimizando el
rendimiento y rapidez del código.
El resto de funcionalidades del servidor se consiguen por medio de módulos adicionales que se
pueden cargar. Para añadir un conjunto de utilidades al servidor, simplemente hay que añadirle
un módulo, de forma que no es necesario volver a instalar el software.

Módulos Base y Módulos Multiproceso:

core: Funciones básicas del Apache que están siempre disponibles.

mpm_common: Colección de directivas que se implementan en más de un módulo


multiproceso.

beos: Módulo de multiproceso optimizado para BeOS.

leader: Variable experimental de MPM.

mpm_netware: Módulo de multiproceso que implementa un servidor web optimizado para


Novell NetWare.

mpmt_os2: MPM híbrido, multiproceso y multihilo para OS/2 .

perchild: Módulo multiproceso que permite a los procesos demonio servir las peticiones que se
asignan a distintos id de usuario.

prefork: Implementa un servidor sin hilos.

threadpool: Variante experimental del módulo estándar de MPM .

mpm_winnt: Módulo multiproceso optimizado para Windows NT.

worker: Módulo multiproceso que implementa un híbrido multihilos y multiprocesos de servidor


Web.
Instalación y configuración de Apache - Manual completo Página 2 de 22

Módulos adicionales:

mod_access: proporciona control de acceso basándose en el nombre del host del cliente, su
dirección IP u otras características de la petición del cliente.

mod_actions: este módulo se utiliza para ejecutar Scripts CGI, basándose en el tipo de medio
o el método de petición.

mod_alias: proporcionado para mapear diferentes partes del sistema de ficheros del servidor
en el árbol de documentos del servidor, y para redirección de URL's.

mod_asis: envío de ficheros que tienen sus propias cabeceras http.

mod_auth: autentificación de usuario utilizando ficheros de texto.

mod_auth_anon: permite a usuarios anónimos acceder a áreas autentificadas.

mod_auth_dbm: proporciona autentificación utilizando ficheros DBM.

mod_auth_digest: autentificación de usuario utilizando MD5.

mod_auth_ldap: permite la utilización un directorio LDAP para almacenar la base de datos de


autentificación.

mod_autoindex: muestra los contenidos de un directorio automáticamente, parecido al


comando ls de Unix.

mod_cache: Cache de contenidos indexados por URI's.

mod_cern_meta: Semántica de etiquetas meta del CERN.

mod_cgi: Ejecución de Scritps CGI.

mod_cgid: ejecución de Scripts CGI utilizando un demonio CGI externo.

mod_charset_lite: para la especificación del juego de caracteres de las traducciones.

mod_deflate: comprime el contenido antes de ser enviado al cliente.

mod_dir: Proporcionado para redirecciones y para servir los ficheros de listado de directorios.

mod_disk_cache: Cache para almacenar contenidos identificados por URI.

mod_echo: Un servidor simple de echo para ilustrar los módulos del protocolo.

mod_env: modificación del entorno que se envia a los scripts CGI y las páginas SSI.

mod_expires: Generación de las cabeceras http Expires, de acuerdo de los criterios


especificados por el usuario.

mod_ext_filter: pasa el cuerpo de la respuesta a través de un programa antes de enviársela


al cliente.

mod_file_cache: cachea una lista estática de ficheros en memoria.

mod_headers: personalización de las peticiones HTTP y las cabeceras de las respuestas.

mod_imap: proceso de imágenes en el lado del servidor.


Instalación y configuración de Apache - Manual completo Página 3 de 22

mod_include: Documentos HTML generados por el servidor (Server Side Includes).

mod_info: proporciona una visión comprensiva de la configuración del servidor.

mod_isapi: Extensiones ISAPI en Apache para Windows.

mod_ldap: pool de conexiones LDAP y cacheo de resultados para la utilización de otros


módulos LDAP.

mod_log_config: registro de las peticiones hechas al servidor.

mod_logio: registro del número de bytes recibidos y enviados en cada respuesta.

mod_mem_cache: Cache de contenidos identificados por URI.

mod_mime: asocia las extensiones de peticiones de los ficheros con el comportamiento del
fichero (manejadores y filtros) y contenido (tipos mime, idioma, juego de caracteres y
codificación).

mod_mime_magic: determina el tipo MIME de un fichero mirando unos pocos bytes del
contenido.

mod_negotiation: se proporciona para la negociación del contenido.

mod_proxy: servidor HTTP/1.1 proxy/gateway.

mod_proxy_connect: extensión de mod_proxy para la gestión de las peticiones CONNECT.

mod_proxy_ftp: soporte FTP para mod_proxy.

mod_proxy_http: soporte HTTP para el módulo mod_proxy.

mod_rewrite: proporciona un motor de reescritura basado en reglas que rescribe las


peticiones de URL's al vuelo.

mod_setenvif: permite la configuración de las variables de entorno basándose en las


características de la petición.

mod_so: carga del código ejecutable y los módulos en al iniciar o reiniciar el servidor.

mod_speling: intenta corregir las URL mal puestas por los usuarios, ignorando las mayúsculas
y permitiendo hasta una falta.

mod_ssl: criptografía avanzada utilizando los protocolos Secure Sockets Layer y Transport
Layer Security.

mod_status: proporciona información en la actividad y rendimiento del servidor.

mod_suexec: permite a los scripts CGI ejecutarse con un nombre y grupo específico.

mod_unique_id: proporciona variables de entorno y un identificador único para cada petición.

mod_userdir: directorios específicos para usuarios.

mod_usertrack: registro de actividad de un usuario en el sitio.

mod_vhost_alias: Proporcionado para configurar muchos servidores virtuales dinámicamente.


Instalación y configuración de Apache - Manual completo Página 4 de 22

Instalación de Apache en Windows


El proceso para instalar Apache en Windows es muy sencillo. En adelante, es posible que la
configuración del servidor pueda complicarse un poco, sin embargo, si deseamos utilizarlo con
las funciones habituales, no hemos de tener mayores problemas en ningún momento.

Descarga de Apache

El servidor web Apache se puede descargar en la página de la Fundación Apache, en apache.org


[http://apache.org/].
En la URL http://httpd.apache.org/ tienen una sección en particular para el
servidor HTTP (Protocolo de transmisión utilizado en la web), en la que tendremos que buscar el
enlace para descarga.

Una vez en la página de descarga debemos buscar la última versión estable o la versión que
recomendada. El servidor está disponible para sistemas Unix o Windows, por lo que nos
ofrecerán diversas opciones de descarga, incluso para obtener el código fuente del programa. Si
deseamos instalarlo en un sistema Windows, necesitamos obtener el archivo Win-32 Binary,
que es un instalador Windows.

Instalación

Una vez descargado, debemos instalarlo en nuestro sistema, ejecutando el archivo obtenido.
Daremos paso a un asistente que nos guiará en el proceso de instalación del servidor. Durante
el proceso nos preguntará el nombre del dominio y del servidor, que podemos rellenar con
"localhost". Nos pedirá también una dirección de correo, que podemos rellenar con cualquiera
que deseemos. También nos pregunta si deseamos que el servidor responda en el puerto 80
para todos los usuarios o si deseamos que sólo se active para el usuario actual en el puerto
8080, cuando se inicie manualmente. Lo normal es que lo activemos para todos los usuarios.

Con estos datos queda configurado el Apache inicialmente. En cualquier momento podemos
editarlos a nuestro gusto o necesidades. Para ello deberemos editar el fichero httpd.conf, que
se encuentra en el directorio de instalación de Apache, que hemos indicado durante el proceso
de instalación, más concretamente, en el subdirectorio conf. En adelante en este manual
podremos aprender las configuraciones más habituales.

Nota: Debemos ir con cuidado de no tener otro servidor configurado para trabajar en el puerto 80 (por
ejemplo el servidor IIS que viene en las versiones profesionales o servidor de Windows). En caso de tener
en marcha otro servidor web durante la instalación, puede fallar y mostrarnos un mensaje de error que
indique esto precisamente, es decir, que no podemos tener dos servidores a la vez escuchando en el
puerto 80.

Para solucionar el problema basta con que paremos el IIS o el otro servidor que esté funcionando. El IIS
lo podemos parar accediendo a Panel de control - Herramientas administrativas - Servicios de Internet
Information Server. La pantalla que sale es la consola de administración del sistema. Aquí debemos
desplegar el árbol de la izquierda, pulsando sobre el signo "+", hasta que encontremos el "Sitio web
predeterminado". Nos ponemos encima de él y apretamos el botón de STOP que está situado en la barra
de herramientas de la consola de administración. También podemos encontrar una opción para detener el
servicio pulsando con el botón derecho en el "Sitio web predeterminado".

Una vez instalado, el Apache se pone en funcionamiento. Para controlar el Apache podemos
encontrar en el botón de inicio, sección programas, un nuevo grupo llamado "Apache HTTP
Server", con iconos para detener el servidor, ponerlo en marcha, editar el archivo de
configuración httpd.conf o para ver los logs de acceso. También podemos ver en la barra de
tareas un nuevo icono que indica que el Apache está funcionando y que ofrece opciones para
controlarlo si pulsamos sobre él.

Ver si está funcionando

Para comprobar que el servidor está activo y funciona correctamente podemos abrir un
Instalación y configuración de Apache - Manual completo Página 5 de 22

explorador y probar a acceder a la URL http://localhost, que es nuestro propio servidor. Si todo
ha ido bien observaremos el mensaje de bienvenida del servidor con algo como "Funciono! ¡El
servidor Apache ha sido instalado en este equipo!".

Para seguir aprendiendo a configurar Apache es interesante leerse nuestro Manual de instalación y
configuración de Apache [http://www.desarrolloweb.com/manuales/41/],
que explica dónde debemos cambiar
las opciones más comunes del servidor.

Estructura de la instalación de Apache


Una vez instalado el Apache, en el directorio raíz de la instalación, se encontrarán los siguientes
directorios:

bin: ficheros ejecutables del Apache.

conf: ficheros de configuración del servidor.

error: ficheros con los mensajes de error del servidor, en varios lenguajes.

htdocs: directorio raíz por defecto del servidor (Se guardan las páginas Web).

icons: directorio donde se encuentran los iconos que utiliza el servidor (entre otras cosas para
mostrar estructuras de directorios).

logs: directorio donde se almacenan los registros de acceso y errores del servidor.

manual: directorio donde se encuentra el manual del Apache.

proxy: Directorio con los ficheros de la cache del servidor.

Básicamente las configuraciones del servidor residen dentro de dos ficheros, el de configuración
principal que se encuentra dentro de la carpeta conf, con el nombre httpd.conf, o dentro de un
fichero con el nombre .htaccess que se puede encontrar dentro de cualquier directorio que se
encuentre mapeado dentro del servidor. Dentro de cada uno de estos ficheros se ubican las
directivas de configuración. Muchas de estas directivas de configuración se pueden encontrar
tanto dentro del fichero de configuración principal como dentro de un fichero .htaccess. Los
valores de las directivas que se encuentran dentro de un fichero .htaccess, prevalecen frente a
los valores de configuración especificados dentro del fichero httpd.conf.

El fichero httpd.conf
El fichero httpd.conf es el fichero principal de configuración del Apache, se encuentra dentro del
directorio Conf, en el directorio de instalación del Apache.

En primer lugar hay que destacar que el fichero está dividido en tres secciones, que son:

1º Parámetros globales
2º Directivas de Funcionamiento
3º Host Virtuales

En el fichero se encuentran todos los parámetros de funcionamiento del Apache. Algunos


parámetros son generales para la instalación y funcionamiento del Apache. Muchos otros de los
parámetros se pueden configurar independientes para un conjunto de directorios y/o ficheros .
En estos casos los parámetros se encuentran ubicados dentro de secciones donde se indica el
ámbito de aplicación del parámetro.

Las secciones más importantes son:


Instalación y configuración de Apache - Manual completo Página 6 de 22

<Directory> : Los parámetros que se encuentran dentro de esta sección, sólo se aplicarán a el
directorio especificado y a sus subdirectorios.

<DirectoryMatch>: Igual que Directory, pero acepta en el nombre del directorio expresiones
regulares.

<Files>: Los parámetros de configuración proporcionan control de acceso de los ficheros por su
nombre.

<FilesMatch>: Igual que Files, pero acepta expresiones regulares en el nombre del fichero.

<Location>: Proporciona un control de acceso de los ficheros por medio de la URL

<LocationMatch>: Igual que Location, pero acepta expresiones regulares en el nombre del
fichero.

Algunas veces las directivas de funcionamiento de las secciones anteriores se pueden cruzar en
cuyo caso tienen el siguiente orden de preferencia:

1. <Directory> y .htaccess (.htaccess prevalece frente a <Directory>)


2. <DirectoryMatch> y <Directory>
3. <Files> y <FilesMatch>
4. <Location> y <LocationMatch>

También hay que destacar, que el fichero contiene un montón de comentarios para su correcta
utilización, las líneas comentadas aparecen con el símbolo #.

Httpd.conf: Parámetros globales


Todos los parámetros que se establecen dentro de esta sección son globales para el
funcionamiento del servidor, por lo que no admiten estar dentro de ninguna directiva.

ServerRoot: especifica la ubicación del directorio raíz donde se encuentra instalado el Apache,
a partir del cual se crea el árbol de directorios comentado anteriormente. Esta directiva no
debería cambiar a no ser que se mueva la carpeta de instalación de apache a otro directorio. Se
encuentra disponible a través del módulo Core.

PidFile: ubicación del fichero que contendrá el número de identificación del proceso cuando se
encienda el servidor. Se encuentra disponible a través de varios módulos beos, leader,
mpm_winnt, mpmt_os2, perchild, prefork, threadpool ó worker

TimeOut: el valor se utiliza para configurar medido en segundos, tres parámetros:

1. El tiempo tal que puede tardar una petición en ser recibida entera
2. La cantidad de tiempo que espera entre recepción de paquetes TCP
3. La cantidad de tiempo entre ACK's en transmisiones TCP

Pasado este tiempo se produce un mensaje de error en el que se indica que se ha consumido el
tiempo máximo de espera. Establecer un valor muy pequeño puede dar lugar a que los usuarios
reciban este mensaje de error, y establecer un valor muy pequeño dará lugar a una sobrecarga
de la máquina. Se encuentra disponible a través del módulo Core.

KeepAlive: especifica si se utilizarán conexiones persistentes, es decir, que todas las peticiones
de un usuario se atenderán con la misma conexión. Se encuentra disponible a través del
módulo Core.

MaxKeepAliveRequests: número máximo de conexiones persistentes. (número máximo de


Instalación y configuración de Apache - Manual completo Página 7 de 22

usuarios concurrentes si KeepAlive esta en ON). Para establecer este parámetro, hay que tener
en cuenta el ancho de banda de salida de nuestro servidor, por el cual deberá ser enviada toda
la información, si se establece un valor muy grande respecto al ancho de banda, el tiempo de
respuesta se verá incrementado para cada usuario. Se encuentra disponible a través del módulo
Core.

KeepAliveTimeout: tiempo que espera en segundos entre peticiones de un usuario, antes de


considerar que este ha terminado, y cerrar su conexión.

Si el valor es muy pequeño provocará que algunos usuarios no puedan visualizar la página
debido a que el número máximo de conexiones persistentes se ha superado, mientras que si se
establece un valor muy grande se estarán utilizando muchos recursos de la máquina. Se
encuentra disponible a través del módulo Core.

Listen: esta directiva permite especificar que puerto se utilizará para antender las peticiones.
Por defecto se utiliza el puerto 80 (www), también permite especificar que direcciones IP
atenderá, por defecto todas. Para atender dos direcciones IP distintas, con distintos puerto, se
utilizaría:

Listen 192.168.255.5:80
Listen 192.168.255.8:8080

Se encuentra disponible a través de varios módulos beos, leader, mpm_winnt, mpmt_os2,


perchild, prefork, threadpool ó worker

LoadModule: Directiva que sirve para cargar módulos que incluyen distintas funcionalidades.
La sintaxis es:

LoadModule nombreModulo ubicacionFichero

Se encuentra disponible a través del módulo mod_so.

Httpd.conf: directivas de funcionamiento (1)


Esta es la sección principal de configuración del servidor, en ella podemos encontrar las
siguientes opciones:

ServerAdmin: especifica la dirección de correo electrónico del administrador, esta dirección


aparece en los mensajes de error, para permitir al usuario notificar un error al administrador.
No puede estar dentro de ninguna sección. Se encuentra disponible a través del módulo Core.

ServerName: especifica el nombre y el puerto que el servidor utiliza para identificarse,


normalmente se determina automáticamente, pero es recomendable especificarlo
explícitamente para que no haya problemas al iniciar el servidor. Si el servidor no tiene un
nombre registrado en las DNS, se recomienda poner su número IP. No puede estar dentro de
ninguna sección.

La sintaxis es:

ServerName direccionIP:Puerto p.e. ServerName localhost:80

Se encuentra disponible a través del módulo Core.

DocumentRoot: la carpeta raíz que se ubica en el servidor, desde la que se servirán los
documentos. Por defecto, todas las peticiones, tendrán como raíz esta carpeta, a no ser que se
utilicen alias (directorios virutales en IIS)

Por defecto, la carpeta raíz es la carpeta Htdocs, que se encuentra en la carpeta de instalación
Instalación y configuración de Apache - Manual completo Página 8 de 22

del Apache. No puede estar dentro de ninguna sección.

Si se cambia este directorio por otro, es muy importante que se ponga el nuevo valor, no solo
en esta línea, sino también en la sección <Directory> en la que se establecen los parámetros
de configuración de este directorio.

Esta línea empieza por " <Directory " seguido de la carpeta raíz que originalmente hay en
DocumentRoot.

Se encuentra disponible a través del módulo Core.

DirectoryIndex: especifica el fichero por defecto que buscará en cada directorio, en caso de
que no se especifique ninguno. Por defecto es index.html. Es decir, que si por ejemplo se pone
en el navegador: www.desarrolloweb.com el servidor por defecto servirá
www.desarrolloweb.com/index.html

En esta directiva se pueden especificar más de un fichero, la sintaxis es la siguiente:

DirectoryIndex fichero1 fichero2 fichero3

El orden con el que se especifica el nombre de fichero determinará la prioridad a la hora de


decidir que fichero es el que se muestra.

La directiva se puede encontrar fuera de cualquier sección, dentro de una sección o dentro de
un fichero .htaccess.

Se encuentra disponible a través del módulo mod_dir.

AccessFileName: es el nombre del fichero de configuración que se buscará en cada una de los
directorios del servidor para conocer la configuración del mismo. Este fichero permite configurar
el comportamiento de cada uno de los directorios individualmente. Para que esta configuración
funcione, la directiva AllowOverride tiene que tener un valor que lo permita. No puede estar
dentro de ninguna sección.

El nombre de fichero que se especifica por defecto es el del fichero ".htaccess".

Como medida de seguridad, la configuración del Apache establece que no se muestre la


existencia de este fichero a ningún usuario, aunque este establecida la opción de listado de
directorios. Si se decide cambiar al nombre, habrá que redefinir la seguridad para que no se
muestre el contenido del nuevo fichero. Esto se hace en el fichero httpd.conf en una sección File
como la que se presenta a continuación en la que se establece que todos los ficheros que
comiencen por .ht no se mostrarán.

<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

Se encuentra disponible a través del módulo Core.

Httpd.conf: directivas de funcionamiento (2)


TypesConfig: especifica el nombre del fichero que contiene la lista de tipos mime que conoce
el servidor, y que determinará dependiendo de las extensiones para generar las cabeceras http.
No puede estar dentro de ninguna sección.

Se encuentra disponible a través del módulo mod_mime.


Instalación y configuración de Apache - Manual completo Página 9 de 22

DefaultType: tipo mime que se servirá por defecto en caso de no conocer la extensión del
fichero que se está sirviendo. Por defecto, se indicará que se sirve texto plano, con el valor
text/plain. La directiva se puede encontrar fuera de cualquier sección, dentro de una sección o
dentro de un fichero .htaccess.

Sintaxis: DefaultType tipoMime

Se encuentra disponible a través del módulo Core.

HostnameLookups: se utiliza en los ficheros de registro. Por defecto cuando se produce un


acceso, se guarda simplemente su número IP, si esta directiva se encuentra en On, el servidor
buscará la correspondencia de ese número IP con su nombre, y almacenará el nombre.
Establecer esta configuración en ON provocará que por lo menos se tenga que hacer una
petición al servidor de nombres por cada una de las peticiones de usuario, por lo que el
rendimiento de la máquina se puede ver decrementado. Esta directiva se puede encontrar
dentro de una sección o fuera de cualquier otra.

Se encuentra disponible a través del módulo Core.

ErrorLog: especifica la ubiación del fichero que contiene el registro de errores, por defecto en
la carpeta logs. Esta directiva sólo se puede encontrar fuera de cualquier sección.

Se encuentra disponible a través del módulo Core.

LogLevel: especifica el tipo de mensajes que se guardaran en el fichero de registro de errores,


dependiendo de los valores especificados, se guardarán mas o menos. Esta directiva sólo se
puede encontrar fuera de cualquier sección.

Valor de más a menos son: debug, info, notice, warn, error, crit, alert, emerg

Se encuentra disponible a través del módulo Core.

LogFormat: la directiva permite definir el formato que se utilizará para almacenar los
registros. A cada formato se le puede asignar un nombre, utilizándolo luego para crear distintos
tipos de ficheros de registro. Pueden existir varios logFormat distintos.

Sintaxis:

LogFormat "configuraciónError" nombre

Esta directiva se encuentra fuera de cualquier sección.

Se encuentra disponible a través del módulo mod_log_config.

CustomLog: la directiva se utiliza para especificar la ubicación y el tipo de formato que se


utilizará en un fichero de registro. Pueden existir varios ficheros de registro distintos con
configuraciones distintas. Para hacer esto, simplemente hay que poner varias líneas customlog

Sintaxis: CustomLog fichero formato

Esta directiva se encuentra fuera de cualquier sección.

Se encuentra disponible a través del módulo mod_log_config.

ServerTokens: Esta directiva establece la información que se devuelve dentro de la cabecera


http que envía el servidor. Posibles valores de menor a mayor información son:
-Pord
-Min
-Os
Instalación y configuración de Apache - Manual completo Página 10 de 22

-Full

Esta directiva se encuentra fuera de cualquier sección.

Se encuentra disponible a través del módulo Core.

IndexOptions: Esta directiva controla la apariencia de la página que se mostrará a un usuario


cuando se pide la lista de ficheros de un directorio.

Sintaxis:

IndexOptions [+|-]opcion [[+|-]opcion] ... (Apache 1.3.3 en adelante)

Entre las opciones que se pueden poner, destaca:

FancyIndexing: que muestra los nombres de los ficheros, con iconos etc..

Se encuentra disponible a través del módulo mod_autoindex.

FoldersFirst: Hace que primero se muestren los directorios. Esta opción sólo se puede
establecer en el caso de que FancyIndexing este activa.

Esta directiva se puede encontrar dentro del fichero .htaccess, dentro de una sección
<Directory> y fuera de cualquier otra.

Se encuentra disponible a través del módulo mod_autoindex.

Httpd.conf: directivas de funcionamiento (3)


AddIconByEncoding: Esta directiva permite asociar un icono a un tipo mime, de forma que
cuando la directiva fancyIndexing este activada, se mostrará al lado del fichero el icono
correspondiente.

Sintaxis:

AddIconByEncoding icon MIME-encoding…

Ejemplo:

AddIconByEncoding/icons/compressed.gif x-compress

Esta directiva se puede encontrar dentro del fichero .htaccess, dentro de una sección
<Directory> y fuera de cualquier otra.

Se encuentra disponible a través del módulo mod_autoindex.

AddIconByType: Esta directiva asocia un icono a un fichero dependiendo del un tipo mime, de
forma que cuando la directiva fancyIndexing este activada, se mostrará al lado del fichero el
icono correspondiente.

Sintaxis:

AddIconByType icon MIME-encoding…

Ejemplo:

AddIconByType /icons/text.gif text/*


Instalación y configuración de Apache - Manual completo Página 11 de 22

La diferencia entre AddIconByType y AddIconByEncoding reside en que mientras que en la


primera se determina el tipo mime mediante basándose en la codificación del fichero, mientras
que AddIconByType determina el tipo mime basándose en el nombre del fichero.

Ambas directivas se pueden encontrar dentro de el fichero .htaccess, dentro de una sección
<Directory> o fuera de cualquier otra.

Se encuentra disponible a través del módulo mod_autoindex.

AddDescription: Esta directiva permite asociar una descripción a un tipo de fichero, que se
mostrará al listar un directorio. Esta directiva se puede encontrar dentro de el fichero .htaccess,
dentro de una sección <Directory> o fuera de cualquier otra.

Sintaxis:

AddDescripcion cadena , fichero

Se encuentra disponible a través del módulo mod_autoindex.

AddDefaultCharset: Esta directiva define la codificación de caracteres que se utilizará de


forma predeterminada para los documentos. Por defecto viene establecido el valor ISO-8859-1.
Esta directiva se puede encontrar dentro de cualquier sección y en los ficheros .htaccess.

Se encuentra disponible a través del módulo Core.

ErrorDocument: Esta directiva establece el la configuración del servidor para cuando se


produce un error. Se pueden establecer cuatro configuraciones distintas:

1. Sacar un texto de error


2. Redirigir a un fichero en el mismo directorio
3. Redirigir a un fichero en nuestro servidor
4. Redirigir a un fichero fuera de nuestro servidor

Hay que tener en cuenta que si el texto de error se envia a Internet Explorer, este tendrá que
tener al menos 512 Bytes, porque sino Internet Explorer mostrará su propia página de error.

Sintaxis:

ErrorDocument NúmeroError Acción

Esta directiva se puede encontrar tanto dentro del fichero .htaccess, dentro de la sección
<Directory> o fuera de cualquier otra sección.

Ejemplo:

ErrorDocument 404 /error404.html.

En caso de no encontrarse un fichero, se mostrará el fichero error404.html

Se encuentra disponible a través del módulo Core.

CacheRoot: establece el directorio donde se encontrarán los ficheros de la cache del Apache.

Se encuentra disponible a través del módulo mod_disk_cache

CacheSize: Tamaño de la cache en Kilobytes.

Se encuentra disponible a través del módulo mod_disk_cache


Instalación y configuración de Apache - Manual completo Página 12 de 22

CacheGcInterval: Establece cada cuantas horas se verificará el tamaño de los ficheros de la


cache para comprobar si se corresponden con el tamaño establecido dentro de CacheSize. El
valor acepta números flotantes, por lo que se pueden establecer los intervalos en minutos.
Cuanto mayor sea el valor de esta directiva, más posibilidades existirán de que se sobrepase el
valor establecido en CacheSize.

Se encuentra disponible a través del módulo mod_disk_cache

CacheMaxExpire: máximo número de horas que los ficheros permanecerán dentro de la


cache.

Se encuentra disponible a través del módulo mod_cache

CacheLastModifiedFactor: Sirve para calcular la caducidad de un fichero en la cache, que


será el de la hora de la última modificación, multiplicado por este valor.

Se encuentra disponible a través del módulo mod_cache

CacheDefaultExpire: Número de horas por defecto a partir de las cuales un fichero caduca. Se
aplica en aquellos casos en los que no se puede determinar la hora de creación del fichero.

Todas las directivas de la caché, deben encontrarse fuera de cualquier sección. Esta directiva no
se puede encontrar dentro de ninguna sección.

Se encuentra disponible a través del módulo mod_cache

Creación de directorios virtuales en Apache


Esta directiva sólo se encuentra dentro del fichero de configuración httpd.conf, y se trata aparte
en este capítulo debido a su importancia.

Alias

Permite la definición de directorios virtuales, un directorio virtual es un directorio que se


encuentra en un directorio distinto del que se mapea en la URL. El directorio virtual no se tiene
porqué encontrar dentro de árbol de directorios que se crea a partir de DocumentRoot, sino que
se puede encontrar en cualquier otra ubicación, incluso se podría encontrar en otro servidor
distinto.

Por ejemplo, cuando se escribe www.desarrolloweb.com/manual/php la carpeta php no se tiene


que encontrar necesariamente dentro de la carpeta manual, que a su vez esta dentro de la
carpeta raíz Desarrolloweb, sino que puede estar en una ubicación distinta, y fuera del árbol de
subdirectorios de la directiva DocumentRoot

Sintaxis:
Alias nombreFicticio ubicacionReal

Ejemplo:
Alias /manual/php "c:\php"

- el directorio php no se encuentra dentro del directorio manual dentro de la carpeta


documentRoot, sino en la carpeta c:\php.

Por defecto vienen creados dos redirecciones con Alias.


- Icons: para establecer la carpeta donde se encuentran los iconos que utilizará el Apache para
mostrar el contenido de los directorios, y
- Manual: que apunta a la carpeta donde está instalado el manual del Apache en caso de que se
Instalación y configuración de Apache - Manual completo Página 13 de 22

hubiera elegido la opción durante la instalación.

AliasMatch

La utilidad de esta directiva es idéntica a la de la directiva Alias, la única diferencia es que


mientras Alias utiliza expresiones estándar regulares para especificar la URL que se va mapear.

Sintaxis:
AliasMatch Expresión regular ubicación

Seguridad en Apache I
Cuando un servidor apache recibe una petición de una página web, antes de devolver el
resultado, lleva a cabo varias acciones para verificar que la petición esta autorizada.

Las distintas acciones que lleva a cabo para verificar la validez de la aplicación, se pueden
agrupar en tres tipos: Autentificación, Autorización y Control de Acceso.

La autentificación es el proceso por el cual se verifica la identidad de una persona. De una


forma simple, este proceso se puede llevar a cabo mediante un nombre de usuario y una
contraseña, pero se pueden llegar a utilizar otros métodos para validar la identidad de una
persona, como mediante el uso de certificados, tarjetas etc…

En apache la autentificación puede estar gestionada por distintos módulos, dependiendo de la


forma de implementación. Si decide llevarla a cabo gestionando ficheros con listas de usuarios y
contraseñas (encriptadas), deberá utilizar el módulo mod_auth. Sin embargo, si decide llevarla
a cabo mediante base de datos, deberá utilizar los módulos mod_auth_dbm.

La autorización es el proceso por el cual se verifica que un usuario con una identidad conocida,
tiene acceso al recurso solicitado. Para llevar a cabo esta acción, se suelen utilizar listas de
permisos en las cuales se enumeran cada una de las acciones que puede realizar un usuario, o
las que no puede hacer. Normalmente, para simplificar la gestión de estos ficheros, los usuarios
se suelen unir en grupos proporcionando los permisos al grupo.

En apache la autorización a recursos es gestionada o bien mediante la directiva <directory> en


el fichero principal de configuración, o bien mediante la configuración de la carpeta a través de
ficheros .htaccess.

El control de acceso es el proceso por el cual se verifica que la máquina desde la que se ha
hecho la petición, tiene acceso al recurso. Los controles de acceso se utilizan para limitar y
controlar las máquinas que tienen acceso a un recurso independientemente del usuario que
accede, ya que estos controles se llevan a cabo antes de que se realice el proceso de
autentificación.

En apache, el control de acceso se puede llevar a cabo mediante las directivas


<directory><files>y <location>, o a través del fichero de configuración .htaccess para
controlar una carpeta especifica.

En todo caso y para poder llevar a cabo la configuración de las tres características aquí
enumeradas, autentificación, autorización y control de acceso, es necesario tener la directiva
AllowOverride con el valor AuthConfig, para así permitir el uso de las distintas directivas de
autentificación.

Autentificación y autorización de usuarios en Apache. Mod_auth

Para configurar el servidor apache para que sea capaz de autentificar a los usuarios y verificar
la autorización del mismo al recurso solicitado, es necesario realizar las siguientes acciones:
Instalación y configuración de Apache - Manual completo Página 14 de 22

1. Crear un fichero con usuarios


2. Crear un fichero con grupos (si es necesario)
3. Definir las directivas en el fichero de configuración o mediante un fichero .htaccess

En los ficheros de usuarios de apache, en cada línea se especifica un usuario, escribiendo el


nombre de usuario separado de dos puntos, seguido de la contraseña encriptada con MD5.

En los ficheros de grupos de apache, en cada línea se especifica un grupo escribiendo el nombre
del grupo seguido de dos puntos, y a continuación separado por espacios, los nombres de los
usuarios.

Es recomendable que tanto los ficheros de usuarios como los de grupos, se encuentren
almacenados fuera de los directorios publicados, para que de esta forma nadie pueda
descargarlos. Asimismo, solo el usuario root debería estar autorizado a escribir en él, mientras
que solo el usuario que ejecuta el servicio web, debería estar autorizado para leerlo.

El fichero de grupos se puede crear manualmente, pero el fichero con los usuarios es
recomendable crearlo mediante la utilidad htpasswd, que se encuentra en la carpeta con los
binarios de apache.

Para crear un fichero de usuario se utilizará la siguiente sintaxis:

htpasswd -c ruta/passwords usuario

El flag -c se utiliza para crear un fichero nuevo, por lo que sólo se deberá poner la primera vez
que se crea el fichero, sino lo borrará.

Los módulos que intervienen en la autentificación y autorización son los de core y mod_auth.

Las directivas de mod_auth necesarias para configurar la autenticación y autorización son las
siguientes:

z AuthUserFile: siver para especificar la ruta donde se almacenará el fichero de usuarios.


z AuthGroupFile: sirve para especificar la ruta donde se almacenará el fichero de grupos.

Las directivas de core necesarias para complementar la configuración del módulo son:

z AuthType: selecciona el tipo de autentificación de usuarios que se utilizará para


autentificar a un usuario. Puede variar por directorio. Los valores posibles son Basic y
Digest. Con Basic, la transferencia de las claves se hará sin cifrar, y con digest se harán
cifradas.
z AuthName: especifica un nombre del dominio para el cual se solicita el acceso, este
nombre figurará en la pantalla donde se pide la clave, y a su vez servirá para que el
cliente identifique la contraseña que debe utilizar al enviar una petición a un área
determinada.
z Require: selecciona los usuarios que pueden acceder a un área determinada, los usuarios
se pueden determinar a través de nombres o grupos.

Proteger carpetas mediante usuarios en Apache


1º. Crear un fichero de claves fuera de la parte pública:

-htpasswd -c /ruta/passwords Carlos


Instalación y configuración de Apache - Manual completo Página 15 de 22

Al hacerlo, pedirá que se introduzca la clave, y esta será codificada, escribiendo el fichero.

2º Crear un nuevo fichero, en la misma ubicación que "ruta", que se llamará "groups" en la que
se almacenarán los grupos, por ahora uno, para ello escribir la siguiente línea y guardar el
fichero:

usuariosAutenticados: Carlos

De esta forma, debería tener un fichero que se llame passwords, y que contenga una línea con
los datos del usuario Carlos, y un fichero, con nombre groups, que contiene una línea
definiendo un grupo llamado usuariosAutenticados, del que sólo el usuario Carlos forma parte.

3º Crear un fichero con el nombre .htaccess en la carpeta que se quiere proteger, y escribir las
siguientes líneas y guardar el fichero:

AuthType Basic
AuthName "ServidorPruebasCarlos"
AuthUserFile /ruta/passwords
AuthGroupFile /ruta/groups
Require group usuariosAutenticados

La explicación del contenido del fichero es la siguiente:

z Con "AuthType Basic" se estará protegiendo la carpeta con autentificación básica, es decir
que la clave que el usuario introduzca, se transmitirá sin cifrar por la web.
z Con "AuthName "ServidorPruebasCarlos" se asociará esta carpeta con el dominio
"ServidorPruebasCarlos", nombre con el que lo identificará el cliente.
z Con "AuthUserFile /ruta/passwords" y "AuthGroupFile /ruta/groups" Se definirá la
ubicación tanto de los ficheros de usuarios como los ficheros de grupos y se almacenarán
en la carpeta /ruta, con nombres passwords y groups respectivamente.
z Con "Require group usuariosAutenticados" se autorizará el acceso al contenido de esta
carpeta a todos los usuarios que forman parte del grupo de "usuariosAutenticados", por lo
que en la práctica se autorizará el acceso al contenido al usuario Carlos.

En vez de realizar las autorizaciones a grupos completos, se puede autorizar a un usuario


determinado cambiando la última línea por "Require user Carlos", de esta forma sólo se
autorizará al usuario Carlos.

Se puede permitir el acceso a todos los usuarios identificados mediante la introducción de la


siguiente directiva "Require valid-user". El hecho de que esta directiva este incluida en el
fichero, hace que las demás no tengan efecto.

Autentificación y autorización de usuarios con Mysql y Apache. mod_auth_mysql.

En capítulos anteriores hemos explicado como controlar la autentificación y la autorización de


usuarios con el mod_auth. Este módulo tiene como característica el que almacena los nombres
de usuario, las contraseñas y los grupos en ficheros de texto que deben ser escritos y
gestionados por el administrador del sistema. Esta solución es obviamente poco escalable, ya
que en cuanto el número de usuarios y de grupos es elevado, el gestionarlos y controlarlos
puede ser un problema.

Por este motivo existe el mod_auth_mysql, este módulo permite gestionar la autentificación y
autorización, almacenando los usuarios y los grupos en tablas de Mysql, de forma que incluso
se pueden gestionar mediante un panel de control escrito en php.

Para configurar el módulo en Linux, será necesario extraerlo y ejecutar:


Instalación y configuración de Apache - Manual completo Página 16 de 22

./configure --with-mysql=/usr/local/mysql --with-apache=/usr/local/apache

sustituyendo el lugar donde se encuentra la instalación de mysql y de apache.

Para utilizar el módulo es necesario disponer de al menos una tabla donde se almacenen los
usuarios y otra donde se almacenen los grupos. Para ello se puede crear una tabla usuarios con
los campos, nombre y password, y otra tabla llamada grupos con los campos grupo, usuario,
almacenando una entrada por cada usuario que tenga un grupo.

La configuración es la siguiente:

En primer lugar será necesario establecer el servidor, el usuario y la contraseña de la conexión


con la base de datos, esto se hará escribiendo la siguiente línea en el fichero httpd.conf, y
reemplazando los valores por los correctos:

Auth_MySQL_Info <host> <user> <password>

Para configurar el módulo será necesario establecer los valores de las siguientes directivas del
módulo:

Auth_MySQL_DB: nombre de la base de datos


Auth_MySQL_Password_Table: nombre de la base de datos que contiene los nombres de
usuario y las contraseñas.
Auth_MySQL_Username_Field: nombre del campo de la tabla que contiene al usuario.
Auth_MySQL_Password_Field: nombre del campo de la tabla que contiene la contraseña del
usuario.
Auth_MySQL_Group_Table: nombre de la tabla que contiene los usuarios y los grupos a los que
pertenecen.
Auth_MySQL_Group_Field: nombre del campo de la tabla que contiene el nombre del grupo
Auth_MySQL_Empty_Passwords on/off para determinar si se aceptan usuarios con contraseñas
vacias.
Auth_MySQL_Encryption_Types para especificar el tipo de encriptación que se utilizará para
almacenar la clave del usuario dentro de la base de datos.
Auth_MySQL_Non_Persistent on/off para especificar si se desean utilizar conexiones
persistentes.

Además será necesario establecer las siguiente directivas de core para su correcto
funcionamiento:

AuthName: con el nombre del dominio


AuthType: establecido a Basic

Una vez puesto en marcha, el funcionamiento es análogo al módulo mod_auth.

Control de acceso en Apache. Mod_access.


Las directivas que proporciona este módulo se pueden utilizar dentro de los elementos , y del
fichero de configuración httpd.conf, o bien dentro de ficheros .htaccess ubicados dentro de las
carpetas.

Las directivas con las que cuenta el módulo para permitir o denegar el acceso son:

z Allow: controla los servidores que tendrán acceso al contenido, por ejemplo:
Allow from
Permite el acceso desde desarrolloweb.com
desarrolloweb.com
Allow from 192.168.0.1 Permite el acceso desde 192.168.0.1
Instalación y configuración de Apache - Manual completo Página 17 de 22

Permite el acceso desde todas las direcciones Ip que


Allow from 192.168
comienzan por 192.168
Allow from all Permitir todas
z Deny: controla los servidores a los que se denegará el acceso, por ejemplo:
Deny from
Deniega el acceso desde desarrolloweb.com
desarrolloweb.com
Deny from 192.168.0.1 Deniega el acceso desde 192.168.0.1
Deniega el acceso desde todas las direcciones Ip que
Deny from 192.168
comienzan por 192.168
Deny from all Denegar todas
z Order: determina el orden en el que se leerán los permisos, por ejemplo para leer
primero los permitidos y luego los no permitidos se pondrá "Allow,Deny" en este caso si
un servidor esta en la lista de permitidos, y en la de denegados, el acceso al mismo será
denegado, ya que la entrada dentro de la opción Deny sobrescribirá la de la entrada
Allow.

Hay que tener en cuenta que el uso de order junto con Allow from all ó Deny from all, permite
especificar configuraciones como, permitir desde una máquina x y denegar del resto, de una
forma muy sencilla.

Adicionalmente, mediante la directiva SetEnvIf del módulo mod_setenvif, se pueden establecer


variables de entorno que determinen el funcionamiento de Allow o Deny de la misma forma que
se utilizan números IP ó nombres de máquinas. Por ejemplo, utilizando Allow from env=entrada
permitirá el acceso a todas las peticiones que tengan definida la variable de entorno "entrada".

Controlar acceso dependiendo del navegador con Apache

Mediante el uso conjunto de las directivas Allow, Deny, Order y SetEnvIf se puede restringir el
acceso a un sitio dependiendo del tipo de navegador. Para realizarlo simplemente basta con
crear una variable de entorno dependiendo del tipo del navegador, y permitir el acceso a las
peticiones que cuenten con esta variable de entorno denegándoselo al resto.
Para ello la configuración necesaria es la siguiente:

SetEnvId User-Agent googlebot entrar


Order Deny, Allow
Deny from all
Allow from env=entrar

En la primera línea se especifica que se creará una variable de entorno llamada entrar cuando
el navegador sea el motor de indexación de google.

En la segunda línea se especifica el orden en el que se utilizará la lista de servidores, primero


los denegados y luego los permitidos.
En la cuarta línea se especifica que se deniega el acceso a cualquier petición
En la quinta línea se especifica que se permite el acceso a las peticiones que tienen definida la
variable de entorno entrar.

En el caso de que entre el motor de indexación de google, primero se leerá la línea en que se
deniegan todas las peticiones, para a continuación leer la línea en la línea en la que se permite
el acceso desde las peticiones que tienen definida la variable entrar, como el navegador que lo
hace es el googlebot, esta variable estará definida y entrará.
En el caso en que la petición sea realizada por cualquier otro navegador, primero se leerá la
línea en la que se deniegan las peticiones, y como no satisface la línea en que lo permite, no
entrará
Instalación y configuración de Apache - Manual completo Página 18 de 22

Apache Commons Configuration


Yo trabajo en Autentia [http://www.autentia.es/], y en mi trayectoria profesional ligada a la
informática he visto como los programadores invertían grandes cantidades de tiempo en
reinventar la rueda por desconocimiento de determinadas APIs.

¿ Alguna vez has implementado clases que gestionaran directamente datos de configuración ?
Si la respuesta es afirmativa, seguramente hayas reinventado la rueda.

Existen en varias formas estándar de gestionar los datos configuración de nuestros


componentes y aplicaciones:

z Mediante la clase java.util.Properties


z A través de las clases del paquete java.util.prefs. (API muy potente que permite gestionar
datos de configuración de modo herárquico al estilo del "Registro de Windows" que
recomiendo leerse si el lector la desconoce)

En este pequeño tutorial, voy a nombrar un API que a mi personalmente me parece de una
enorme utilidad y potencia para la gestión de datos de configuración. Se trata de Apache
Jakarta Commons Configuration.

Apache Jakarta Commons Configuration es un subproyecto de la serie de proyectos Apache


Jakarta Commons.

Commons Configuration es un conjunto de proyectos que intentan estandarizar las tareas


comunes que casi todas las aplicaciones y componentes realizan normalmente.
Una tarea muy común en cualquier aplicación es la gestión de datos de configuración. Es aquí
en donde entra en juego Apache Jakarta Commons Configuration.
Podemos obtener todo lo necesario desde la siguiente dirección:
http://jakarta.apache.org/commons/configuration/

Básicamente Apache Commons Configuration nos permite:

1. Gestión de los datos de configuración independientemente del lugar en el que esten


almacenados. (Ficheros de propiedades, documentos XML, JNDI, Base de datos, etc.).
2. Un potente motor de consultas para realizar búsquedas del valor que tienen determinadas
propiedades de configuración.
3. Recarga automática de los datos de configuración en caso de que sean modificados en su
lugar físico de origen (Fichero de texto plano, fichero xml, etc)
4. Posibilidad de almacenar los datos de configuración automáticamente en su lugar físico
(fichero de texto plano, fichero xml, etc).

Algunos ejemplos

Antes de nada, deseo resaltar que este tutorial es sólo una introducción al API, y que debe
documentarse en la Web oficial del API para ver todas las posibilidades que nos proporciona
este API.

Ejemplo 1

Supongamos que tenemos el siguiente fichero de propiedades, en el que se definen datos de


configuración relaccionada con el interfaz gráfico de la aplicación:

app.windows.properties:
Instalación y configuración de Apache - Manual completo Página 19 de 22

mainmdi.title=Título de mi aplicación de prueba


mainmdi.width=800
mainmdi.height=600
mainmdi.state=maximized

userform.title=Gestión de usuarios
userform.width=320
userform.height=200
userform.state=normal

# También sería válido: language=Castellano,English,French


language=Castellano
language=English
language=French

Pues a través de Commons Configuration, podríamos acceder a las propiedades de la siguiente


forma:

try {
// Leemos los datos de configuración. El fichero debe estar en el mismo directorio que la
aplicación.
PropertiesConfiguration config = new PropertiesConfiguration("app.windows.properties");

// La siguiente sentencia imprimirá: 800


System.out.println(config.getInt("main.mdi.width"));

// La siguiente sentencia imprimirá: Mi aplicación de pruena


System.out.println(config.getString("main.mdi.title"));

// La siguiente sentencia imprimirá: Castellano


System.out.println(config.getStringArray("language")[0]);

// La siguiente sentencia configura el objeto para que salve las propiedades


// automáticamente en su origen (En este caso un fichero) cuando se actualizen
// o cuando se agregen nuevas propiedades
config.setAutoSave(true);

// Añadimos un par de propiedades


config.addProperty("version", "1.0");
config.addProperty("author", "Carlos García Pérez");

// No hace falta gracias a que está establecida la propiedad autoSave


// config.save();

} catch (ConfigurationException ex){


System.out.println(ex);
}

Ejemplo 2

Ahora vamos a ver las posibilidades de este API para tratar con propiedades Jerárquicas en
formato xml.

app.windows.properties.xml

<?xml version="1.0" encoding="ISO-8859-1"?>


<gui>
<mainmdi>
<title>Mi aplicación de prueba</title>

<dimension>
<width>800</width>
<height>600</height>
</dimension>
Instalación y configuración de Apache - Manual completo Página 20 de 22

<state>maximized</state>
</mainmdi>

<userform>
<title>Gestión de Usuarios</title>
<dimension>
<width>800</width>
<height>600</height>
</dimension>
<state>normal</state>
</userform>

<printer.form>
<dimension>
<width>320</width>
<height>200</height>
</dimension>
</printer.form>

<languages default="Castellano">
<language>Castellano</language>
<language>English</language>
<language>French</language>
</languages>
</gui>

Ahora podemos acceder a los datos de la siguiente forma. El ejemplo es autodescriptivo y está
comentado.

try {
// Leemos los datos de configuración. El fichero debe estar en el mismo directorio que la aplicación.
XMLConfiguration config = new XMLConfiguration("app.windows.properties.xml");

// La siguiente sentencia imprimirá: 800


System.out.println(config.getInt("mainmdi.dimension.width"));

// La siguiente sentencia imprimirá: Mi aplicación de prueba


System.out.println(config.getString("mainmdi.title"));

// La siguiente sentencia imprimirá: Castellano


System.out.println(config.getString("languages[@default]"));

// La siguiente sentencia imprimirá: 3


System.out.println(((java.util.List) config.getProperty("languages.language")).size());

// La siguiente sentencia imprimirá: French


System.out.println(config.getString("languages.language(2)"));

// La siguiente sentencia imprimirá: 320


// Observe que debido a que el elemento contiene un punto en su nombre
// debemos acceder a el escapando el punto mediante ..
System.out.println(config.getInt("printer..form.dimension.width"));

// La siguiente sentencia configura el objeto para que salve las propiedades


// automáticamente en su origen (En este caso un fichero) cuando se actualizen
// o cuando se agregen nuevas propiedades
config.setAutoSave(true);

// Cambiamos el juego de caracteres, pues usaremos propiedades


// que precisan de tildes.
config.setEncoding("ISO-8859-1");

// Añadimos un par de propiedades


// Añadimos la propiedad 1.0 que desciende de la raiz
config.addProperty("version", "1.0");

// Añadimos la propiedad Carlos García Pérez que desciende de la raiz


config.addProperty("author", "Carlos García Pérez");

// No hace falta gracias a que está establecida la propiedad autoSave establecida


// config.save();
} catch (ConfigurationException ex){
System.out.println(ex);
Instalación y configuración de Apache - Manual completo Página 21 de 22

Otras Características interesantes

Este API también nos da la posibilidad de que se recargen automáticamente los datos de
configuración sobre el objeto Configuration en caso de que estos hayan sido modificados.

Para habilitar esta característica deberá indicarlo mediante la siguiente línea de código:

config.setReloadingStrategy(new FileChangedReloadingStrategy());

Conclusiones

A mi juició este API es más completo, potente y flexible que el resto de APIS o métodos para
gestionar datos de configuración.

Aunque java.util.prefs proporciona una funcionalidad y potencia similar a Commons


Configurations, los datos de configuración en java.util.prefs sólo pueden ser modificados desde
aplicaciones y no manualmente, pues entre otras cosas no se sabe donde guarda realmente
este API los datos de configuración.

Cuando utilizamos objetos Properties para gestionar las propiedades, debemos realizar
conversiones de tipos de datos, con este API nos ahorramos ese trabajo.

Por comentar algo negativo, este API depende de otros subprojectos de Jakarta, por lo que
debemos incluir sus JARs asociados si queremos usarlo. Por ejemplo, para usar las funciones
básicas, el API depende de:

z Apache Jakarta Commons Lang


z Apache Jakarta Commons Collections
z Apache Jakarta Commons Loggin

Puede encontrar más información acerca de las dependencias en la siguiente dirección


http://jakarta.apache.org/commons/configuration/dependencies.html

Autores del manual:


Hay que agradecer a diversas personas la dedicación prestada para la creación de este manual.
Sus nombres junto con el número de artículos redactados por cada uno son los siguientes:

z Carlos Luis Cuenca


http://www.helloworldsolutions.com/
(11 capítulos)

z Miguel Angel Alvarez


Director de DesarrolloWeb.com
(1 capítulo)

z Carlos García Pérez


http://www.autentia.es/
(1 capítulo)

Todos los derechos de reproducción y difusión [http://www.desarrolloweb.com/copyright/] reservados a Guiarte


Instalación y configuración de Apache - Manual completo Página 22 de 22

Multimedia S.L. [http://www.guiartemultimedia.com/]

Volver [http://www.desarrolloweb.com/manuales/41]

También podría gustarte