WSGI

De Cacauet Wiki
Salta a la navegació Salta a la cerca


Intro

WSGI (Web Server Gateway Interface) és una especificació per permetre els servidors web executar codi. En principi un servidor web només mostra documents HTML, i amb WSGI ampliem la seva funcionalitat. WSGI modernitza la especificació de CGI (Common Gateway Interface).

Referències:

Apache i WSGI

Pel servidor web Apache disposem bàsicament de dues opcions per executar codi Python:

  • mod_python: més antic
  • mod_wsgi: més modern, és el que es fa servir més ara

Ni en l'un ni en l'altre no podrem incrustar codi enmig de HTML com fem en altres llenguatges com PHP. Caldrà fer una funció "application" que serà el punt d'entrada del script i a partir d'allà executarem el codi.


WSGI són les inicials del Web Server Gateway Interface:


Els següents links ens permetran instal·lar i configurar la primera aplicació Python per Apache, i després també com aplicar-la en un projecte Pyramid (Pylons).

  1. Instal·lar Apache i WSGI: http://code.google.com/p/modwsgi/wiki/InstallationInstructions
    En distribucions derivades de Debian podem fer directament
    # apt-get install libapache2-mod-wsgi
  2. Configurant WSGI com a WebApp: http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
  3. Configurant WSGI per executar arxius .wsgi o .py directament: http://ubuntuforums.org/showthread.php?t=833766
  4. Integració de Apache WSGI i Pylons: http://code.google.com/p/modwsgi/wiki/IntegrationWithPylons
  5. Una altra web interessant sobre WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/


Depurant WSGI en Apache

Si esteu executant la vostra aplicació en Apache i hi teniu errors, us sortirà un Internal Server Error sense més, ja que en producció no es pot mostrar els errors al visitant per no revelar el funcionament intern (ens podria fer vulnerables).

Per poder depurar els problemes de la nostra aplicació WSGI feu:

$ tail -f /var/log/apache2/error.log

Exercicis WSGI

Exercicis WSGI

  1. Instal·la mod_wsgi en una màquina virtual (per fer proves) i al teu AWS.
  2. Configura WSGI amb una aplicació Hello World! ubicada a /helloworld
    L'arxiu .py o .wsgi pot estar on vulguis però millor el poseu a /var/www
  3. Configura WSGI per executar arxius .py o .wsgi
    Creeu una nova aplicació que generi una web amb tags HTML enlloc d'un simple "Hello world!".
    PISTA: penseu a canviar el "Content-Type" del header de text/plain a text/html.
  4. Agafa l'aplicació WSGI Hello World! vista aquí i llista totes les variables d'entorn.
    PISTA: la variable environ que apareix a la funció és un diccionari amb totes les variables d'entorn.
  5. Exercici optatiu: intenta descodificar els paràmetres GET que ens arriben en la variable QUERY_STRING.
    PISTA: utilitza les funcions parse_qs i escape (de la CGI lib) que es poden veure a aquest exemple ("Extended Hello World").


Referències vàries

WSGI sol utiltizar-se típicament en frameworks Python com Django, Pylons, Pyramid i servidors web com Gunicorn.