Hoy me ví en la necesidad de montar un servidor de producción para Django sobre Windows. Los que me conocen ya saben que no me gusta demasiado trabajar sobre este sistema operativo y que prefiero un hosting como Webfaction que me permite trabajar comodamente sobre Linux. Pero hay veces que nos toca cargar con el muerto y hacerlo correr sobre un Windows, así que me puse manos a la obra.
Advertencia
Antes de nada quiero advertiros que esta configuración usa SQLite como base de datos. Esto nos viene muy bien porque es muy fácil de configurar y de gestionar mediante un único fichero, pero no es la base de datos adecuada si la aplicación debe soportar mucha carga.
Instalación de Software
- Python – Versión 2.5.2
- Apache – Versión 2.2.9 sin SSL
- Mod_Python – Versión 3.3.1
- Subversion – Versión 1.4.6
Modificar la variable Path
Debemos modificar la variable Path de Windows. Para ello hacemos click derecho sobre Mi PC, Propiedades, Opciones Avanzadas, Variables de Entorno y editar la variable Path añadiendo C:\Python25;C:\Python25\Scripts\
Configurar Apache
Editamos el archivo \Apache2.2\conf\httpd.conf:
#Añadimos el soporte para python LoadModule python_module modules/mod_python.so #Copiamos este fragmento al final de httpd.conf SetHandler python-program PythonPath "['C:\dj-sites'] + sys.path" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE proyecto.settings PythonDebug Off Order allow,deny Allow from all Alias /media/ C:/dj-sites/media/ SetHandler None
Reiniciamos el servidor mediante el icono de Apache en la barra del sistema.
Instalar Django
Descargamos la rama de desarrollo NewForms-Admin mediante el comando:
C:\svn co http://code.djangoproject.com/svn/django/branches/newforms-admin/ django_nfaInstalamos Django mediante el comando:
C:\django_nfa>python setup.py installAhora solo tenemos que copiar la aplicación deseada a C:\dj-sites\ y configurar el archivo settings.py para que utilice la base de datos SQLite.
import os.path</code> DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = os.path.join(os.path.dirname(__file__), 'data.db').replace('\\','/')