martes, 16 de septiembre de 2014

Servidor web HTTP con Python



Dentro de las bibliotecas de python, existen dos servidores web que podemos utilizar, con los cuales podemos servir archivos o ejecutar scripts de python.

La ventaja de usar estas bibliotecas es que no necesitamos escribir ninguna línea de código para establecer el servidor web y comenzar a servir archivos.

Servidor de archivos

Comenzaremos creando una carpeta donde el servidor web servirá los archivos:
 mkdir pythonServer 
 cd pythonServer 

Luego creamos una página, por ejemplo index.html
 nano index.html  

Colocamos dentro de la página algún código html

<html>
    <body>
        <h1>Sitio html</h1>
    </body>
</html>

Ahora lanzamos el servidor web en el puerto 8001 ejecutando el siguiente script de python que ya viene incluído en las bibliotecas:
 python -m SimpleHTTPServer 8001  

Si abrimos en un browser la url: http://localhost:8001/index.html veremos nuestra página web.

Servidor CGI (puede ejecutar scripts de python)

Crearemos una carpeta llamada cgi-bin en donde colocaremos las páginas web que en realidad son scripts de python (archivos .py)
 mkdir cgi-bin  

Ahora creamos el archivo index.py en donde devolveremos un texto html generado con python:
 nano cgi-bin/index.py  

Dentro del archivo index.py escribimos el siguiente código python:
 #! /usr/bin/env python  
 print("Content-Type: text/html")  
 print("")  
 import cgi  
 arguments = cgi.FieldStorage() #argumentos por GET o POST  
 print("<h1>Python script</h1>")  

Para lanzar el servidor web, deberemos ejecutar ahora un servidor web diferente:
 python -m CGIHTTPServer 8001  

Si ahora abrimos con nuestro browser la url: http://localhost:8001/cgi-bin/index.py se ejecutará nuestro script y veremos la página que devuelve.

Si queremos obtener los argumentos que la página puede recibir por GET o POST utilizamos la variable arguments de la siguiente manera:
 valor = arguments["nombreCampo"].value  

No hay comentarios:

Publicar un comentario en la entrada