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
- Prerrequisito: tener apache instalado.
- Instalar libapache2-mod-python
- Añadir “AddHandler cgi-script .py” (sin las comillas) a la configuración cgi (/etc/apache2/sites-enable/000-default)
- 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):
- Importa el modulo cgi
- Lo primero que hay que imprimir es el content type “Content-type: text/html”
- Después una linea en blanco.
- 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 sysprint “Content-Type: text/html”
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