权限被拒绝 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] 权限被拒绝