Inicio Libros Tutoriales Eventos Foro Buscar
Libros / Python para principiantes / Captulo 13. Corriendo aplicaciones Python en la web
/ 13.2. Python bajo Apache
13.2. Python bajo Apache
Como si de una receta de cocina se tratara, vamos a aprender cmo servir aplicaciones
Web con Python, utilizando el servidor Apache.
No es mucha la bibliografa que puede encontrarse al respecto, pero s, lo es bastante
confusa y hasta incluso contradictoria. Por eso, en este curso, nos vamos a proponer
mantener el espritu de simplicidad de Python, encontrando la manera simple de
hacerlo.
13.2.1. Qu necesitamos?
En principio, necesitamos hacer que Apache, incorpore un soporte para servir archivos
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Python. Para ello, necesitaremos habilitarle un mdulo, que brinde este soporte.
Existen varios mdulos de Apache que brindan soporte para correr archivos Python. Uno
de los ms populares es el mdulo mod_python , que sin embargo, presenta algunos
problemas que pueden prevenirse, utilizando el mdulo mod_wsgi el cual utilizaremos
en este curso.
1) Instalacin de mod_wsgi en Apache
Para habilitar mod_wsgi en Apache, basta con instalar el paquete libapache2-mod-
wsgi :
sudo apt-get install libapache2-mod-wsgi
2) Crear la estructura de directorios para nuestra aplicacin
Primero, es importante saber, como va a funcionar nuestra aplicacin y cmo va a
interactuar va Web.
Debemos tener un directorio destinado a montar toda la aplicacin:
mkdir /home/yo/curso-python/trunk/python-web
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Dentro de este directorio, vamos a dividir su arquitectura en dos partes:
1. Destinada al almacenaje de nuestra aplicacin Python pura (ser un directorio
privado, no servido).
2. Destinada a servir la aplicacin (directorio pblico servido) en el cul solo
almacenaremos archivos estticos.
mkdir /home/yo/curso-python/trunk/python-web/mypythonapp
mkdir /home/yo/curso-python/trunk/python-web/public_html
Dentro de nuestro directorio mypythonapp , almacenaremos entonces, todos los
mdulos y paquetes de nuestra aplicacin Python, mientras que en public_html ,
estarn todos los archivos estticos y ser el nico directorio al que se pueda acceder
mediante el navegador Web.
Aprovecharemos este paso, para crear una carpeta, destinada a almacenar los logs de
errores y accesos a nuestra Web App:
mkdir /home/yo/curso-python/trunk/python-web/logs
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
3) Crear un controlador para la aplicacin
Todas las peticiones realizadas por el usuario (es decir, las URI a las cules el usuario
acceda por el navegador), sern manejadas por un nico archivo, que estar
almacenado en nuestro directorio mypythonapp .
echo '# -*- coding: utf-8 -*-' > mypythonapp/controller.py
Este archivo controller.py actuar como un pseudo front controller, siendo el
encargado de manejar todas las peticiones del usuario, haciendo la llamada a los
mdulos correspondientes segn la URI solicitada.
Dicho mdulo, solo se encargar de definir una funcin, que acte con cada peticin del
usuario. Esta funcin, deber ser una funcin WSGI aplicacin vlida. Esto significa
que:
1. Deber llamarse application
2. Deber recibir dos parmetros: environ , del mdulo os , que provee un diccionario
de las peticiones HTTP estndar y otras variables de entorno, y la funcin
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
de las peticiones HTTP estndar y otras variables de entorno, y la funcin
start_response , de WSGI, encargada de entregar la respuesta HTTP al usuario.
def application(environ, start_response):
# Genero la salida HTML a mostrar al usuario
output = "<p>Bienvenido a mi <b>PythonApp</b>!!!</p>"
# Inicio una respuesta al navegador
start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8'
)])
# Retorno el contenido HTML
return output
Ms adelante, veremos como crear un Application WSGI Controller, mucho ms potente.
4) Configurar el VirtualHost
En la buena configuracin de nuestro VirtualHost , estar la clave para correr nuestra
aplicacin Python a travs de la Web.
Mientras que el DocumentRoot de nuestro sitio Web, ser la carpeta pblica,
public_html , una variable del VirtualHost , ser la encargada de redirigir todas las
peticiones pblicas del usuario, hacia nuestro front controller. Y la variable que se
encargue de esto, ser el alias WSGIScriptAlias :
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
sudo nano /etc/apache2/sites-available/python-web
Una vez all, escribimos el contenido del nuevo virtual host:
<VirtualHost *:80>
ServerName python-web
DocumentRoot /home/yo/curso-python/trunk/python-web/public_html
WSGIScriptAlias / /home/yo/curso-python/trunk/python-web/mypythonapp/co
ntroller.py
ErrorLog /home/yo/curso-python/trunk/python-web/logs/errors.log
CustomLog /home/yo/curso-python/trunk/python-web/logs/access.log combin
ed
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Una vez configurado nuestro VirtualHost :
1. Habilitamos el sitio web: sudo a2ensite python-web
2. Recargamos Apache: sudo service apache2 reload
3. Habilitamos el sitio en nuestro host: sudo nano /etc/hosts y all agregamos la
siguiente lnea: 127.0.0.1python-web
A partir de ahora, si abrimos nuestro navegador Web e ingresamos la url http://python-
web veremos la frase: "Bienvenido a mi PythonApp".
NOTA
Agregar un nuevo hostname a nuestro /etc/hosts nos permitir seguir trabajando
normalmente con nuestro localhost , sin que nuestras aplicaciones Python
interfieran con otras, ya sean webs estticas en HTML o dinmicas en PHP u otro
lenguaje.
Anterior Siguiente
13.1. Introduccin 13.3. Utilizando environ para manejar peticiones
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
13.1. Introduccin 13.3. Utilizando environ para manejar peticiones
del usuario
Copyright (c) 2011-2013 Eugenia Bahit. La copia y redistribucin de esta pgina se permite bajo los trminos de
la licencia Creative Commons Atribucin NoComercial SinDerivadas 3.0 Unported siempre que se conserve esta
nota de copyright.
INDICE DE CONTENIDOS
1. Preparacin del entorno de desarrollo
2. Estructura y elementos del lenguaje
3. Mdulos, paquetes y namespaces
4. Funciones definidas por el usuario
5. Introduccin a la orientacin a objetos
6. Mtodos principales del objeto String
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
7. Mtodos principales del objeto list
8. Mtodos principales del objeto dict
9. El objeto File: trabajando con archivos
10. Un paseo por los mdulos de la librera estndar
11. Introduccin a MySQL y el lenguaje SQL
12. Bases de datos en Python con MySQL
Captulo 13. Corriendo aplicaciones Python en la web
13.1. Introduccin
13.2. Python bajo Apache
13.3. Utilizando environ para manejar peticiones del usuario
14. Enviando e-mails con formato HTML desde Python
3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad
das online
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com