Manual Completo Apache

22
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: Módulos Base: Módulo con las funciones básicas del Apache 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 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 por: DesarrolloWeb.com [http://www.desarrolloweb.com/] "Tu mejor ayuda para aprender a hacer webs" Versión on-line: http://www.desarrolloweb.com/manuales/41 Página 1 de 22 Instalación y configuración de Apache - Manual completo

Transcript of Manual Completo Apache

Page 1: Manual Completo Apache

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:

Módulos Base: Módulo con las funciones básicas del Apache 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 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 multiprocesopara 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 por: DesarrolloWeb.com [http://www.desarrolloweb.com/]"Tu mejor ayuda para aprender a hacer webs"

Versión on-line:http://www.desarrolloweb.com/manuales/41

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

Page 2: Manual Completo Apache

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.

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

Page 3: Manual Completo Apache

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.

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

Page 4: Manual Completo Apache

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 elenlace 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. Sideseamos 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.

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

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".

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

Page 5: Manual Completo Apache

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:

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

Page 6: Manual Completo Apache

<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 sunombre. <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 peticionesde 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

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

Page 7: Manual Completo Apache

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óduloCore. 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

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

Page 8: Manual Completo Apache

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 Filecomo 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.

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

Page 9: Manual Completo Apache

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

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

Page 10: Manual Completo Apache

-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/*

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

Page 11: Manual Completo Apache

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

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

Page 12: Manual Completo Apache

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. Seaplica 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 nose 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

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

Page 13: Manual Completo Apache

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 ycontraseñ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:

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

Page 14: Manual Completo Apache

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 nombredel 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:

AuthUserFile: siver para especificar la ruta donde se almacenará el fichero de usuarios. 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:

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. 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. 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

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

Page 15: Manual Completo Apache

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:

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. Con "AuthName "ServidorPruebasCarlos" se asociará esta carpeta con el dominio "ServidorPruebasCarlos", nombre con el que lo identificará el cliente. 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. 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:

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

Page 16: Manual Completo Apache

./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:

Allow: controla los servidores que tendrán acceso al contenido, por ejemplo:

Allow from desarrolloweb.com

Permite el acceso desde desarrolloweb.com

Allow from 192.168.0.1 Permite el acceso desde 192.168.0.1

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

Page 17: Manual Completo Apache

Deny: controla los servidores a los que se denegará el acceso, por ejemplo:

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á

Allow from 192.168Permite el acceso desde todas las direcciones Ip que comienzan por 192.168

Allow from all Permitir todas

Deny from desarrolloweb.com

Deniega el acceso desde desarrolloweb.com

Deny from 192.168.0.1 Deniega el acceso desde 192.168.0.1

Deny from 192.168Deniega el acceso desde todas las direcciones Ip que comienzan por 192.168

Deny from all Denegar todas

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

Page 18: Manual Completo Apache

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:

Mediante la clase java.util.Properties 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 determinadaspropiedades 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:

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

Page 19: Manual Completo Apache

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>

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

Page 20: Manual Completo Apache

<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);

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

Page 21: Manual Completo Apache

} 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:

Apache Jakarta Commons Lang Apache Jakarta Commons Collections 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:

Carlos Luis Cuenca http://www.helloworldsolutions.com/ (11 capítulos) Miguel Angel Alvarez Director de DesarrolloWeb.com (1 capítulo) 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

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

Page 22: Manual Completo Apache

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

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

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