Cómo configurar un IP público con el servidor de desarrollo de Google App Engine

Y justo cuando pensaba que configurar Apache, mod_python y Lighty con Django era todo un logro, incluso antes de jugar con mod_wsgi o nginx (el poderoso servidor HTTP ruso que suena como engine X) llegó el pedido de mover la aplicación Django que estoy escribiendo para Facebook a Google App Engine, el nuevo, y parece que el más popular por estos días, protagonista en el mercado de las nubes.

Cuando mi código corría en un ambiente de Django puro apunté el callback url en Facebook a mi servidor local, un sencillo cambio en el port forwarding de mi router bastó, y ahora quería hacer lo mismo con el servidor de desarrollo de Google App Engine.

D-Link port forwarding

Al tener uno de mis IP internos visible desde el exterior Facebook podía llamar a la aplicación corriendo en mi servidor en casa. Noté entonces que el servidor de desarrollo de Django causaba errores de time out en Facebook así que empecé a usar mi configuración de Apache y Lighty para desarrollo. Nota que deberás modificar los max requests per child en Apache para esto.

Y cuando empecé a modificar la aplicación en Django para correr en Google App Engine (te sugiero leer: App Engine helper for Django) sabía que debería cambiar la forma de ejecutar dev_appserver.py, que usualmente es:

dev_appserver.py helloworld/

Por cierto, añadí dev_appserver.py y appcfg.py a mi ruta para evitar escribir mucho.

Llamar al servidor sin parámetros muestra una lista de opciones, a para la dirección IP y p para el puerto, así que esto debería funcionar:

dev_appserver.py -a 192.168.0.180 -p 80 helloworld/

Nota que mi dirección privada para los ejemplos es 192.168.0.180. Pero es posible que te encuentres con este error:

socket.error: (13, 'Permission denied')

Permisos, ¿falta sudo?:

sudo dev_appserver.py -a 192.168.0.180 -p 80 helloworld/

Sí, eso funciona.

Ahora, si te topas con este error:

socket.error: (98, 'Address already in use')

algún otro proceso está usando el IP y puerto que escogiste. La forma más fácil de arreglar el problema es deteniendo los servidores web que tengas instalados. Si quieres saber cuál es el proceso en conflicto usa netstat:

netstat -an | grep 192.168.0.180:80

192.168.0.180 es la dirección privada que queremos usar para nuestro servidor de desarrollo de Google App Engine.

¡Presto! Eso es todo. Ahora puedes visitar el IP asignado a tu conexión y podrás ver tu aplicación de Google App Engine corriendo.

Apunta ahora el callback url de tu aplicación en Facebook a tu servidor de desarrollo local. Imagino que es posible usar otro puerto en vez de 80 y decirle a Facebook que lo use, aunque no lo he probado.

Ya casi termino con esta aplicación, he aprendido mucho y probado varios métodos así que mantente alerta porque pronto escribiré más sobre cómo desarrollar aplicaciones con Django, Facebook y Google App Engine. Hasta la próxima.

Keep your comments relevant, written in good English and don't spam. Let's create useful and valuable discussions. Markdown is welcome.

Add your comment