DSBW FIB Howto

Apache con modulo python cgi

Para el 3 ejercicio de DSBW había que implementar un pequeño script cgi en python.

Nunca antes había probado de usar cgi, así que he tenido que buscar las instrucciones y aquí dejo mi mini howto para linux.

Instalación

  1. Prerrequisito: tener apache instalado.
  2. Instalar libapache2-mod-python
  3. Añadir “AddHandler cgi-script .py” (sin las comillas) a la configuración cgi (/etc/apache2/sites-enable/000-default)
  4. Reiniciar apache

sudo aptitude install libapache2-mod-python
sudo gedit /etc/apache2/sites-enable/000-default
sudo /etc/init.d/apache2 restart

Primer script

En la configuración del sitio apache nos indica donde busca los cgi, en mi caso /usr/lib/cgi-bin. En el momento de escribir el código ten encuenta (2 y 3 son muy importantes):

  1. Importa el modulo cgi
  2. Lo primero que hay que imprimir es el content type “Content-type: text/html”
  3. Después una linea en blanco.
  4. Un consejo para debugar redirecciona la salida de error a la estandar,  no es aconsejable para producción.

La cabecera del script tendria que contener los siguiente:

#!/usr/bin/python
import cgi
import sys

print “Content-Type: text/html”
print
sys.stderr = sys.stdout ”’solo para debug”’

print ” Script cgi de prueba en python”

Prueba el script accediendo en tu navegador a http://localhost/cgi-bin/NOMBRE_SCRIPT,  si ha ocurrido un error lo puedes localizar en el log de apache (/var/log/apache2/error_log).

Una variable útil:

form = cgi.FieldStorage()

Inicializarla sólo una vez, contiene los valores post / get que se le pasan al script, puedes acceder a ellos de las siguientes formas:

form.getvalue(“name”)
form.getlist(“name) “‘ devuelve una lista con los valores que coinciden con la clave'”
form[“name”].value ”’ igual que la primera si el campo no es una lista”‘

Mañana publicaré los archivos del ejercicio 3, antes de la entrega no por si las moscas.

0 Comments

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *