代码之家  ›  专栏  ›  技术社区  ›  unmounted

使用mod wsgi和django服务静态文件

  •  10
  • unmounted  · 技术社区  · 16 年前

    我有一个使用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 回复  |  直到 15 年前
        1
  •  13
  •   Graham Dumpleton    15 年前

    mod wsgi文档解释了如何设置静态文件,这些文件显示在安装wsgi应用程序的URL下。见:

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

    请注意,在使用wsgiscriptaalias指令装载wsgi应用程序时,不需要“options+execcgi”。只有在使用addhandler将应用程序作为资源装载时才需要“execcgi”选项。

        2
  •  17
  •   Van Gale    16 年前

    我在同一台服务器上运行了十几个django站点,下面介绍如何配置媒体URL。

    每个虚拟主机都有以下配置:

    Alias /media /path/to/media/
    <Directory /path/to/media>
        Include /etc/apache2/vhosts.d/media.include
    </Directory>
    

    这样,我可以在一个文件中对媒体处理进行任何更改。

    然后,my 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
    

    这对我很有效,而且 等级从 YSlow (也见 Jeff Atwood on YSlow )

    另请注意,对于根目录,我使用以下配置:

    WSGIScriptAlias / /path/to/app.wsgi
    <Directory /path/to>
        Options +ExecCGI
        Allow from all
    </Directory>
    

    …应该是什么 之后 配置文件中的别名/媒体(因为Apache按顺序查看别名)