我有一个使用mod_python的django应用程序,相当典型的配置,除了媒体文件由文档根目录中的(我知道,不推荐)'media'目录提供服务 . 我想测试并使用mod_wsgi进行部署,但我无法弄清楚如何创建简单的服务静态文件 . mod_python允许使用Apache指令,如:
<Location '/'>
SetHandler MyApplication.xyz.....
</Location>
<Location '/media'>
SetHandler None
</Location>
django文档似乎指向上面的第二个块作为为mod_wsgi制作类似异常的正确方法,但在我的测试中,根目录下的所有内容仍然被发送到wsgi应用程序 . 是否有一个很好的方法用mod_wsgi设置一个静态媒体目录,或者我是否因为技术原因而故意不支持?欢迎指出完全不同的方法的答案 .
2 回答
mod_wsgi文档解释了如何设置静态文件,这些文件出现在安装了WSGI应用程序的URL下面 . 看到:
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files
请注意,使用WSGIScriptAlias指令安装WSGI应用程序时不需要“Options ExecCGI” . 只有在使用AddHandler将应用程序作为资源挂载时,才需要“ExecCGI”选项 .
我在同一台服务器上运行了十几个Django站点,这就是我配置媒体URL的方法 .
每个VirtualHost都具有以下配置:
这样我就可以在一个文件中对媒体处理进行任何更改 .
然后,我的media.include文件如下所示:
这对我来说非常有效,并从YSlow获得 A 等级(另见Jeff Atwood on YSlow) .
另请注意,对于根目录,我使用以下配置:
...应该是 after 配置文件中的Alias / media(因为Apache按顺序查看别名)