Configurar Admin Sites en Apache2 con mod_python
Una vez desarrollado y testeado un sitio web, toca el despliegue en un servidor de producción. Desplegando uno de mis proyectos me encontré con que la administración que provee Django (Admin Sites) no cargaba ni CSS ni imágenes. Después de buscar un poco por la red he llegado a la siguiente solución (a mi parecer la más cómoda).
Supongamos que en settings.py disponemos de la siguiente configuración:
...
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = '/ruta/de/mi/proyecto/'
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = '/media/'
# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
# trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/admin/media/'
...
El fichero de configuración de Apache correspondiente sería similar a este:
<VirtualHost *:80>
ServerName midominio.com
ServerAdmin admin@midominio.com
DocumentRoot /ruta/de/mi/proyecto/
<Location "/">
PythonHandler django.core.handlers.modpython
SetHandler python-program
SetEnv DJANGO_SETTINGS_MODULE settings
PythonDebug Off
PythonPath "['/ruta/de/mi/proyecto/'] + sys.path"
</Location>
<Location "/admin/media">
SetHandler None
</Location>
<Location "/media">
SetHandler None
</Location>
Alias /media "/ruta/de/mi/proyecto/media/"
Alias /admin/media "/usr/share/pyshared/django/contrib/admin/media/"
LogLevel warn
CustomLog /ruta/de/logs/access.log combined
ErrorLog /ruta/de/logs/error.log
</VirtualHost>
Tags
La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.
