权限被拒绝 django 静态文件

Posted

技术标签:

【中文标题】权限被拒绝 django 静态文件【英文标题】:permision denied django static files 【发布时间】:2016-06-15 07:27:38 【问题描述】:

今天我在部署 django 项目 + apache2 mod_wsgi 时遇到了一些问题

让我们澄清一些事实: 1. 这不是我的第一次部署 2. 站点响应 mod_wsgi 3.“静态”文件夹有777个参数,包括文件和文件夹

我的虚拟主机是这样的

<VirtualHost *:80>
    ServerName myproject.com
    AddDefaultCharset UTF-8
    ServerAdmin webmaster@myproject.com
    ServerAlias www.myproject.com   
    DocumentRoot /home/ilyas/open.tm/bin/myproject/

    WSGIScriptAlias / /home/ilyas/open.tm/bin/myproject/myproject/index.wsgi

    <Directory /home/ilyas/open.tm/bin/myproject>
        Order deny,allow  
        Require all granted
    </Directory>

    Alias /static/ /home/ilyas/open.tm/bin/myproject/static/

    <Directory /home/ilyas/open.tm/bin/myproject/static>
        Order allow,deny
        Require all granted
    </Directory>
</VirtualHost>

我的 index.wsgi 看起来像这样:

import os
import sys
import site

# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('~/.virtualenvs/open.tm/local/lib/python2.7/site-packages')

# Add the app's directory to the PYTHONPATH
sys.path.append('/home/ilyas/open.tm/bin')
sys.path.append('/home/ilyas/open.tm/bin/myproject')
sys.path.append('/home/ilyas/open.tm/bin/myproject/static')
sys.path.append('/home/ilyas/open.tm/bin/myproject/myproject')

# Activate your virtual env
activate_env=("/home/ilyas/open.tm/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))

from django.core.wsgi import get_wsgi_application

os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'
application = get_wsgi_application()

我的 settings.py 的最后文件部分

STATIC_URL = '/static/'
MEDIA_URL = '/media/'

STATICFILES_DIRS = (
    'static', '/home/ilyas/open.tm/bin/myproject/static/',
    'media', '/home/ilyas/open.tm/bin/myproject/media/',
)

MEDIA_ROOT = os.path.join(BASE_DIR, "static/")

网站运行良好,我可以浏览页面,我可以访问后台管理,我可以通过后台添加记录...但是 STATIC 文件或不加载“您没有访问 /static/image.png 的权限在这台服务器上。”

Django = 1.9.2 阿帕奇 = 2.4.7

【问题讨论】:

当您尝试访问其中一个静态文件时,apache 的错误日志说明了什么? apache用户是否有权限读取文件? [2016 年 3 月 2 日星期三 12:38:55.358349] [access_compat:error] [pid 32385] [client 94.102.184.31:28078] AH01797:客户端被服务器配置拒绝:/home/ilyas/open .tm/bin/myproject/static/img/system/logo-flag.png 【参考方案1】:

根据文档:

https://httpd.apache.org/docs/2.4/upgrading.html

这在 2.4 中不需要:

Order allow,deny

尝试删除它?

【讨论】:

伙计,我一直在考虑它,但我认为如果规则不起作用,那么它就会被忽略......但事实上,这条规则占用了我 4 个小时的生命和更多的头发头:-) 我很高兴就是这样!你不是唯一一个 2.4 花了几个小时...

以上是关于权限被拒绝 django 静态文件的主要内容,如果未能解决你的问题,请参考以下文章

Django OSError:[Errno 13] 权限被拒绝

如何解决拒绝访问 aws s3 文件?

由于静态文件收集原因,Heroku 拒绝推送

上传文件时Django的权限被拒绝错误

GitLab 错误消息 - 权限被拒绝(公钥) - Bitnami

在 vagrant 的 Django 应用程序中创建迁移文件夹的权限被拒绝