【问题标题】:issue in loading static contents in django1.3+mod_wsgi+apache2在 django1.3+mod_wsgi+apache2 中加载静态内容的问题
【发布时间】:2012-01-17 08:53:51
【问题描述】:

当我尝试在我的本地 apache 服务器 (apache2+mod_wsgi) 中部署静态文件 (Django1.3) 时遇到问题,问题仅针对静态内容 其他部分没问题[它在开发服务器中工作]。

我的项目现在在 Ubandu 桌面的“testcloud”文件夹中,我的项目 名称是 DjangoApis,以下是我的项目结构: 桌面->testcloud:

DjangoApis
        ...
         mywebapp
                static
                templates
                templatetags
                urls.py
                views.py
         myapis
              .....
Settings.py
STATIC_ROOT = '/home/jisson/Desktop/testcloud.aws/DjangoApis/
teststaticfiles/'
 STATIC_URL = '/static/'

TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.media",
"django.core.context_processors.static",
)

TEMPLATE_DIRS = (
       os.path.join(os.path.dirname(__file__),'templates').replace('\
\','/'),
)
INSTALLED_APPS = (
   'DjangoApis.mywebapp',
   'DjangoApis.myapis',
)
STATICFILES_DIRS = (
     os.path.join(os.path.dirname(__file__),'static').replace('\
\','/'),
)
STATICFILES_FINDERS = (
   'django.contrib.staticfiles.finders.FileSystemFinder',
   'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

/etc/apache2/sites/enabled/DjangoApis:

Alias /favicon.ico /home/jisson/Desktop/testcloud.aws/DjangoApis/
static/favicon.ico
AliasMatch ^/([^/]*\.css) /home/jisson/Desktop/testcloud.aws/
DjangoApis/static/styles/$1
Alias /static/ /home/jisson/Desktop/testcloud.aws/DjangoApis/static/
<Directory /home/jisson/Desktop/testcloud.aws/DjangoApis/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /home/jisson/Desktop/testcloud.aws/DjangoApis/
django.wsgi

apache 错误日志:

tail /var/log/apache2/error.log
[Sat Dec 10 03:16:36 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticjs,
referer: http://test.webapp/
[Sat Dec 10 03:16:36 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticjs,
referer: http://test.webapp/
[Sat Dec 10 03:16:36 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticjs,
referer: http://test.webapp/
[Sat Dec 10 03:16:36 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticjs,
referer: http://test.testapp/
[Sat Dec 10 03:16:45 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticimages,
referer: http://test.webapp/
[Sat Dec 10 03:16:45 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticimages,
referer: http://test.webapp/
[Sat Dec 10 03:16:45 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticimages,
referer: http://test.webapp/
[Sat Dec 10 03:16:45 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticimages,
referer: http://test.webapp/
[Sat Dec 10 03:16:45 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticimages,
referer: http://test.webapp/
[Sat Dec 10 03:16:45 2011] [error] [client 127.0.0.1] File does not
exist: /home/jisson/Desktop/testcloud.aws/DjangoApis/staticimages,
referer: http://testwebapp/

萤火虫的错误日志:

test.webapp (line 62)
"NetworkError: 404 NOT FOUND - http://test.webapp/css/styles/index.css/"
/css/s...ex.css/
"NetworkError: 404 Not Found - http://test.webapp/static/images/logo.jpg"
logo.jpg
"NetworkError: 404 Not Found - http://test.webapp/static/images/line.jpg"
line.jpg
"NetworkError: 404 Not Found - http://test.webapp/static/images/banner_phone.jpg"
.........................

注意我使用了 collectstatic 命令。 请帮我解决问题,谢谢。

【问题讨论】:

  • @Nagisa,我不知道为什么会这样,现在模板的方式是 {{STATTIC_URL}}css/styles/index.css,我也试过 {{STATTIC_URL}}/css/styles ,它也会产生同样的错误。
  • 现在我的静态文件和模板在app里面,而不是在项目的根目录下。会不会有什么问题?
  • 我解决了这个问题,因为我在 apache config 中映射静态文件目录时犯了一个错误
  • 好吧,然后我移动我的 cmets 来回答。接受它,这样问题就会显示为已解决。

标签: django apache static mod-wsgi django-1.3


【解决方案1】:

仔细观察,Apache 会尝试从 /home/jisson/Desktop/testcloud.aws/DjangoApis/staticjs 加载文件,而不是像您想要的那样从 /home/jisson/Desktop/testcloud.aws/DjangoApis/static/js 加载文件。

如果文件被 collectstatic 命令正确收集(运行该命令后它们出现在 STATIC_ROOT 目录中),那么问题不在 Django 端,而是在 Apache,所以你应该检查你的 Apache 配置文件。

【讨论】:

    猜你喜欢
    • 2011-11-21
    • 2017-02-18
    • 2011-07-29
    • 1970-01-01
    • 2017-03-25
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多