Diferència entre revisions de la pàgina «WSGI»
Línia 28: | Línia 28: | ||
# Integració de Apache WSGI i Pylons: http://code.google.com/p/modwsgi/wiki/IntegrationWithPylons | # Integració de Apache WSGI i Pylons: http://code.google.com/p/modwsgi/wiki/IntegrationWithPylons | ||
# Una altra web interessant sobre WSGI: http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/ | # 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. | ||
+ | |||
+ | Per poder depurar els problemes de la nostra aplicació WSGI feu: | ||
+ | $ tail -f /var/log/apache2/error.log | ||
== Exercicis WSGI == | == Exercicis WSGI == |
Revisió del 20:20, 12 gen 2015
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:
- A Wikipedia: http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface
- Projecte a http://wsgi.org que et porta a http://wsgi.readthedocs.org/en/latest/
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).
- 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
- En distribucions derivades de Debian podem fer directament
- Configurant WSGI com a WebApp: http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide
- Configurant WSGI per executar arxius .wsgi o .py directament: http://ubuntuforums.org/showthread.php?t=833766
- Integració de Apache WSGI i Pylons: http://code.google.com/p/modwsgi/wiki/IntegrationWithPylons
- 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.
Per poder depurar els problemes de la nostra aplicació WSGI feu:
$ tail -f /var/log/apache2/error.log
Exercicis WSGI
Exercicis WSGI
- Instal·la mod_wsgi en una màquina virtual (per fer proves) i al teu AWS.
- 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
- 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/plaina text/html.
- 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.
- 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.
- Python: Pyramid framewor
- Buildout: un sistema per aïllar les llibreres necessàries per cada aplicació deles llibreries del sistema operatiu.