Django静态文件托管Apache

时间:2011-04-15 22:07:17

标签: django apache static alias

我正在尝试移动一个Django站点,我一直在开发服务器阶段并进入真正的托管环境。目前,我只是在我的个人机器上托管。我已经安装了Apache和mod-wsgi,但是我遇到了获取静态文件的问题。我很确定它与Apache有关。这是我的网站配置文件:

<VirtualHost *:80>

    ServerName localhost
    ServerAlias daifotis.dyndns.org
    ServerAdmin webmaster@daifotis.com

    DocumentRoot /home/daifotis/code/

    Alias /media/ /home/daifotis/code/feris/sitestatic
    Alias /static/ /home/daifotis/code/feris/sitestatic
    #AliasMatch ^/([^/]*\.css) /home/daifotis/code/feris/sitestatic/$1

    <Directory /home/daifotis/code/feris/sitestatic>
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /home/daifotis/code/feris>
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /home/daifotis/code/feris/jobsite>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIDaemonProcess feris processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup feris

    WSGIScriptAlias / /home/daifotis/code/feris/apache/django.wsgi

    <Directory /home/daifotis/code/feris/apache>
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

我正在尝试托管我使用静态别名的目录中的文件。当我尝试加载网站时,所有内容都会出现但没有css。此外,当我点击我的网址www.server.com/static/时,页面会显示目录的正确内容。但我不明白的是,如果我点击链接查看文件,就会说URL不存在。我已经坚持了一段时间,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:41)

想出来。我在这行上遇到了apache配置错误:

Alias /static/ /home/daifotis/code/feris/sitestatic

我应该写没有尾部斜杠的静态。使用尾部斜杠,Apache不会扩展URL路径。

Alias /static /home/daifotis/code/feris/sitestatic

答案 1 :(得分:3)

我假设您正在使用Django 1.3,以及提供静态文件的“新”方式。您能否告诉我们settings.py文件中与MEDIA和STATIC相关的设置? ROOT和URL版本。同时显示您的STATICFILES_DIRS。

最可能的原因是Django仅配置为使用contrib.staticfiles提供静态文件。您可能需要运行管理命令python manage.py collectstatic以将所有应用程序静态文件收集到准备由apache提供的目录中。

有关使用django.contrib.staticfiles的设置,请参阅my answer here

如果您的静态文件100%存在于Alias /static/ /home/daifotis/code/feris/sitestatic所指向的目录中,那么您对apache的权限可能配置不正确。您是否检查了/var/log/httpd/error_log文件,以确定在尝试提供静态内容时是否存在IOPermissions错误?