21 de Mayo, 2010

Por qué Cherokee

Hace cosa de 6 meses que empecé a usar Cherokee en este servidor, y tenía pendiente comentar mi motivación para el cambio, porque hasta entonces venía usando Apache con buenos resultados.

La instalación de OpenBSD de blackshell viene de Diciembre de 2005. Sí, eso es: se trata de un OpenBSD 3.8.

El soporte del fabricante se acabó en el 2006, ya que suele ser 12 meses por entrega (mantienen siempre dos releases), y al tratarese de un sistema tipo BSD (monolítico, no con el esquema bazar de Linux), resulta muy complicado de actualizar porque el núcleo está muy ligado a las aplicaciones de usuario, y lo mismo ocurre con los ports (aplicaciones extra que no cuentan como sistema base).

Por lo tanto la forma recomendada de pasar a una versión nueva es la reinstalación (sí, lo sé... poco conveniente, pero esto pasa también con algunas distribuciones de Linux modernas; ni todo el monte es orégano, ni todas las distros son Debian :P).

Si sumamos a eso que blackshell sigue siendo un servidor casero, y que estoy lejos de casa desde hace unos años ya, no he tenido la oportunidad de actualizar :(.

Así que mi solución de compromiso es meter parches (que por otra parte es la forma de distribuir las correcciones en OpenBSD), y mantener al día los servicios que están expuestos al exterior y pueden suponer un riesgo de seguridad.

Con la parte de los ports es relativamente sencillo, porque originalmente se instalan desde fuentes (se descarga el código, se aplican parches si es necesario, y se genera un paquete instalable). Pero, ¿qué pasa con httpd?

  • Es una versión de la rama 1.3.x, con muchos parches propios de OpenBSD (chroot de casa, por ejemplo).
  • Al estar integrado en la base, los fuentes están en el árbol de fuentes del sistema, y no es posible ir a la web de Apache y bajar el fuente de la última versión (además, la rama 1.3.x ya no está soportada por la gente de Apache).
  • Tampoco es fácil de compilar, si queremos tener módulos como mod_php (lo que implica también pelearse con PHP).

Así que estaba claro que, o me iba a la rama 2 de Apache, o probaba otro servidor web (lo que implicaba cambios importantes, porque hasta el momento usaba mod_php en este blog). Finalmente me decidí por la segunda opción, porque la máquina de blackshell es modesta y una solución ligera parecía más adecuada, y así aprendemos cosas por el camino ;).

Ahí es donde entra Cherokee:

  • El fuente es fácil de compilar (./configure && make && make install). En mi caso, corriendo OpenBSD, solo utilizo las opciones especiales de: --disable-static --disable-nls --disable-pam (además de ajustar las rutas para mi sistema).
  • La administración web es fantástica, e incluye asistentes y ayuda para correr PHP con FastCGI (necesario, porque Cherokee no tiene mod_php... claro).
  • Es ligero, mucho. ¿Cuánto? En este momento el proceso de Cherokee utiliza 5 MB de memoria, y si sumamos los procesos de FastCGI (tengo un pool de 4), el coste total es de 25 MB.
  • Cherokee es muy rápido, pero además no he perdido ninguna de las funcionalidades que me daba Apache, e incluso gano otras (como el keep-alive en el proxy HTTP para ln.usebox.net, ¡genial!).

Además sigo las actualizaciones, de forma que tengo un servicio siempre al día, aunque sea en un sistema legacy.

Desde luego que estos comentarios son bastante específicos (OpenBSD, un servidor casero), y no creo que todos sean en general aplicables a todas las situaciones, pero con destacar la ventaja de tener un servicio moderno y actualizado en un sistema heredado que lleva 4 años sin soporte oficial, ya creo que es suficiente.

Anotación por Juan J. Martínez, clasificada en: cherokee, openbsd, software libre.

Hay 4 comentarios

Gravatar

Pues no sé tú, pero yo llevo actualizando de versión sin problemas desde hace unas 4 o 5 releases, el servidor es una modesta placa Soekris, la cual corre todo tipo de servicios y no tiene ni una miserable entrada (monitor, teclado, ratón), me toca hacerlo por consola serie.
Lo único a tener en cuenta es instalar releases correlativas sin saltarse ninguna, y el único inconveniente que puede haber es que se quede algo de broza de la release anterior por el camino como alguna libreria ya no necesaria.

por funky, en 2010-05-23 13:58:19

Gravatar

Mi problema es que estoy lejos del servidor, y si pasa algo en el proceso, no tengo manos remotas que me ayuden a solucionar el problema.

De todas formas, se puede hacer, porque hay gente que reinstala en remoto vía sshd. Yo no lo he hecho :D

por Juanjo, en 2010-05-23 14:08:58

Gravatar

"Por lo tanto la forma recomendada de pasar a una versión nueva es la reinstalación (sí, lo sé... poco conveniente, pero esto pasa también con algunas distribuciones de Linux modernas; ni todo el monte es orégano, ni todas las distros son Debian :P)."

Tienes mas opciones, aparte de reinstalar:

- Puedes seguir -current (si si, lo se, no es la rama "estable" de nombre, pero no suele dar problemas), y ahi es cvs update y recompilar kernel y userland

- Puedes reiniciar con el kernel bsd.rd, acceder a la maquina remotamente por ssh y hacer un (U)pgrade pillando los packs base directamente de Internet por FTP/HTTP. Esto es mas parecido a reinstalar y esta soportado entre releases (cuidao con hacer esto de la 3.8 a la 4.6, que ahi lo mas probable es que pete todo)

Sin duda el estar tan lejos puede ser un problema si algo sale mal, pero el hecho de que siga funcionando indica que la 3.8 es lo suficientemente estable tambien, no? ;)

por Wu, en 2010-05-24 22:59:12

Gravatar

El primer caso, seguir -current, no sé si es lo suficientemente estable para un servidor (aunque sea casero).

El segundo caso es "la opción(tm)", pero da algo de cosa, ¿no? :D Es lo mismo que reinstalar, pero pasando por el suplicio del mergemaster ;)

De todas formas, ¿los upgrades aplican a los ports? Hice upgrade un par de veces, y recuerdo que tuve que desinstalar los paquetes e instalar las versiones nuevas :'(

por Juanjo, en 2010-05-25 06:32:00

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: