Tabla de Contenidos

Instalar Cherokee con PHP y mySQL en Debian Squeeze

Introducción

Una buena parte de los usuarios de software libre ha instalado alguna vez el servidor web Apache. No obstante, existen otras alternativas muy buenas, y una de ellas es Cherokee, que es la que enseñaremos a instalar y configurar en este tutorial.

Cherokee es un servidor web ligero, completamente programado en C para evitar dependencias de otros paquetes. Una de sus ventajas es su rapidez, de hecho es uno de los servidores web capaces de atender más de 10,000 peticiones por segundo. Además es fácil de configurar gracias a una útil interfaz gráfica de administración, y ofrece soporte para diferentes tecnologías como FastCGI, SCGI, PHP, CGI, uWSGI, SSI, SSL, TLS, balanceo de carga, ajuste de tráfico y streaming de video, entre otras.

Preparación

Antes de instalar Cherokee, instalaremos algunos paquetes necesarios para ofrecer la funcionalidad que deseamos. Si bien el repositorio de Debian Squeeze (6.0) está más actualizado que el proporcionado en la versión Lenny (5.0), en este tutorial enseñaremos a utilizar el repositorio DotDeb, que ofrece algunos paquetes más actualizados para las versiones estables recientes de Debian, entre los cuales se encuentran MySQL y PHP.

Primeramente, agregaremos el repositorio al archivo /etc/apt/sources.list e importaremos la llave gpg:

sudo -s
echo "deb http://packages.dotdeb.org squeeze all" >> /etc/apt/sources.list
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -
aptitude update
exit

Con este repositorio tendremos aceso a PHP 5.3.6 y MySQL 5.1.

Instalación

MySQL

Primeramente instalaremos MySQL:

sudo aptitude -rvW install mysql-server-5.1

(Durante la instalación, debe establecerse una contraseña para acceder al servicio).

Cherokee

Una vez instalado MySQL, procederemos a instalar Cherokee y también el paquete apache2-utils, que podríamos necesitar para asegurar directorios.

sudo aptitude -rvW install cherokee cherokee-doc libcherokee-mod-{admin,geoip,libssl,mysql,streaming} apache2-utils

Para comprobar si todo ha salido bien, lanzamos el navegador con la dirección de nuestro servidor:

http://localhost/

Debería salir la imagen de un alegre indiecito corriendo, con un cartel en fondo rojo.

PHP

Luego procederemos a instalar algunos paquetes de PHP:

sudo aptitude -rvW install php5 php5-{apc,fpm,gd,intl,mcrypt,mysql,odbc,suhosin} php-pear javascript-common

Entre la lista de paquetes está php5-apc que es un acelerador opcode, pfp5-fpm que es un módulo FastCGI supervisor de servicios (es el que utilizaremos para dar a Cherokee soporte para PHP), y php5-suhosin que añade algunas medidas de seguridad (adicionalmente podríamos agregar phpmyadmin, para ofrecer una interfaz amistosa de interacción con MySQL, pero de momento ello no forma parte de este tutorial).

Configuración del soporte para PHP

Ahora agregaremos a Cherokee soporte para el lenguaje PHP. Para esto, debemos iniciar la utilidad de administración, de manera que escuche en cualquier interfaz de red (lo mas probable es que naveguemos desde otra PC):

sudo cherokee-admin -b

En la consola se mostrará algo como esto:

Login:
  User:              admin
  One-time Password: Qw0BKBU3Gdp03pni

Web Interface:
  URL:               http://localhost:9090/

Esto quiere decir que se activará temporalmente 1) una interfaz de administración web en el puerto 9090, a la cual se podrá acceder con una contraseña creada para utilizarse en esta única ocasión. Podremos acceder bien sea localmente o desde otra computadora de la red. Para los efectos de este tutorial, asumiremos que se accede remotamente con la dirección http://192.168.0.2:9090/

En cuanto salga la interfaz de administración, en la cual debemos autenticarnos, accederemos al botón que dice Orígenes. Entoces, accedemos al botón que dice Nuevo, y llenaremos esta información:

Nombre Conexión
Intérprete PHP 127.0.0.1:9000

Luego, de la caja desplegable Tipo seleccionamos Intérprete local, y llenamos el comando para el intérprete:

/usr/sbin/php5-fpm --fpm-config /etc/php5/fpm/php-fpm.conf

Entonces, para guardar los cambios accedemos al botón superior derecho que dice Guardar, y después de hacer un Reinicio suave, accedemos al botón que dice vServers.

En esta sección, accederemos a la pestaña que dice Comportamiento y posteriormente al botón que dice Rule management 2). Para crear una nueva asociación con las extensiones php, accedemos entonces al botón Nuevo que aparece en la esquina superior izquierda, y luego solo selecionamos Lenguajes → PHP, hacemos clic en el botón que dice Añadir y luego en el que dice Crear. Podemos cambiar el estado del origen de “NO FINAL” a FINAL si deseamos. Finalmente guardamos los cambios nuevamente, y ya podremos salir de la interfaz de administración y detener la utilidad cherokee-admin utilizando la combinación de teclas CTRL-C.

Comprobación

Finalmente, crearemos un archivo PHP especial para comprobar que el intérprete que agregamos funciona correctamente:

sudo echo "<?php phpinfo(); ?>" > /var/www/prueba.php

Limpiamos la cache del navegador para la última hora (para así evitar posibles problemas que pueden presentarse), y entonces colocaremos esta dirección en el navegador:

http://192.168.0.2/prueba.php

Si aparece una tabla con un conjunto de datos acerca de la configuración de PHP, es que todo quedó correcto.

Proteger un directorio

Una de las cosas que podemos necesitar es un directorio en nuestro servidor web protegido con una contraseña, lo cual puede ser útil para múltiples cosas, como por ejemplo, colocar ahi herramientas administrativas como phpmyadmin y otras a las cuales los usuarios comunes normalmente no deben tener acceso. Por ejemplo, digamos que deseamos que esta dirección de nuestro sitio esté protegida por contraseña:

http://192.168.0.2/protegido

Hacer esto en Cherokee no es difícil, pero hay que tener presentes ciertos detalles importantes, que explicaremos en breve.

Generación de la contraseña

Cherokee soporta varias formas de autenticación; en este tutorial utilizaremos la utilidad htdigest del paquete apache2-utils, que permite crear un archivo de usuarios y contraseñas específicamente para un servidor web, y ofrece la ventaja que el texto de la contraseña se envía al servidor con una máscara unidireccional. 3) Es decir, que si alguien intenta interceptar la comunicación del navegador con el servidor durante el proceso de autenticación, solo podría obtener la máscara, y resultaría difícil obtener la contraseña a partir de esta.

Generamos entonces nuestro archivo de contraseñas para un usuario al que llamaremos “superusuario” (no es necesario crearlo en el sistema), y establecemos una contraseña para dicho usuario (que debemos confirmar):

sudo htdigest -c /etc/cherokee/claves "Acceso restringido" superusuario

Este comando debe haber creado el archivo /etc/cherokee/claves y en su interior se encontrará el nombre del usuario con la contraseña enmascarada.

Ajuste del sitio

Para realizar las modificaciones necesarias en Cherokee para utilizar este archivo, tenemos que lanzar nuevamente la utilidad de administración de cherokee desde la consola y entrar en la interfaz de administración, como se explicó anteriormente.

Una vez autenticados y dentro de la interfaz de administración, hacemos clic en el botón vServer, luego seleccionamos nuestro host virtual del listado (el creado por defecto se llama default). Entonces nos dirigimos a la pestaña llamada Comportamiento, y hacemos clic en el botón Rule management. Creamos un nuevo comportamiento haciendo clic en el botón superior izquierdo que dice Nuevo, del listado que aparece elegimos Manual, y como tipo de regla seleccionamos Directorio de la caja desplegable. Entonces, en la caja que dice Directorio web simplemente ponemos /protegido y hacemos clic en el botón Añadir.

Aparecerá nuestro directorio en el listado de la izquierda, lo seleccionamos y hacemos clic en la pestaña llamada Seguridad. Estableceremos los siguientes valores (que mostramos en una tabla para mayor comodidad): 4)

Mecanismo de validación Métodos Realm Usuarios Fichero de contraseñas
Htdigest file Digest Acceso restringido superusuario /etc/cherokee/claves

A continuación, en el listado de la izquierda donde aparece nuestro directorio, debemos desmarcar el recuadro que dice FINAL para que diga NO FINAL. Este paso es imprescindible para que el mecanismo de validación funcione.

Finalmente, hacemos clic en el botón superior derecho Guardar, hacemos un Reinicio suave, interrumpimos la utilidad de administración de Cherokee en la consola, y con esto debe quedar todo listo.

Si seguimos los pasos cuidadosamente, cuando intentemos entrar en nuestro navegador al directorio protegido, debe aparecer la pantalla de autenticación.

Atribuciones

1)
Mientras no se oprima CTRL-C.
2)
Debería decir “Gestión de reglas”, pero en el momento en que se redacta este tutorial, aun no está traducido.
3)
La mayoría de los navegadores modernos admiten este método.
4)
La opción Usuarios no es imprescindible llenarla, pero puede ser útil si deseamos proteger varios directorios con diferentes usuarios.