Opened 13 years ago
Closed 13 years ago
#18591 closed Cleanup/optimization (worksforme)
Missing crucial info in Apache conf (httpd.conf) to serve static files
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Documentation | Version: | 1.4 |
| Severity: | Normal | Keywords: | Apache, mod-wsgi, uWSGI, Static, Media |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Your page: https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/
To get Apache to be able to serve files statically, the handler (mod-wsgi, or uWSGI) must be disabled for those folders. So, you need another directive under the ones you list, that looks like this:
<Location /static>
SetHandler default-handler
</Location>
I believe the /static location directive must occur after the / Location directive to turn the handler off correctly.
This allows the request to be caught by Apache rather than uWSGI, and redirected to the static file folder.
Also, the line:
Alias /static/ /usr/local/wsgi/static/
Should actually look like this:
Alias /static /usr/local/wsgi/static/
Without the trailing slash on the alias.
Change History (5)
comment:1 by , 13 years ago
comment:2 by , 13 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:3 by , 13 years ago
For 1.4/master the page to change is now this one: https://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/modwsgi/
comment:4 by , 13 years ago
I'm not an expert in Apache configuration, but I'm not sure this ticket is valid, or at least there's some clarification that needs to be added. I have Django mod_wsgi sites that serve static files just fine using what's currently in the docs. In fact, the suggestion seems to contradict the mod_wsgi docs:
Note that there is never a need to use SetHandler to reset the Apache content handler back to 'None' for URLs mapped to static files. That this is a requirement for mod_python is a short coming in mod_python, do not do the same thing for mod_wsgi.
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting%5FOf%5FStatic%5FFiles
comment:5 by , 13 years ago
| Resolution: | → worksforme |
|---|---|
| Status: | new → closed |
Quotation added by Timo explains why the Location directive seems not necessary.
About the Alias issue, here is what Apache2 docs have to say:
Note that if you include a trailing / on the URL-path then the server will require a
trailing / in order to expand the alias. That is, if you use
Alias /icons/ /usr/local/apache/icons/
then the url /icons will not be aliased, as it lacks that trailing /. Likewise, if
you omit the slash on the URL-path then you must also omit it from the file-path.
http://httpd.apache.org/docs/current/en/mod/mod_alias.html#alias
So both are possible and produce slightly different behaviour when the request is exactly "/static", which appears to be a corner case anyway (and if APPEND_SLASH is True, that will probably redirect to "/static/"). I think that the slash-ending version will suit most configurations very well and I suggest to not change it.
Replying to rschuon@…:
That's incorrect. It should have the slash. Read up on mod_speling if you want a directory listing without having to type an extra slash, but the correct way is to map the trailing slash to the directory.