python - carga - django styles
Apache no está sirviendo archivos django admin estáticos (3)
Creo que deberías cambiar:
Alias /media/ "/usr/lib/python2.6/site-packages/django/contrib/admin/media"
a:
Alias /static/admin/ "/usr/lib/python2.6/site-packages/django/contrib/admin/media"
Porque tú tienes:
ADMIN_MEDIA_PREFIX = ''/static/admin/''
Permítanme agradecerles a todos ustedes en la comunidad de Stack Overflow por ayudarme con varios errores de Django y Apache (con mod_wsgi). Hasta ahora, he preguntado acerca de 5 preguntas relacionadas y ahora estoy cada vez más cerca de sacar mi contenido en un sitio de producción.
Así que sé que hay muchas preguntas similares sobre esto y he leído un bunch of questions about serving files media static on Django .
Leí sobre STATIC_URL
, STATIC_ROOT
, el STATIC_ROOT
(que pronto quedará obsoleto) y estableciendo un Alias /media/ ...
en la configuración de Apache. Traté de probar cada solución una por una, pero no pude hacer que funcionara nada.
Así es como se ve mi sitio de administración en este momento
También estoy teniendo un caso raro donde cualquier subdominio funciona en mi servidor. Por ejemplo, estaba tratando de configurar mi servidor para que http://www.satoshi.example.com/ permitiera mi contenido normal (que no sea de Django), mientras que http://django.satoshi.example.com/ permitiría mi contenido de Django para ser servido. Pero actualmente cualquier subdominio, ya sea satoshi.example.com o blahblahasdas.satoshi.example.com, está sirviendo mis archivos Django (lo sé porque puedo ir a la página /admin
en ambos sitios, aunque estarán en diferentes sesiones).
De todos modos, aquí están mis archivos en el servidor que ejecuta CentOS
(no estoy seguro de qué versión), Apache 2.2.15
, Python 2.6.6
, django 1.3.1
y mod_wsgi 3.2
.
Voy a publicar lo que creo que es la configuración y los archivos más relevantes a continuación:
Apache lanza estos errores cada vez que reinicio
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [notice] SIGHUP received. Attempting to restart
[Wed Feb 29 00:45:36 2012] [error] Exception KeyError: KeyError(140249420548064,) in <module ''threading'' from ''/usr/lib64/python2.6/threading.pyc''> ignored
[Wed Feb 29 01:45:36 2012] [notice] Digest: generating secret for digest authentication ...
[Wed Feb 29 01:45:36 2012] [notice] Digest: done
[Wed Feb 29 01:45:36 2012] [warn] mod_wsgi: Compiled for Python/2.6.2.
[Wed Feb 29 01:45:36 2012] [warn] mod_wsgi: Runtime using Python/2.6.6.
[Wed Feb 29 01:45:36 2012] [notice] Apache/2.2.15 (Unix) mod_auth_pgsql/2.0.3 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips mod_wsgi/3.2 Python/2.6.6 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
Aquí está /var/www/html/mysite/apache/apache_django_wsgi.conf
que se carga en mi httpd.conf
con la opción NameVirtualHost *:80
<VirtualHost *:80>
ServerName django.satoshi.example.com
ErrorLog "/var/log/httpd/django_error_log"
WSGIDaemonProcess django
WSGIProcessGroup django
Alias /media/ "/usr/lib/python2.6/site-packages/django/contrib/admin/media"
<Directory "/usr/lib/python2.6/site-packages/django/contrib/admin/media">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
<Directory "/var/www/html/mysite">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
WSGIScriptAlias / "/var/www/html/mysite/apache/django.wsgi"
<Directory "/var/www/html/mysite/apache">
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Aquí está /var/www/html/mysite/apache/django.wsgi
import os
import sys
paths = [
''/var/www/html/mysite'',
''/var/www/html'',
''/usr/lib/python2.6/site-packages/'',
]
for path in paths:
if path not in sys.path:
sys.path.append(path)
os.environ[''DJANGO_SETTINGS_MODULE''] = ''mysite.settings''
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Y finalmente, aquí es parte de /var/www/html/mysite/settings.py
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''''
# Absolute path to the directory static files should be collected to.
# Don''t put anything in this directory yourself; store your static files
# in apps'' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, ''static'')
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = ''/static/''
# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = ''/static/admin/''
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don''t forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
''django.contrib.staticfiles.finders.FileSystemFinder'',
''django.contrib.staticfiles.finders.AppDirectoriesFinder'',
# ''django.contrib.staticfiles.finders.DefaultStorageFinder'',
)
Avíseme si necesitan otros archivos. ¡Gracias por adelantado!
Eso es porque no has configurado tus archivos STATIC ...
Agregar a la configuración:
STATIC_URL = ''/static/''
STATIC_ROOT = ''/var/www/static/''
Luego ejecuta "python manage.py collectstatic"
Eso pondrá todos los archivos bajo STATIC_ROOT que STATIC_URL servirá ... ¡No debe apuntar a Apache en sus archivos lib de Python!
Si también quieres tus propios archivos estáticos específicos de la aplicación, configura "STATICFILES_DIRS".
Obtuve la solución, miré los archivos access_log dentro de / var / log / httpd /
127.0.0.1 - - [28/Dec/2013:14:49:20 -0500] "GET /static/admin/css/login.css HTTP/1.1" 200 836 "http://127.0.0.1/admin/" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.24) Gecko/20111109 CentOS/3.6.24-3.el6.centos Firefox/3.6.24"
así que agregué las siguientes etiquetas en el archivo /etc/httpd/conf/httpd.conf,
Alias /static /usr/lib/python2.6/site-packages/django/contrib/admin/static
dentro de la etiqueta <VirtualHost 127.0.0.1:80>
luego reinicié el servicio usando
service httpd restart
y funciona !!!