Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Apache not serving django admin static files

Let me thanks you guys at the Stack Overflow community for helping me with various Django and Apache (with mod_wsgi) errors. I've asked about 5 related questions so far and now I'm getting closer and closer to getting my content out on a production site!

So I know there are many similar questions about this and I have read a bunch of questions about serving static media files on Django.

I read about STATIC_URL, STATIC_ROOT, the (soon to be obsolete) ADMIN_MEDIA_PREFIX, and setting a Alias /media/ ... in the Apache configuration. I tried to test out each solution one by one, but I couldn't get anything working.

Here is what my admin site looks like right now

I'm also having a weird case where any subdomain works on my server. For example I was trying to set up my server so that http://www.satoshi.example.com/ would allow my normal (non-Django) content, while http://django.satoshi.example.com/ would allow my Django content to be served. But currently any subdomain, whether satoshi.example.com or blahblahasdas.satoshi.example.com is serving my Django files (I know because I can go to the /admin page on both site, although they will be in different sessions).

Anyway here are my files on the server which is running CentOS (not sure which version), Apache 2.2.15, Python 2.6.6, django 1.3.1, and mod_wsgi 3.2.

I will post what I think is the most relevant files and configuration below:

Apache throws these errors everytime I restart

[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 

Here is /var/www/html/mysite/apache/apache_django_wsgi.conf which gets loaded into my httpd.conf with the option 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> 

Here is /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() 

And finally here is part of /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', ) 

Let me know if you guys need any other files. Thanks in advance!

like image 513
hobbes3 Avatar asked Feb 29 '12 14:02

hobbes3


People also ask

How do I serve static files in Django?

Configuring static files Make sure that django.contrib.staticfiles is included in your INSTALLED_APPS . In your templates, use the static template tag to build the URL for the given relative path using the configured STATICFILES_STORAGE . Store your static files in a folder called static in your app.

Where is Django looking for static files?

Using the collectstatic command, Django looks for all static files in your apps and collects them wherever you told it to, i.e. the STATIC_ROOT . In our case, we are telling Django that when we run python manage.py collectstatic , gather all static files into a folder called staticfiles in our project root directory.

Which app must install the for use of static file in Django?

django. contrib. staticfiles collects static files from each of your applications (and any other places you specify) into a single location that can easily be served in production.

What is {% load static %} in Django?

The {% static %} template tag generates the absolute URL of static files. That's all you need to do for development. Reload http://localhost:8000/polls/ and you should see that the question links are green (Django style!) which means that your stylesheet was properly loaded.


1 Answers

I think you should change:

Alias /media/ "/usr/lib/python2.6/site-packages/django/contrib/admin/media" 

to:

Alias /static/admin/ "/usr/lib/python2.6/site-packages/django/contrib/admin/media" 

Because you have:

ADMIN_MEDIA_PREFIX = '/static/admin/' 
like image 51
jpic Avatar answered Sep 21 '22 04:09

jpic