=======================
Introduccin a Cherokee
======================

Instalacin
-----------
La instalacin de cherokee es muy similar a la de cualquier otro paquete de
software libre basado las herramientas autoconf/automake. Tan slo es el tpico
"./configure ; make install".

Adems tiene algunos parametros para compilarlo. Le sugiero usar `prefix' y
`sysconfdir'; con ellos podrs decidir dnde instalar los archivos del servidor.
Sera algo as:

./configure --prefix=/usr --sysconfdir=/etc


Cherokee tienes tambin sus propios para aadir algunas caractersticas
externas:

--with-php activa el soporte a PHP4.
--with-mono activa el soporte a ASPX (usando Mono).

Tambin puedes establecer algunas opciones de compilacin para mejorar el
rendimiento del servidor usando el parmetro CFLAGS en la fase de compilacin.
Pro ejemplo, si tiene un Pentium-3, algo como esto sera magnfico:

make CFLAGS="-march=pentium3 -O3 -pipe" install

Fichero de configuracin 
------------------------
Si usa cherokee como servidor web (no como una librera para servidor web
empotrado), l leer un fichero de configuracin para configurarse a s mismo.
Por defecto, este fichero es /etc/cherokee.conf, pero depende de dnde haya
instalado el servidor.
Estos ficheros contienen algunas opciones acerca de la configuracin y cmo
debera trabajar el servidor. El fichero de configuracin est completamente
comentado, por lo que es un buen punto para empezar. :-)

NOTA: En este momento, estamos trabajando duramente en cherokee, por lo que
aadiremos nuevos parmetros de configuracin de vez en cuando. :)

Hay un concepto importante en el sistema de configuracin de Cherokee: los
handlers (manejadores).
Estos handlers son el medio para aadir la correspondencia entre cmo quiere que
acte un directorio y su contenido.
El movimiento se explicar ms adelante, por lo que expondr algunos ejemplos:

Directory /public {
		Handler common
}

Directory / {
		Handler file
}


Cuando Cherokee recibe una solicitud mira en sus reglas internas buscando una
para estas coincidencias. Si tu accedes a http://localhost/public/thing, l
coincidir con la primera regla, por lo que la solicitud ser atendida por el
handler "common".
Hay un caso `especial', el directorio root "/". Si cherokee atiende una
solucitud para un objeto almacenado en un directorio desconocido, usar el
handler predeterminado; en este caso el handler "file".
Puedes hacer el fichero de configuracin tan complicado como quieras.


Handlers
--------
Previamente, vimos cmo establecer las correspondencias entre directorios y
handlers. En este punto explicaremos qu es un handler.
Bsicamente cada handler es un mdulo independiente de cherokee, que maneja una
solicitud de un modo concreto.
En este momento, estn los siguientes handlers

* file:    Devuelve ficheros. Si el handler encuentra el fichero en la
           solicitud, lo enva. Tenga en cuenta que enva slo ficheros
* dirlist: Lista el contenido de un directorio. Tenga cuidado, no enva ficheros
* common:  Es una mezcla de los dos anteriores. Si el objeto solicitado es un
           fichero, lo enva, pero si es un directorio, manda el listado.
* redir:   Redirecciona la solicitud a una nueva URL
* nn:      Implementa el algoritmo `nearest neighbor'. Si la solicitud no
           existe, buscar la coincidencia ms cercana.

NOTA: En este momento, hay algunos handlers sin terminar. Estamos trabajando
para finalizarlos

* php:     Ejecuta/evala ficheros PHP.
* mono:    Ejecuta/evala ficheros ASPX.

Virtual hosts
-------------
Las nuevas versiones de Cherokee tienen soporte para hosts virtuales.
Puede aadir tantos servidores como quieras en el sitema de configuracin. La
sintaxis de configuracin es muy similar al resto. Por ejemplo:

Server tesoro.alobbs.com {
	  DocumentRoot /tmp

	  Directory / {
			  Handler common
	  }
}

Hay un parmetro bsico, "DocumentRoot", que especifica la ruta por defecto
del contenido de este host virtual.
Dentro de la configuracin del servidor puede aadir otra vez tantas entradas
Directory como quiera

Para aadir un servidor por defecto, basta con aadir DocumentRoot y al menos
una entrada Directory fuera de cualquier entrada Server. Si ningn servidor
virtual coincide con la solicitud, cherokee usar la entrada predeterminada.


Ficheros de log
---------------
Cherokee usa syslog para el log. Es el ms flexible, limpio y estndar mtodo de
hacerlo. Loguear puede se (des)activado con el parmetro "Log" del fichero de
configuracin. Normalmente querr mantenerlo activado, pero en algunas
situaciones (como pruebas de rendimiento) es mejor mantenerlo apagado.

Directorios de usuario
----------------------
Desde la versin 0.4.2, Cherokee puede trabajar con el contenido personal del
usuario. Bsicamente, tiene que aadir la entrada "UserDir" al fichero de
configuracin (un servidor virtual tambin vale)

Ejemplo:

UserDir public_html

Si Cherokee va a responder a la solicitud http://www.alobbs.com/~user/thing,
buscar el objeto "thing" en directorio "public_html" del directorio home del
usuario "user".

Si no se especifica ninguna entrada "UserDir", esta caracterstica no se usa.


Para desarrolladores: cmo escribir un nuevo handler
----------------------------------------------------
Escribir un nuevo handler es una tarea simple.
Le sugiero leer el fichero "handler.h". Ver una estructura y 4-5 prototipos de
funciones. Normalmente, el handler tiene que implementar todas las funciones. La
mejor manera de ver cmo trabaja es leer el cdigo de los handlers actuales, es
fcil y limpio.



Alvaro Lopez Ortega
alvaro@alobbs.com

Traducido por Ayose Cazorla Len
setepo@gulic.org
