viernes, 27 de mayo de 2011

Servidor web ligero Cherokee, instalación e integración con PHP en Arch Linux

Cherokee web server
El servidor web Cherokee es uno de los servidores de nueva generación llamados ligeros que mejora notablemente el rendimiento ofrecido por el más usado Apache HTTPD soportando más usuarios concurrentes, aceptando más peticiones por segundo y consumiendo menos memoria. Quizá no tenga toda la versatilidad de un servidor Apache HTTPD pero para la mayoría de los escenarios es más que suficiente. En el siguiente artículo vamos a ver cuales son sus principales características y como instalarlo junto con PHP en la distribución Arch Linux. Otros servidores similares a Cherokee son nginx y lighttpd que quizá te interese también echarles un vistazo. Por supuesto cherokee es un servidor con licencia GNU GPL v2 y por tanto es software libre.

Comencemos poniendo algunas de las características que soporta: FastCGI, SCGI, PHP, CGI, SSI, TLS y conexiones cifradas SSL, host virtuales, autenticación, codificación al vuelo, balanceo de carga, archivos de log compatibles con apache, balanceador de base de datos, actualizaciones sin parada del servicio, proxy HTTP inverso y mucho más.

De todas las características que posee Cherokee destacaría las siguientes:

- Actualizaciones sin parada del servicio que puede ser muy importante para algunos servicios que no pueden permitirse dejar de dar servicio ningún segundo.
- Configuración a través de una consola de administración accesible con el navegador esto no se si es una ventaja o desventaja ya que no sigue la filosofía de los sistemas Unix de realizar la configuración mediante un archivo de texto para hacer una restauración de la configuración en caso de que la perdamos pero sin duda hace que la configuración se realice más comodamente y es algo que no tienen otros servidores por lo que he considerado importante destacarlo. También podemos editarlo directamente aunque realmente no estaremos interesados en ello a menos que seamos un usuario avanzado.
- Cherokee Market con el que podremos instalar ciertos servicios de forma muy cómoda y con poca configuración, como por ejemplo, instalar un servicio de Drupal, Wordpress, phpBB, phpMyAdmin, nuxeo, Liferay y algunos otros.
- Host virtuales SSL con esta característica podemos usar SSL en host virtuales ya que cherokee hace uso del método Server Name Indication (SNI) por el que en la negociación de la sesión TLS se envía el nombre del host que se quiere acceder. Esta era una imitación importante al usar SSL en servidores virtuales basados en nombres.

Si esta características no te parecen importantes quizá la del rendimiento por si sola te parezca suficiente para empezar a utilizar cherokee, consulta las pruebas de rendimiento (en el apartado referencia) para ver en que medida mejora Cherokee el rendimiento respesto a otros servidores. Pero sin duda lo mejor sería que lo comprobases por ti mismo. Una nueva caracteristica añadida recientemente y que afecta al rendimiento es la llamada Font-Line cache. Los desarrolladores de cherokee se han dado cuenta que es muy habitual utilizar junto al servidor web otro servidor dedicado a cachear ciertos resultados, como Squid, sin tener que generar de nuevo el mismo contenido para cada petición, esto por si solo aumenta el rendimiento notablemente y reduce la carga del sistema pero aún asi hay cierta latencia y comunicación entre el servidor web y el servidor de cache que podría ser evitada como ha demostrado cherokee. Para reducir esta latencia cherokee incorpora en si mismo un servidor de cache que puede reducir esta latencia hasta en un 80%.

En Arch Linux la instalación de Cherokee es muy sencilla basta con:

# pacman -S cherokee

y se nos instalará la última versión disponible. Para arrancarlo y pararlo deberemos hacer:

# /etc/rc.d/cherokee start
# /etc/rc.d/cherokee stop

Si queremos que se inicie al arrancar el sistema deberemos añadirlo al apartado DAEMONS del archivo /etc/rc.conf (Consulta la wiki de Arch Linux para más detalles sobre como administrar los servicios):

# nano /etc/rc.conf

DAEMONS=(syslog-ng network netfs crond cherokee)

Para arrancar la consola de administración deberemos ejecutar:

# cherokee-admin -b -u


El parmámetro -b hará que cherokee escuche en cualquier dirección IP y no solo en 127.0.0.1. Y el parámetro -u hará que no se solicite contraseña al acceder a la consola de administración por lo que es recomendable no usarlo en un sistema de producción. En la pantalla de inicio de la consola de administración podemos ver información básica de la carga del servidor en cuanto a procesador y memoria y veremos si tenemos instalada la última versión de cherokee.

La consola de administración está dividida en varios apartados: Inicio, Mercado, Estado, General, vServers, Orígenes y Avanzado. En el apartado Market podremos instalar los servicios disponibles pero para ello previamente deberemos tener una cuenta de cherokee market. En el apatado General podemos modificar algunas característica generales del servidor. En el apartado vServers podemos administrar los servidores virtuales e instalar nuevos servidores virtuales, con el botón + podremos añadir fácilmente el soporte para PHP. En Avanzado podemos modificar algunos datos importantes sobre el funcionamiento del servidor.








Veamos ahora a ver como instalar PHP en cherokee. Primeramente instalaremos PHP con:

# pacman -S php php-cgi


Si todo ha ido correctamte podremos ejecutar:

$ php -v
$ php-cgi -v

Ahora procederemos crear un servidor virtual con soporte para PHP, vamos al apartado vServer y pulsamos sobre el botón +, seleccionamos Lenguages y PHP. Tal vez necesitemos crear un directorio con mkdir /var/www. Continuamos con el asistente y finalmente nos aparece en la lista de servidores el que acabamos de crear.



Ya nos queda poco!... solo nos queda crear un archivo php de ejemplo que lo crearemos con nuestro editor favorito en el directorio /var/www si hemos indicado este directorio en el asistente.


Espero que a alguien le entren ganas de usar este servidor web, si es así estaré encantado de escuchar sus comentarios.

Referencia:
http://www.cherokee-project.com/doc/basics_why_cherokee.html
http://www.cherokee-project.com/benchmarks.html
http://www.cherokee-project.com/doc/other_goodies.html
http://www.cherokee-project.com/doc/other_graphs.html
http://www.cherokee-project.com/doc/cookbook_php.html

http://www.redes-linux.com/manuales/Servidor_web/ponencia_cherokee.pdf
http://en.wikipedia.org/wiki/Cherokee_(webserver)
http://www.youtube.com/watch?v=bIxFzOv3U1A

https://wiki.archlinux.org/index.php/Daemon