Espacio de tecnologia, software libre y sus derivados. Una horda de monos entrenados escriben de vez en cuando por aqui algunas noticias, opiniones e incluso alguna que otra cosa fuera del tema. Maqueros, favor de abstenerse que no somos lo suficientemente guapos.

Piano daemon

Archive for August, 2010

mod_python sobre NetBSD 5.X

Mod_python es un modulo Apache que embebe el Interprete de Python dentro del el servidor. Con mod_python tu podras escribir aplicaciones webs basada en aplicaciones Python que correran mucho mas rapido que las aplicaciones tradicionales de CGI ademas de tener acceso a las caracteristicas avanzadas de retener conecciones a bases de datos y acceso a funciones internas de Apache.

Instalando el Port en NetBSD 5.X
# cd /usr/pkgsrc/www/ap2-python && make && make install

Luego hay que editar el httpd.conf, agregando la siguiente línea para cargar el módulo.

LoadModule python_module /usr/pkg/lib/httpd/mod_python.so

Mod_python handlers

Apache procesa las requests en fases. Un Handler es una funcion que procesas una particular parte del request. Los Handlers son proporcionados por Apache y por sus modulos como , mod_python.

El Handler Publisher permite accesar a funciones y variables dentro de un modulo via URLs. Evitandoce asi el codigo spagetthi.

Para probar el funcionamiento del módulo debemos hacer lo siguiente. En primer lugar, vamos a necesitar definir un handler de python para los requests en un .htaccess. Allí escribimos algo como lo siguiente:

AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonOption session DbmSession
PythonOption session_dbm /home/user/domains/test.com/session.dbm
PythonOption ApplicationPath /
PythonDebug On ## Turn this off when done with debugging

DirectoryIndex index.py

Por supuesto, habrá que ajustar los datos a lo que sea necesario.
Luego, creamos el índice de nuestro sitio, en este caso en /home/user/domains/test.com/public_html/index.py con el siguiente código:

## index.py
from mod_python import apache

def index(req):
     req.content_type = 'text/plain'
     req.write('Hello from mod_pythonn')
     return apache.OK

Luego accedemos a http://test.com/ y si vemos “Hello from mod_python”, es que hemos instalado correctamente mod_python.