viernes, 15 de mayo de 2009

Cherokee 0.99.15 on OpenBSD 4.5

Cherokee es considerado por muchos el servidor web mas rápido que existe, aún no esta en su versión estable, pero ya se comporta como si lo estuviera. Hace un tiempo trabajé en el port para tener cherokee en OpenBSD, el día de hoy he estado compilando y aplicando unos parches para que la última release, la versión 0.99.15 pueda correr sin problemas en OpenBSD.

A continuación describo el procedimiento para todos aquellos que quieran experimentar esta excelente aplicación en este excelente sistema operativo :)

1. Instale cherokee en su OpenBSD sin necesidad de compilar los ports de la versión "current", para esto use el siguiente paquete binario:

http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz

de la siguiente forma:

# uname -a
OpenBSD astrid.nonroot.org 4.5 GENERIC#1749 i386
# pkg_add -v http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz
parsing http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz
Dependencies for cherokee-0.99.15 resolve to: pcre-7.8, spawn-fcgi-1.6.2 (todo: pcre-7.8,spawn-fcgi-1.6.2)
cherokee-0.99.15:parsing pcre-7.8
found libspec c.50.1 in /usr/lib
cherokee-0.99.15:pcre-7.8: complete
cherokee-0.99.15:parsing spawn-fcgi-1.6.2
found libspec c.50.1 in /usr/lib
cherokee-0.99.15:spawn-fcgi-1.6.2: complete
found libspec c.50.1 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec pcre.2.2 in package pcre-7.8
found libspec pthread.11.1 in /usr/lib
found libspec ssl.14.0 in /usr/lib
adding group _cherokee
adding user _cherokee
installed /etc/cherokee/cherokee.conf from /usr/local/share/examples/cherokee/etc/cherokee.conf****************************************************************************** | 99%
installed /var/cherokee/images/cherokee-logo.png from /usr/local/share/examples/cherokee/www/images/cherokee-logo.png*********************************************************| 100%
installed /var/cherokee/images/default-bg.png from /usr/local/share/examples/cherokee/www/images/default-bg.png
installed /var/cherokee/images/powered_by_cherokee.png from /usr/local/share/examples/cherokee/www/images/powered_by_cherokee.png
installed /var/cherokee/index.html from /usr/local/share/examples/cherokee/www/index.html
installed /var/log/cherokee/cherokee.access from /usr/local/share/examples/cherokee/www/index.html
installed /var/log/cherokee/cherokee.error from /usr/local/share/examples/cherokee/www/index.html
cherokee-0.99.15: complete
--- cherokee-0.99.15 -------------------
To complete the installation, you need to configure cherokee. As root:
# cherokee-admin -b [IP]
(where IP is a trusted IP used to configure your web server)

If you want to run cherokee on boot, add these lines to /etc/rc.local:

if [ X"${cherokee_flags}" != X"NO" ]; then
echo -n ' cherokee'
/usr/local/sbin/cherokee-guardian ${cherokee_flags} 1> /dev/null
fi

for admin management:

if [ X"${cherokee-admin_flags}" != X"NO" ]; then
echo -n ' cherokee-admin'
/usr/local/sbin/cherokee-admin ${cherokee-admin_flags} 1> /dev/null &
fi

and in /etc/rc.conf.local :

cherokee_flags="-d" # use -d to run in daemon mode
cherokee-admin_flags=NO # use -b if you want listen on ALL interfaces
#
Como puede ver solo ejecutamos un comando y ya tenemos instalado cherokee en nuestra maquina (todas las dependencias son descargadas desde el mismo sitio, asi que no hay problema).

2. Al finalizar la instalación sale un mensaje informativo, donde nos explican que si queremos hacer que cherokee se inicie en cada arranque de sistema debemos agregar unas líneas a los archivos de arranque, si no lo queremos hacer, podemos obviar este paso.

Al final del archivo /etc/rc.local agregamos las siguientes líneas:

if [ X"${cherokee_flags}" != X"NO" ]; then
echo -n ' cherokee'
/usr/local/sbin/cherokee-worker ${cherokee_flags} 1> /dev/null
fi

if [ X"${cherokee-admin_flags}" != X"NO" ]; then
echo -n ' cherokee-admin'
/usr/local/sbin/cherokee-admin ${cherokee-admin_flags} 1> /dev/null &
fi
Esto logra que el sistema de arranque evalue la posibilidad de arrancar el servidor web cherokee o su interfaz de configuración, validando las variables cherokee_flags y cherokee-admin_flags.

El siguiente paso es agregar al archivo /etc/rc.conf.local las variables que determinan el arranque.

cherokee_flags="-d" # use -d to run in daemon mode
cherokee-admin_flags=NO # use -b if you want listen on ALL interfaces
Si las dejas así como estan, cherokee iniciará, pero no cargará su interfaz de configuración, esta es la opción RECOMENDADA.

NOTA: Se dió cuenta del cambio de la palabra guardian por worker?, esto es porque en el paquete de instalación aún no he corregido algunas cosas, entonces tenga en cuenta que para subir cherokee no debe usar el comando cherokee-guardian sino cherokee-worker.

3. Ahora solo nos queda probar entrando a la IP de la maquina que tiene el servicio instalado.


Fig 1. Página de bienvenida de cherokee

Bien, ahora teniendo cherokee instalado seguro va a querer probar la interfaz de configuración, para esto es necesario instalar otro paquete adicional, puesto que toda la interfaz esta programada en python. Si ya tienes python en tu sistema, no será necesario este paso.

# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.5/packages/i386/python-2.5.4.tgz
parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.5/packages/i386/python-2.5.4.tgz
Dependencies for python-2.5.4 resolve to: sqlite3-3.6.10, bzip2-1.0.5 (todo: bzip2-1.0.5,sqlite3-3.6.10)
python-2.5.4:parsing bzip2-1.0.5
found libspec c.50.1 in /usr/lib
python-2.5.4:bzip2-1.0.5: complete
python-2.5.4:parsing sqlite3-3.6.10
found libspec c.50.1 in /usr/lib
found libspec ncurses.10.0 in /usr/lib
found libspec pthread.11.1 in /usr/lib
found libspec readline.3.0 in /usr/lib
python-2.5.4:sqlite3-3.6.10: complete
found libspec bz2.10.4 in package bzip2-1.0.5
found libspec c.50.1 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec expat.9.0 in /usr/lib
found libspec m.5.0 in /usr/lib
found libspec ncurses.10.0 in /usr/lib
found libspec ossaudio.3.1 in /usr/lib
found libspec panel.3.0 in /usr/lib
found libspec pthread.11.1 in /usr/lib
found libspec readline.3.0 in /usr/lib
found libspec sqlite3.13.0 in package sqlite3-3.6.10
found libspec ssl.14.0 in /usr/lib
found libspec stdc++.47.0 in /usr/lib
found libspec util.11.0 in /usr/lib
found libspec z.4.1 in /usr/lib
python-2.5.4: complete
--- python-2.5.4 -------------------
If you want to use this package as your default system python, as root
create symbolic links like so (overwriting any previous default):
ln -sf /usr/local/bin/python2.5 /usr/local/bin/python
ln -sf /usr/local/bin/python2.5-config /usr/local/bin/python-config
ln -sf /usr/local/bin/pydoc2.5 /usr/local/bin/pydoc
# ln -sf /usr/local/bin/python2.5 /usr/local/bin/python
# ln -sf /usr/local/bin/python2.5-config /usr/local/bin/python-config
# ln -sf /usr/local/bin/pydoc2.5 /usr/local/bin/pydoc

Instalamos el paquete desde el repositorio oficial y luego creamos los enlaces simbolicos que nos sugieren. Despues de esto ya podemos habilitar la interfaz de configuración, para esto ejecutamos el siguiente comando:

# cherokee-admin -b

Login:
User: admin
One-time Password: 4X8VkNyPAjYpW7op

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

Cherokee Web Server 0.99.15 (May 15 2009): Listening on port ALL:9090, TLS
disabled, IPv6 disabled, using poll, 128 fds system limit, max. 57
connections, caching I/O, single thread
Vas a observar que el cherokee nos da información acerca de la contraseña que necesitaremos para ingresar al sistema, copia esta contraseña y usala cuando entres al sitio web.

Fig 2. Ingreso a la interfaz de configuración de cherokee

Puede ser que al intentar entrar en la interfaz de administración obtengas este error:

Este error se presenta cuando no tenemos python instalado en el sistema o no hemos creado adecuadamente los enlaces simbolicos que nos sugieren. Por el contrario, si todo marcha bien, veremos algo así:

Fig 3. Interfaz de configuración de cherokee

Todos los cambios realizados en la interfaz web se verán reflejados en el archivo /etc/cherokee/cherokee.conf, tambien recuerda que para agregar contenido a tu sitio web puedes usar el directorio /var/cherokee mas conocido como el "DocumentRoot".

Y bueno para terminar, si requieres usar alguno de los complementos de cherokee, por ejemplo el validador de mysql o ldap puedes instalar los paquetes adicionales, por ejemplo, para instalar el soporte de autenticación contra un servidor LDAP, puedes instalar el paquete así:

# pkg_add -v http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-ldap-0.99.15.tgz
parsing http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-ldap-0.99.15.tgz
Dependencies for cherokee-ldap-0.99.15 resolve to: openldap-client-2.3.43, cherokee-0.99.15 (todo: openldap-client-2.3.43)
cherokee-ldap-0.99.15:parsing openldap-client-2.3.43
Dependencies for openldap-client-2.3.43 resolve to: cyrus-sasl-2.1.22p4 (todo: cyrus-sasl-2.1.22p4)
cherokee-ldap-0.99.15:parsing cyrus-sasl-2.1.22p4
found libspec asn1.16.0 in /usr/lib
found libspec c.50.1 in /usr/lib
found libspec com_err.16.0 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec gssapi.5.0 in /usr/lib
found libspec krb5.16.0 in /usr/lib
cherokee-ldap-0.99.15:cyrus-sasl-2.1.22p4: complete
found libspec asn1.16.0 in /usr/lib
found libspec c.50.1 in /usr/lib
found libspec com_err.16.0 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec gssapi.5.0 in /usr/lib
found libspec krb5.16.0 in /usr/lib
found libspec sasl2.2.22 in package cyrus-sasl-2.1.22p4
found libspec ssl.14.0 in /usr/lib
installed /etc/openldap/ldap.conf from /usr/local/share/examples/openldap/ldap.conf******************************************************************** | 82%
cherokee-ldap-0.99.15:openldap-client-2.3.43: complete
found libspec asn1.16.0 in /usr/lib
found libspec com_err.16.0 in /usr/lib
found libspec crypto.17.0 in /usr/lib
found libspec gssapi.5.0 in /usr/lib
found libspec krb5.16.0 in /usr/lib
found libspec lber.9.1 in package openldap-client-2.3.43
found libspec ldap.9.1 in package openldap-client-2.3.43
found libspec sasl2.2.22 in package cyrus-sasl-2.1.22p4
found libspec ssl.14.0 in /usr/lib
cherokee-ldap-0.99.15: complete
#

Eso es todo, dudas, sugerencias en los comentarios.

Buena energia para el proyecto cherokee y larga vida a OpenBSD !

1 comentario:

nonroot (c) 1983/2013 dijo...

En OpenBSD 4.4 parece que no funciona, pero lo puede intentar.

# uname -a
OpenBSD cuatro.nonroot.org 4.4 GENERIC#1019 i386
# pkg_add -v http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz
parsing http://www.openbsdcolombia.org/pyp/paquetes/4.5/www/cherokee-0.99.15.tgz
Unknown element: @sha 0ydoRxQkELCMRHt6NKsIuwr948TeQrB/u3tA0DVh+MU= in SCALAR(0x8bcc1aa4), at /usr/libdata/perl5/OpenBSD/PackingList.pm line 301, <$fh> line 6.
#

Entradas populares