开发者

Apache only serves first level of Django static files directory

开发者 https://www.devze.com 2023-04-03 20:46 出处:网络
I have a site I made with Django, and I\'m trying to deploy it on an Apache server I have lying around (using mod_wsgi as recommended by the official docs) and for the most part, everything\'s going g

I have a site I made with Django, and I'm trying to deploy it on an Apache server I have lying around (using mod_wsgi as recommended by the official docs) and for the most part, everything's going great. I am having a problem getting Apache to correctly serve the static files associated with my project. Judging by comparing the source of the rendered HTML with my server's file structure, I would say that my app is requesting the right files from the right locations, but for whatever reason Apache throws me a 404. Here's my config for apache:

<VirtualHost *:80>
    ServerName book
    ServerAlias www.book.dev book.dev

    DocumentRoot /var/www/book


    Alias   /static/        /var/www/book/static
    Alias   /media/         /var/www/book/media

    <Directory /var/www/book/static>
            Order deny,allow
            Allow from all
    </Directory>

    WSGIScriptAlias / /home/rich/sites/book/apache/django.wsgi

    <Directory /home/rich/sites/book>
            Order allow,deny
开发者_如何学JAVA            Allow from all
    </Directory>

</VirtualHost>

If I navigate to STATIC_ROOT in my web browser (in this case www.book.dev/static) I see a (correct) listing of the first level in the directory structure on the server. However, trying to follow the links to sub-directories, or even files in the root directory, yields only a 404. I'm using Django 1.3, Python 2.6, and some version of apache in the 2.X range (whatever is the most recent version in debian's package repo)

Any help is appreciated.

EDIT: (The plot thickens!)

So, after fiddling some more, I found something that I thought was interesting. I discovered that if I run the development server, the URL's from which static content is fetched are identical to the static file URL's which are generated when Apache is serving the files. This is to say, they all take the form /static/<file> as configured in settings.py, but sometimes it doesn't work.


Try having:

Alias   /static/        /var/www/book/static/
Alias   /media/         /var/www/book/media/

If using trailing slashes for a sub URL, the target file system path should have a trailing slash as well.

Compare to documentation at:

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files


Please double check your settings.py. Look for commas and logic of directory structure. Especially about STATIC_ROOT and MEDIA ... dirs. Problems are often not where they came from.

And you can create a symink to apache dir... and take it to where it was on your project at dev file structure... Try it may show your errors in templates if they exist...

0

精彩评论

暂无评论...
验证码 换一张
取 消