miércoles, 30 de junio de 2010

thttpd, la confirmación de lo minimalista



Dentro del mundo de los webservers todos sabemos que Apache2 se lleva la fama y los aplausos. Por otro lado, Cherokee, nginx y lighttpd poco a poco se hacen con un hueco en difícil campo de los servidores web.
Esta semana he estado jugando un con las listas de correo en Mailman para la recién creada Asociación Comunidade O Zulo. Una Asociación que fomenta la tecnología y cultura libres, de la cual tengo el honor de ser presidente.
Sinceramente, configurar Mailman con Postfix sólo con "auth local" y apache2 es muy sencillo. Pero claro, si tienes un VPS con 128Mb de RAM , el tema se complica. Apache2 consume muchísimos recursos, tanto de RAM como de CPU.
Tocaba buscar una alternativa a Apache2. Lo cierto es que no pensé nunca en dejar Apache2 como servidor www, pero he de reconocer que para la configuración base es ideal y apenas tienes que tocar nada para que funcione. Una vez funcione el servicio, sí me he planteado cambiar el software servidor www.
Paseando por el wiki de Mailman intentando buscar el equilibrio perfecto entre rendimiento y consumo de recursos encuentro thttpd.
La solución que proponen es nginx+thttpd. Como nginx no soporta la ejecución de CGIs en modo "out of the box" proponen enviar las peticiones a CGIs vía directiva proxy_pass de nginx a una instancia de thttpd escuchando en otro puerto del mismo server. ¡Genial! Me ha parecido una idea estupenda y muy profesional. Lo cierto es que ayer de noche no conseguí que funcionase, y al final para salir del paso usamos lighttpd.
La idea no sólo me ha parecido genial a mí, si no que esta solución(la de usar thttpd) la están usando en PayPal.com y en otros sitios web.La instalación en Debian GNU/Linux es tan sencilla como "aptitude install thttpd". En la web del proyecto hay más información sobre directivas, instalación y demás.



jueves, 24 de junio de 2010

...lo he aprendido del software libre


Año 2010.
Existen multitud de herramientas para potenciar el trabajo colaborativo entre miembros de un mismo proyecto: GoogleDocs, Twitter...Sin embargo, a menudo, casi a diario, una bofetada de realidad consigue que aterrice de nuevo en tierra firme.

¿Qué le ocurre al usuario? ¿Por qué no comparte? ¿Miedo? ¿Por qué no colabora? A mi entender, la respuesta en muy sencilla: educación.

El concepto de alfabetización informática, entendido como el proceso por el cual el usuario adquiere los conocimientos necesarios para moverse con soltura en el "mundo binario" es la clave.

En mi opinión, existen dos métodos de alfabetización informática: la oscura y la luminosa.

A través del método oscuro, el usuario, en un falso y difuso proceso de aprendizaje repetitivo, "aprende", entrecomillo aprende, a utilizar aplicaciones asociando conceptos a "programas informáticos", "para escribir, el Word; para navegar, Internet Explorer". A su vez, las grandes corporaciones, utilizando el mismo método difuso, inculcan a los usuarios definiciones erróneas de "legalidad" y "aprendizaje"; y lo que aún es más triste, en ocasiones(muchas más de las que pensamos) son los propios gobiernos los que apoyan a las grandes multinacionales para que , cual borregos, ayuden que ningún usuario salga del redil, cumpla sus normas y se aleje del "pirateo".



[Breve intervalo para imaginar, discurrir o reflexionar]
"Pirata", qué palabra más bonita. Me recuerda al Capitán Garfio, a islas desiertas y galeones llenos del tesoros. Según la definición de la Real Academia de la Lengua una de las acepciones de "pirata" es : "persona que, junto con otros de igual condición,se dedica al abordaje de barcos en el mar para robar". Otra es "persona cruel y despiadada". Adjetivos como "cruel" , "despiadada/o" no encajan en la definición de usuario. Me estoy desviando del tema....
[Fin del intervalo]

Los usuarios que son víctimas del método oscuro temen compartir. Lejos de una opinión personal, esta afirmación es la triste realidad.¿Por qué temen compartir? Por la misma razón por la que las grandes corporaciones cobran por sus aplicaciones(programas informáticos): ocultar y hacerse fuertes. Por la misma razón que los gobiernos tildan de "piratas" a los usuarios: hacer fuertes a las multinacionales y atemorizar al usuario. Salvo contadas excepciones: Andalucía,Extremadura,Brasil,Venezuela y algún caso aislado en Francia, el apoyo a las multimillonarias corporaciones es generalizado.Me gustaría recordar que en es España, copiar música, por ejemplo, para uso personal sin ánimo de lucro, no es delito.

Usted que ahora mismo está leyendo este artículo pregunte a un usuario que ha tenido la desgracia a ser víctima "¿cuales han sido sus últimas aportaciones abiertas a una comunidad de conocimiento?". Es probable que este usuario desconozca la definición de "comunidad". Si no es así ¡me gustaría conocerlo!
A través del método luminoso, el usuario, a través de un proceso transparente, "aprende", entrecomillo aprende, sólo conceptos "para escribir, un editor de textos", "para navegar, un navegador". Existen miles de comunidades en la red, asociaciones y grupos de usuarios sin ningún ánimo de lucro que promueven y fomentan el conocimiento libre y colaborativo. El recelo a preguntar, utilizar y asimilar, desaparece con el método luminoso. El brillo de la libertad para elegir qué, cómo y dónde aprender, guía al usuario a lo largo de su viaje.
[Breve intervalo para imaginar, discurrir o reflexionar]
"Libertad", qué palabra más bonita. Me recuerda el cuadro "La libertad guiando al pueblo" de Delacroix.
[Fin del intervalo]


No me gustaría terminar de escribir nunca este post, por eso no lo voy a cerrar con [ Fin del intervalo ], dejando abierta la libre interpretación a cada uno de los lectores.

Año 2045.

.- Sr. Permuy ¿cómo ha aprendido a compartir?
.- ...lo he aprendido del software libre.

miércoles, 23 de junio de 2010

VII Xornadas y OpenSuSE



En un curso de formación interna en la empresa en la que actualmente trabajo he coincidido con Pablo Nimo y con Xose Luis. Son, el curso aún está en marcha, los docentes. Si bien el temario me ha parecido interesante, considero que mi perfil no encaja del todo en el modelo de alumno tipo para este curso. El caso es que estoy disfrutando bastante.Incluso un día me dejaron molestarlos con lo poco que sé de S.E.O y posicionamiento en Internet. Los días que me aburro(los menos), me pongo a programar como un poseso en los 3 módulos para Drupal en los que estoy trabajando.
El caso es que tengo la mala(o buena) costumbre de fijarme antes de nada en la máquina y el ss.oo de todo el que está a mi alrededor. Pablo y Xose Luis usan openSuSE. Es obvio que, superada la timidez inicial, les pregunté por qué usaban openSuSE, y creo recordar que Xose Luis respondió "eu comencei con openSuSE hai uns anos e funciona moi ben". "rpm-eros pensaba yo".
Conozo SuSE desde hace unos cuantos años, de echo la primera versión en la que recuerdo "trastear" fue una 6.3, hace casi doce años(cómo pasa el tiempo!). La verdad es que no me apetecía probar openSuSE. Me parece una buena distribución pero claro, acostumbrado a Debian GNU/Linux y Ubuntu...cuesta cambiar.
Actualmente tengo 4 máquinas.
1.- PC Sobremesa : AMDX2 4800+ 1x160GB + 2x250GB+1xTB+1x80GB + 8GB RAM
2.- Portátil Macbook : Core2Duro 2,4Ghz, 1x160GB, 2 GB RAM
3.- HP Compaq T5000 ThinClient: Via800Mhz, 64MB Flash , 128MB RAM
4.- Portátil Lenovo : Intel Centrino Duo 1,6Ghz , 2GB RAM, 1x80GB

En este último es dónde realizo las pruebas y testeos después de pasar la fase de experimentación en el entorno virtualizando(Virtualbox casi siempre, Xen si la cosa se pone seria). Hace unas horas esta máquina tenía OpenFiler instalado, un sistema operativo Linux ideal para soluciones SAN. Quiero llevar el Lenovo para utilizarlo en las VII Xornadas de SwLibre de Mugardos, en las que daré una charla introductoria sobre Drupal. Pienso..."¿y si instalo OpenSusE?". Toma!
Esta tarde la he dedicado a instalar y actualizar OpenSuSE. Ahora mismo, a las 23:09 horas tengo aún el yast(consola, por supuesto) actualizando la distribución. ¿Mis impresiones?
  • Me ha gustado el instalador. Ha fallado en el primer intento al indicar que eliminase el esquema de particionado. Pero claro, a lo mejor no contaba con que tenía un LVM y ha cascado. He eliminado a "mano" las particiones y todo OK!.
  • EXT4 y Btrfs. Al igual que Ubuntu 10.04 por defecto el sistema de archivos es EXT4. Me ha llamado la atención que permita Btrfs en la instalación. Mini punto para openSuSE.
  • KDE. Después de la desilusión de la 4.0, la versión incluida en openSuSE 11.2 (creo que es la 4.3) funciona muy bien, fluida y muy cuidada.
  • Bluetooth, Wireless y sonido. He conectado el Mighty Mouse de Apple sin problemas y configurado la conexión a la red internet via wireless Intel 3945ABG.
A las 23:20 aún me falta instalar nginx, php5 y mysql, pero todo indica que no tendré demasiados problemas para rular con OpenSuSE 11.2 en las VII Xornadas de Sw Libre de Mugardos.

jueves, 10 de junio de 2010

Pistas para crear un módulo en Drupal.



Una vez has pasado la fase de theming y construcción del sitio en Drupal, es probable que tus inquietudes personales o bien exigencias profesionales te lleven a plantearte construír un módulo en Drupal.
Si bien es cierto que en castellano no abunda la documentación(de calidad me refiero), en el idioma de Shakespeare es impresionante todo lo que puedes encontrar en la red.
A modo de reseñas, dejo unos consejos que personalmente me han servido de mucho.
  • No obsesionarse con escribir código. Es probable que entre los más de 4.000 módulos encuentres algo que cubra parcialmente tus necesidades.
  • Lectura y compresión. El A.P.I de Drupal es muy completo, hay mucha y muy buena información. Su lectura, aunque sea parcial, es imprescindible.
  • Foros de Drupal.org. Los foros de Drupal imprescindibles.
  • Examinar código. Leer y comprender el código que otras personas han escrito te ayudará.
  • No desesperarse. No tires la toalla a las primeras de cambio. Puede ser frustrante al inicio, pero a medida que vas cumpliendo objetivos verás como todo cambia de color.
Enlaces que considero interesantes:
  • Mustarseedmedia: Aunque no tratan exclusivamente el tema de creación de módulos en Drupal, el videopodcast es de lo mejor que he visto hasta ahora en la red sobre Drupal(sobre videopodcast,claro)
  • Alan Palazzolo: La verdad es que este tipo es un crack. Ya me dejó impresionado en su charla sobre Openstreetmap en la DrupalCamp Spain 2010. En este enlace deja unas pista acerca como crear un módulo para que la localización sea un proceso sencillo.
  • Node Example: Ejemplo a estudiar en Drupal.org.
  • Cómo crear/añadir campos CCK: Este enlace es muy bueno, este también, y este, este otro es muy completo. Node export es la clave para exportar los campos CCK.
Es evidente que estas pistas se centrar en crear un módulo que defina el un tipo de contenido. A medida que avance en los dos módulos en los que estoy trabajando, intentaré postear alguna porción de código y a modo de ejemplo.

viernes, 4 de junio de 2010

mod_bw , control ancho banda en Apache2



Como he comentado en anteriores posts, no suelo usar apache2 en las instalaciones y proyectos que de mi dependen al 100%. Prefiero soluciones como Cherokee y NGINX.El caso que es últimamente "juego" bastante con apache2, por suerte o por desgracia.Por desgracia cuando compruebo que aún existen administradores de sistemas que piensan que no hay vida después de apache2 ¡qué pena!. Por suerte por que no dejo de sorprenderme.Apache Software Foundation es un monstruo.Basta con echarle un vistazo a su sitio web para darse cuenta.No dejo de sorprenderme al comprobar lo maravilloso, increíble y prolífico que es el mundo del software libre. No prentendo que este post sea una lección de evangelización, simplemente quiero reconocer el trabajo de la gente de http://ivn.cl/. ¿Necesitas controlar el ancho de banda de tu servidor Apache2? Ellos lo han echo. Han desarrollado mod_bw para apache2. Funciona muy bien y está muy bien documentado en un fichero .txt que se puede leer antes de compilar el módulo.¿Compilar?!Tengo miedo! Nada de eso. Doy las claves para instalar y configurar mod_bw en apache2. Ya vereis como es muy sencillo.


[root@patriciaconde] aptitude update && aptitude install apache2-dev


Un poco de paciencia y ya tenemos instaladas las herramientas de desarrollo para apache2.Sólo utilizaremoso apxs, que es el acrónimo de APache eXtenSion tool, una herramienta para construir e instalar extensiones(módulos) para apache2.


[root@patriciaconde] wget http://ivn.cl/files/source/mod_bw-0.91.tgz
[root@patriciaconde] tar zxvf mod_bw-0.91.tgz
[root@patriciaconde] apxs2 -i -a -c mod_bw.c


Deberíamos visualiar algo parecido a ...


[root@patriciaconde] apxs2 -i -a -c mod_bw.c
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static i486-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_REENTRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -c -o mod_bw.lo mod_bw.c && touch mod_bw.slo
(..)
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 644 /usr/lib/apache2/modules/mod_bw.so
[preparing module `bw' in /etc/apache2/mods-available/bw.load]
Enabling module bw.
Run '/etc/init.d/apache2 restart' to activate new configuration!

Fácil, verdad? Ahora sólo tenemos que aplicar las directivas de mod_bw a un vhost de apache2.He subido una imagen ISO de Ubuntu 10.04 al raiz del webserver y he probado a descargar el fichero sin aplicar restricción alguna de ancho de banda.Después he modificado el fichero /etc/apache2/sites-available/default. El contenido del fichero con mod_bw activado es:


Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
BandwidthModule On
ForceBandWidthModule On
Bandwidth all 10240
MinBandwidth all -1

http://ivn.cl/
Más información para freaks

root@patriciaconde:~/compilaciones# apache2 -V
Server version: Apache/2.2.14 (Ubuntu)
Server built: Apr 13 2010 19:28:27
Server's Module Magic Number: 20051115:23
Server loaded: APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture: 32-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT=""
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"


[Pantallazo de una descarga con mod_bw activado en un Apache 2.2.14 con Ubuntu 10.04]