Nota: Por el momento mi proceso lo realice utilizando las versiones de 32 bits, indicare datos adicionales de versiones en cada paso que haya utilizado.
PASO 1: Instalar MySQL (versión 5 de 32 bits)
Descargando el instalador desde el sitio de Oracle, es probable que sea necesario que se registren.
PASO 2: Instalar Python (versión 2.7 de 32 bits)
Es importante configurar las variables de entorno para que desde la consola en cualquier lugar podamos utilizar solo la palabra python para ejecutar.
PASO 3: Instalar Python-MySQLdb (32 bits)
Se puede probar si quedo instalado entrando en python y utilizando:
>>> import MySQLdb
Si no hay errores quiere decir que vamos bien, en caso de que tengan problemas con la instalación de este módulo pueden seguir este post:
http://omaryahir.blogspot.mx/2012/10/python-y-mysql-en-os-x-mountain-lion.HTML
PASO 4: Instalar Django (versión 1.4.3 )
Se puede probar que funciona django entrando a Python y usando:
>>> import Django
Si no hay errores vamos bien :)
PASO 5: Instalar Apache (httpd-2.2.22-win32-x86-openssl-0.9.8t.msi)
Lo descargue de esta dirección:
http://apache.webxcreen.org//httpd/binaries/win32/
Una forma rápida de verificar que funciono es abrir en el navegador el sitio
http://localhost, en mi caso lo instale en el puerto 80.
PASO 6: Descargar mod_wsgi (versión 3.3)
Se debe descargar del sitio
http://code.google.com/p/modwsgi/
Obtendremos un archivo de extensión .so este archivo debemos copiarlo al directorio modules de nuestra instalación de Apache (En mi caso C:\Program Files (x86)\Apache Software Foundation\Apache2.2\modules).
Para mayor comodidad renombramos el archivo que probablemente se encuentre con este nombre: mod_wsgi-win32-ap22py27-3.3.so, lo cambiamos por mod_wsgi.so nada mas.
Ahora bien es importante elegir un directorio para nuestras aplicaciones mod_wsgi, en mi caso yo hice uno en C:\wsgi_app\
PASO 7: Cargar el modulo mod_wsgi
Para este proceso es necesario localizar el arhivo - httpd.conf - usualmente se encuentra dentro del directorio /conf/ de la instalación de Apache (En mi caso lo encontre en: C:\Program Files (x86)\Apache Group\Apache2\conf).
Una vez abierto con cualquier editor de textos en mi caso uso Sublime, localizar "LoadModule" al encontrar dicho texto nos daremos cuenta que es la instrucción que utiliza Apache para cargar sus módulos; agregaremos una instrucción similar al final de estas sentencias de LoadModule quedando de la siguiente forma:
----
LoadModule wsgi_module modules/mod_wsgi.so
----
NOTA: Es probable que necesites editar el archivo en otro lugar y luego copiarlo al directorio en caso de que tengas restringido la modificación de archivos en el directorio donde se instaló el Apache.
PASO 8: Agregando en el archivo httpd.conf el WSGIScriptAlias
Dentro del archivo que abrimos en el paso anterior - httpd.conf - localizaremos la palabra Directory después del bloque
< Directory / > agregaremos lo siguiente:
----
# Config mod_wsgi
WSGIScriptAlias /wsgi "C:/wsgi_app/wsgi_handler.py"
< Directory "C:/wsgi_app" >
AllowOverride None
Options None
Order deny,allow
Allow from all
< / Directory >
----
Lo anterior quiere decir que accederemos a los sitios que coloquemos en el directorio que creamos utilizando por ejemplo:
http://localhost/wsgi
Ahora probaremos si quedo instalado correctamente el wsgi, creamos el archivo: wsgi_handler.py con el siguiente contenido:
def application(environ, start_response):
status = "200 OK"
output = "Funciono !!!"
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
Una vez realizado lo anterior debemos reiniciar nuestro servidor Apache, lo cual podemos realizarlo desde el Apache Monitor, Si al reiniciar no hubo errores estamos del otro lado... :D
Algunos errores que me pasaron a mi:
- Use la versión 2.0 de Apache en un principio y no quizó cargar el archivo: mod_wsgi.so
- Otro error que tuve es que no le cambie el nombre al archivo por lo que no lo encontraba.
Bien, si no hubo errores vamos al navegador y colocamos:
http://localhost/wsgi/
Si ves el mensaje que dice Funciono !!!, entonces que crees... Funciono :)
PASO 9: Ahora si poniendo nuestro proyecto de Django
Hasta el paso anterior tenemos un servidor que tiene activado mod_wsgi y puede ejecutar archivos de python. Entonces ahora para colocar nuestros proyectos de Django regresaremos al archivo httpd.conf y vamos agregar otro directorio:
----
# MiProyecto
WSGIScriptAlias / "c:/wsgi_app/miproyecto/miproyecto/wsgi.py"
WSGIPythonPath "c:/wsgi_app/miproyecto"
< Directory "c:/wsgi_app/miproyecto" >
< Files wsgi.py >
Order deny,allow
Allow from all
</Files >
< /Directory >
----
Hasta aquí es probable que el proyecto funcione correctamente pero tendremos el detalle con los archivos estáticos por lo que agregamos lo siguiente:
----
Alias /static/ "c:/wsgi_app/miproyecto/static/"
----
#### ACTUALIZACION 15 FEB 2013
Me di cuenta de que si no se tienen los permisos correctos no se cargaran los archivos estáticos, por lo que se deben tener los permisos necesarios y además modificar el archivo httpd.conf quedando de la siguiente forma:
----
Alias /static/ "c:/wsgi_app/miproyecto/static/"
< Directory "C:/wsgi_app/miproyecto/static/" >
SetHandler None
Order allow,deny
Allow from all
< /Directory >
----
Guardamos y reiniciamos.
Con lo anterior todo debe funcionar ya nadamas recuerda cambiar la variable DEBUG = False en el archivo settings.py
Casi lo olvido:El Administrador de Django tiene sus propios archivos estaticos y los busca en "/static/admin/" por lo que de acuerdo a lo que nos recomiendan en el sitio de Django:
"We strongly recommend using django.contrib.staticfiles to handle the admin files"
Una de las sugerencias es copiar los archivos a nuestro directorio por lo que en mi caso lo que hice fue copiar de:
"C:/Python27/Lib/site-packages/django/contrib/admin/static/admin/"
Al directorio donde tengo mis archivos estaticos:
"c:/wsgi_app/miproyecto/static/"
Con lo anterior el sitio de administración debe tomar los archivos estaticos.
Espero te sea de utilidad !
Referencias:
http://stackoverflow.com/questions/3777678/apache-mod-wsgi-django-setup-forbidden-you-dont-have-permission-to-access-my
http://pradyumnajoshi.wordpress.com/2009/06/09/setting-up-mod_wsgi-for-apache-and-django-on-windows/
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/