unm*_*ted 10 python django mod-wsgi mod-python
我有一个使用mod_python的django应用程序,相当典型的配置,除了媒体文件由文档根目录中的(我知道,不推荐)'media'目录提供服务.我想测试并使用mod_wsgi进行部署,但我无法弄清楚如何创建简单的服务静态文件.mod_python允许使用Apache指令,如:
<Location '/'>
SetHandler MyApplication.xyz.....
</Location>
<Location '/media'>
SetHandler None
</Location>
Run Code Online (Sandbox Code Playgroud)
django文档似乎指向上面的第二个块作为为mod_wsgi制作类似异常的正确方法,但在我的测试中,根目录下的所有内容仍然被发送到wsgi应用程序.是否有一个很好的方法用mod_wsgi设置一个静态媒体目录,或者我是否因为技术原因而故意不支持?欢迎指出完全不同的方法的答案.
Van*_*ale 17
我在同一台服务器上运行了十几个Django站点,这是我配置媒体URL的方式.
每个VirtualHost都具有以下配置:
Alias /media /path/to/media/
<Directory /path/to/media>
Include /etc/apache2/vhosts.d/media.include
</Directory>
Run Code Online (Sandbox Code Playgroud)
这样我就可以在一个文件中对媒体处理进行任何更改.
然后,我的media.include文件如下所示:
Order allow,deny
Allow from all
SetHandler None
FileETag none
Options FollowSymLinks
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 30 days"
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/jpeg "access plus 30 days"
ExpiresByType text/css "access plus 30 days"
ExpiresByType application/x-javascript "modification plus 2 years"
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept-Encoding
</IfModule>
AddOutputFilterByType DEFLATE text/html text/css text/plain
Run Code Online (Sandbox Code Playgroud)
这对我来说非常有效,并从YSlow获得A等级(在YSlow上也见到Jeff Atwood).
另请注意,对于根目录,我使用以下配置:
WSGIScriptAlias / /path/to/app.wsgi
<Directory /path/to>
Options +ExecCGI
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
...应该在配置文件中的Alias/media 之后(因为Apache按顺序查看别名)
Gra*_*ton 13
mod_wsgi文档解释了如何设置静态文件,这些文件出现在安装了WSGI应用程序的URL下面.看到:
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#Hosting_Of_Static_Files
请注意,使用WSGIScriptAlias指令安装WSGI应用程序时不需要"Options + ExecCGI".只有在使用AddHandler将应用程序作为资源挂载时,才需要"ExecCGI"选项.
| 归档时间: |
|
| 查看次数: |
16614 次 |
| 最近记录: |