Sólo un idiota puede ser totalmente feliz.

Mario Vargas Llosa

Suscríbete al feed

Comentarios recientes

Guía para configurar un servidor para Django en Ubuntu

Llega un momento en que todo desarrollador Django debe pensar en cómo implementará sus proyectos en un servidor de producción. La primera vez que lo hice creí que la mejor opción era utilizar Lighty, Apache, mod_proxy y mod_python; poco después descubrí que estaba equivocado. Usar Apache como servidor web al frente para gestionar todas las peticiones a un proyecto Django y pasar, vía mod_proxy, pedidos de contenido estático a Lighty es una mala idea, con esta configuración Apache trabaja incluso para archivos que no tiene que servir, usando más memoria y CPU que Lighty.

Luego de leer algunos comentarios en el artículo original y más sobre la implementación de Django pude confirmar que lo mejor era tener al servidor web de contenido estático al frente y Apache detrás, procesando las páginas generadas por Django.

Reemplacé Lighty con Nginx, que de acuerdo a muchos parece ser más estable, y opté por mod_wsgi en vez de mod_python para conectar Apache con Django. mod_wsgi usa además menos memoria y está preparado para sitios con mayores exigencias. No hay necesidad de mod_proxy en Apache pues Nginx se encarga ahora del trabajo de proxy.

La siguiente es una breve guía, muy precisa y fácil de seguir, para desarrolladores web que saben cómo administrar sus servidores. No tocaré temas como seguridad, memcached, configuración de Django, bases de datos, Apache, DNS u otros aspectos básicos de GNU/Linux. Por supuesto que todos estos temas son también importantes y debes saber cómo encargarte de ellos.

El plan

Esta guía te permitirá configurar un servidor para Django en Ubuntu e incluye todos los pasos para:

  • Configurar un dominio para tu proyecto en Django.
  • Crear una estructura de directorios para tus sitios en Django.
  • Configurar Apache con mod_wsgi para Django.
  • Configurar Nginx.
  • Servir archivos estáticos para la sección de administración de Django.
  • Mostrarle tu próximo éxito en Django al mundo.

Luego de seguir estos pasos tendrás un sitio corriendo con Nginx al frente y Apache hablando con Django detrás. Nginx se encargará del contenido estático y pasará las peticiones de Django para Apache y mod_wsgi.

He probado los pasos a continuación en tres servidores Ubuntu (dos corriendo 8.10, Intrepid Ibex, y otro con 7.10, Gutsy Gibbon) pero todo debería funcionar muy parecido en otras distribuciones de GNU/Linux.

¿Empezamos?

Cómo configurar Apache, mod_python y proxy reverso a Lighttpd para Django en Ubuntu

Actualización, 8 de abril de 2009: Ya no recomiendo este método. Ahora sugiero seguir la guía para configurar un servidor Django con Nginx y Apache.

I'll Django for food

Es octubre 2008 y ya no queda duda que para hacer desarrollo web en serio se debe trabajar con frameworks. Talvez la traducción adecuada sería plataforma pero como la mayoría de desarrolladores de habla hispana estamos acostumbrados me quedaré con la palabrita en inglés. Un framework es software que permite a los programadores, que cada día somos más ociosos, olvidarnos de las tareas repetitivas para enfocarmos en aquello que hace único a cada uno de nuestros proyectos.

Además resulta obvio que Django, el framework escrito en Python, está atrayendo a más desarrolladores y compañías cada día. Guido es un googler desde el año 2005 y el recientemente anunciado Google App Engine usa Python y Django. Estoy seguro que no hay mejor momento para saltar al tren de Django (sin ánimos de embromar a los buenos chicos de RoR).

Los programadores veteranos pueden empezar a escribir aplicaciones Django rápidamente gracias a la excelente documentación y al libro de Django (de acceso gratuito). También he leido y recomiendo Practical Django Projects, por James Bennett, parte del equipo de Django, y Learning Website Development with Django, por Ayman Hourieh, un joven y talentoso ingeniero en Google.

Django es realmente el web framework for perfectionists with deadlines. Yo estoy a punto de completar mi primera aplicación Django para Facebook y solo necesité unos pocos días para lograrlo (lo cual incluyó actualizarme con los recientes cambios en el API de Facebook). Y sí, hay artículos sobre Django y Facebook en camino.

Y bien, ¿así que todo es felicidad en Djangolandia? Bueno, hay algo que siempre me complicó desde que empecé a usar el framework hace algunos meses: la puesta en marcha en un entorno de producción. La documentación y los libros que he leido suelen arrancar con el servidor de desarrollo que Django incluye y enfocarse en escribir aplicaciones, dejando la implementación final de lado.

Pero desafortunadamente, especialmente si estás acostumbrado a la típica configuración de Linux, Apache, MySQL y PHP, como yo lo estaba, puedes necesitar más detalles para entrar en acción. Es por eso que decidí escribir este tutorial sobre cómo configurar Apache, mod_python y un proxy reverso a Lighttpd para Django.

Opera 9.50b2 para Linux 64 bits

Opera, a nice browser

Opera es un excelente navegador web y su reciente beta luce muy prometedora, incluyendo herramientas para desarrolladores web.

No estoy seguro porqué la versión de 64 bits para Linux no está más a la vista en su sitio, para aquellos que la están buscando aquí está: Opera 9.50b2 para Linux 64 bits.

Cómo añadir una barra de navegación estilo Mac en Ubuntu

Hace algunos días visité una tienda que vende productos Apple en Lima (antes que pregunten: no, lamentablemente no es una verdadera Apple store). Me gustan los productos Apple, tengo un iPod classic, hace poco le compré un Nano rosado a Yesenia y estoy pensando en actualizar a un Touch pronto.

En la tienda mucha gente, ya saben, del tipo normal y no geek, observaba las MacBooks entre exclamaciones de asombro y miradas fascinadas. Me imagino que en gran parte debido a los simpáticos efectos visuales que ofrece Leopard y sospecho que la mayoría de estos curiosos que podrían ser clientes de Apple no estaban ni remotamente interesados en el procesador Core 2 Duo, la resolución de video o la carcasa de policarbonato (muy atractiva) que las MacBooks tienen.

Y bueno, si los usuarios piden efectos visuales ¿porqué no darles un poco en Ubuntu? Sin gastar más de mil verdes en una Mac o, lo que es peor, instalar Vista. Empezamos con lo que impresiona a la mayoría al toparse con una Mac: la barra de navegación, el famoso Dock.

Apple Mac OS X Dock

Instalar Avant Window Navigator en Ubuntu

Avant Window Navigator es una barra de navegación estilo dock para Linux. Reemplaza a los típicos paneles, contiene enlaces para iniciar tus aplicaciones, muestra las ventanas en uso y ofrece una serie de simpáticos applets para que tu escritorio luzca mucho mejor, muy a lo Mac.

Avant Window Navigator

Probé en una portátil y una PC de escritorio, ambas con Ubuntu 8.04 (Hardy Heron) 64 bits, y no encontré versiones diferentes para 32 y 64 bits por lo que las instrucciones a continuación deberían funcionar en ambas arquitecturas.

La versión corta: Solo ejecuta
sudo apt-get install avant-window-navigator

El problema con este método es que Hardy aún no incluye el paquete awn-extras (los applets) y es allí donde se encuentra lo mejor de Avant Window Navigator.

Si esto es todo lo que necesitas entonces sigue con los toques finales, si no, sigue leyendo.

La versión larga: Los desarrolladores de AWN han creado un repositorio con todo lo que necesitas para obtener la experiencia completa del dock en Edgy, Feisty, Gutsy y Hardy.

  1. Empieza en el archivo de AWN, escoge tu versión de Ubuntu y copia las líneas correctas.
  2. Abre el archivo sources.list:

    sudo vi /etc/apt/sources.list

  3. Agrega las líneas correctas (yo estoy usando las que corresponden a Hardy), añade un comentario, graba y cierra:

    # awn
    deb http://ppa.launchpad.net/awn-testing/ubuntu hardy main
    deb-src http://ppa.launchpad.net/awn-testing/ubuntu hardy main

  4. Actualiza tu lista de paquetes:

    sudo apt-get update

  5. Instala los siguientes paquetes:

    sudo apt-get install libawn0-trunk
    sudo apt-get install libawn-dev-trunk
    sudo apt-get install awn-manager-trunk
    sudo apt-get install awn-extras-applets-trunk
    sudo apt-get install avant-window-navigator-trunk

Los toques finales

Para activar tu nueva barra de navegación haz clic en Avant Window Navigator, dentro de Accesories en el menú principal de Ubuntu.

Avant Window Navigator

  1. Ahora haz clic derecho en algún espacio vacío de la barra (puede ser un poco incómodo al principio, intenta en los extremos) y escoge Preferences para cambiar la apariencia y activar algunos applets.
  2. Arrastra algunas aplicaciones del menú principal de Ubuntu a la nueva barra.
  3. Desactiva los paneles de Gnome, para esto, en Sessions > Current Session remueve gnome-panel de la lista de aplicaciones ejecutándose y haz clic en Apply.
  4. Para confirmar que todo funcione presiona Ctrl + Alt + Backspace e ingresa nuevamente.

Avant Window Navigator es una muy simpática aplicación, es fácil de instalar y le agrega un toque de estilo a la experiencia de usar Linux.

Ahora mi escritorio Linux luce mucho más limpio, disfruto viendo a mis contactos de Pidgin saltando en la barra y puedo obtener algunas miradas de asombro de los curiosos sin necesidad de gastar en una MacBook (aún cuando en algún momento compraré una solo por darme el gusto).

Avant Window Navigator

Reparando la laptop: Amber nuevamente en acción

Hace algunas semanas Amber, mi fiel laptop Pangolin de System 76, dejó de funcionar, aparentemente por un problema eléctrico.

Los muchachos de System 76 fueron muy amables ayudándome a descartar el problema por correo electrónico e incluso ofrecieron cambiar el equipo sin costo alguno pues aún estaba en garantía pero el problema fue que estoy en Lima y no tenía forma de enviárselos a tiempo.

Instalar OpenVPN en Ubuntu, Hulu fuera de los Estados Unidos y seguridad en la Red

Hace algunos días escribí sobre Hulu, su restricción para usuarios fuera de los Estados Unidos y como utilizar una red privada virtual (VPN) con un servidor en ese país podía ayudarnos a conectar con el servicio.

Pero una VPN no sirve solo para acceder a servicios como Hulu o Pandora (aún cuando fue eso lo que me animó a dedicarle unas horas al tema), es mucho más que eso y es importante que todo aquel que pasa más de la mitad de su vida conectado a la Red (y esos son ustedes, queridos lectores) entienda el concepto.

Veamos cómo instalar OpenVPN en Ubuntu Gutsy.

De VPS a colocated: nueva mudanza en Ventanazul

Después de casi dos años con un VPS como cliente de JaguarPC (enlace de afiliado) llegó el momento de cambiar de proveedor y mover mis trastos, este vez a dando el salto a colocated con un nuevo servidor.

moviendo mis trastos

¿Ubuntu Gutsy Gibbon corriendo lento?

Hace varios días noté que Woodcarver, la estación donde trabajo la mayor parte del tiempo, estaba corriendo muy lento, un rápido vistazo a top dio con el culpable: trackerd, el demonio que usa Meta Tracker.

Y aún cuando la idea de tener un buscador local suena muy bien, hasta ahora no he tenido la necesidad de usarlo, parece que soy un tipo organizado, según leí en Ubuntu Forums hay problemas en el software, al menos en las versiones 0.6.2 y 0.6.3, que hacen que trackerd consuma demasiada memoria y CPU durante el proceso de indexación.

Sé que es posible configurar Meta Tracker desde System > Preferences >Indexing Preferences pero estoy sin tiempo para hacer pruebas así que opté por un rápido sudo apt-get remove tracker y todo corre normal ahora.

Así que si notas que Ubuntu Gutsy Gibbon está muy lento, échale un vistazo a top, trackerd podría estar devorándo tus recursos.

Si alguno tiene sugerencias para mantener trackerd corriendo sin mayor impacto en la performance sería excelente conocerlas.

Qué hacer si no puedes acceder a ciertos sitios web con Ubuntu Gutsy Gibbon

Luego de resolver el problema de mi conexión inalámbrica con Ubuntu Gutsy Gibbon quedaba el extraño caso de porqué un sitio web en particular no cargaba: Campaign Monitor.

Encontré algunos artículos sobre los problemas de Ubuntu Gutsy Gibbon con IPv6 pero luego de probar los cambios mi problema continuaba. El asunto con IPv6 provoca lentitud en la conexión pero mi problema era que el sitio simplemente no cargaba.

Tampoco era un problema de resolución DNS pues ya tenía activo OpenDNS.

Finalmente me topé con el bug 59331: un cambio en el kernel 2.6.17 (mi instalación de Gutsy corre 2.6.22-14) provocó que muchos sitios en la Red no carguen.

Uno de los usuarios que reportaba el bug mencionaba el mismo problema que yo tenía con Campaign Monitor pero con el sitio de la Universidad de Ohio.

El sitio de Campaign Monitor y el de la Universidad de Ohio son entonces los dos candidatos para confirmar si este es también tu problema.

La solución es desactivar tcp_window_scaling siguiendo estos pasos:

  • sudo vi /etc/sysctl.conf
  • Añadir la línea: net.ipv4.tcp_window_scaling = 0
  • sudo sysctl -p

Actualización: Parece que desactivar window_scaling es una solución muy drástica, en vez de ello es posible añadir estas líneas:

net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_rmem = 4096 87380 174760

No olvides ejecutar sudo sysctl -p para activar el cambio.

Luego del cambio pude acceder al sitio de la Universidad de Ohio y teóricamente el problema original con Campaign Monitor debía haberse solucionado pero no fue así.

Un comentario de Michael Doube, en los comentarios al bug 59331, me dio la solución definitiva:

An alternative solution is to install Firestarter, which I think works by using this iptables line: sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -clamp-mss-to-pmtu

Así que opté por lo más sencillo, instalar Firestarter:

sudo apt-get install firestarter

Ahora inicia Firestarter desde Applications > Internet y sigue las instrucciones para activar el firewall y el cambio en la configuración de TCP.

¡Ahora sí! El sitio de Campaign Monitor carga y puedo continuar con mi trabajo.

Espero que pronto Canonical tenga un bugfix para este problema pues son muchos los usuarios y sitios web con este problema.

Resuelve tus problemas de conexión inalámbrica al iniciar Ubuntu Gutsy Gibbon

Luego de actualizar a Ubuntu 7.10 y usarlo por algunos días he empezado a encontrar algunos problemas relacionados con la conexión a Internet.

El primero, y el que más fastidioso resultaba, era que mi conexión inalámbrica no funcionaba al iniciar el equipo, solo me sucedía en uno de los desktops mas no en la laptop. Cada vez que iniciaba el equipo debía ejecutar /etc/init.d/networking restart.

Hoy encontré la solución al problema, se llama wicd y reemplaza al Network Manager de Gnome.

Para instalarlo sigue estos pasos:

  1. sudo apt-get remove network-manager-gnome network-manager
  2. Descarga e instala el archivo .deb desde la página de descarga de wicd.
  3. Ejecuta /opt/wicd/tray.py & para iniciar el applet de wicd.
  4. Accede a la configuración de wicd con un clic en el applet. El botón para grabar cambios no es tan obvio, debes hacer clic en connect (que no luce como un botón) en la sección Network. Puedes comprobar que tus cambios han sido grabados editando /opt/wicd/data/wireless-settings.conf
  5. Para que el applet cargue automáticamente al inicio de cada sesión abre System > Preferences > Sessions y haz clic sobre Remember currently running applications en la sección Session Options.
  6. Reinicia para confirmar que el applet y la conexión se ejecutan correctamente. Si notas que tu conexión no está lista para ciertas aplicaciones reduce el valor de order, yo uso 40, para /opt/wicd/tray.py en la sección Current Session en System > Preferences > Sessions.

Aún tengo algunos problemas de resolución DNS que parecen estar relacionados con IPv6, reportados en muchos sitios en la Red, y por alguna razón no puedo cargar el sitio web de Campaign Monitor así que si alguno de ustedes, que use Gutsy, encuentra la solución espero la comparta.

¡Suerte!