[Spanish] Cómo desplegar Django 1.5 en Apache con mod_wsgi, en Ubuntu 13.04

En este post voy a mostrarles como desplegar una aplicación web hecha con Django 1.5 (usando Python 2.7 y virtualenv), en un servidor web Apache (versión 2.2), en Ubuntu 13.04

En mi caso mi aplicación se llama visor y quisiera acceder a él usando la URL visor.local

1) Instalar el módulo mod_wsgi de Apache

sudo apt-get install libapache2-mod-wsgi

2) Reiniciar Apache para que cargue el módulo

sudo service apache2 restart

3) Verificar que el módulo se ha cargado y está habilitado

apache2ctl -M

En la lista resultante deberíamos observar algo como

wsgi_module (shared)

4) Crear el archivo de configuración en sites-available

cd /etc/apache2/sites-available
cp default visor
sudo vim visor
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName visor.local
    ServerAlias visor
    DocumentRoot /var/www/visor/

    #La carpeta collected es donde almaceno todos los assets procesados 
    #con el comando "python manage.py collectstatic". Esta carpeta está
    #definida en la variable STATIC_ROOT en settings.py
    Alias /static/ /var/www/visor/collected/
    <Directory /var/www/visor/collected>
        Order deny,allow
        Allow from all
    </Directory>

    #En el path defino tanto la ruta de mi app como la de mi 
    #entorno virtual (virtualenv)
    WSGIDaemonProcess visor python-path=/var/www/visor:/home/david/.python-env/visor/lib/python2.7/site-packages
    WSGIProcessGroup visor
    WSGIScriptAlias / /var/www/visor/visor/wsgi.py

    <Directory /var/www/visor/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

5) Activo el nuevo sitio: Ejecuto el siguiente comando dentro de la misma carpeta sites-available

a2ensite visor

6) Modifico el archivo de hosts

sudo vim /etc/hosts
127.0.0.1   localhost
127.0.1.1   silicio
127.0.0.1   visor.local

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

7) Reinicio el Apache

sudo service apache2 restart

Y listo, ya podemos ir a nuestro navegador web e ingresar la dirección visor.local y deberíamos ver nuestra aplicación funcionando.

So, what do you think?

This site uses Akismet to reduce spam. Learn how your comment data is processed.