Django - 已部署,403为静态但它应该有权限,wsgi + Apache

时间:2017-05-05 10:41:17

标签: python django apache

我部署的Django项目无法访问静态文件,在Chrome中进行检查时,我得到403。

我将以下内容添加到我的000-default.conf中,其中我还有WSGIScriptAlias等:

Alias /static/ /home/budget/static/deploy/
<Directory /home/budget/static/deploy>
Required all granted
</Directory/

静态文件存在于budget / static / deploy文件夹中。这不应该提供所需的权限吗?我需要改变什么才能摆脱403?

它在Ubuntu 16.04上运行。

编辑:

settings.py:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    #os.path.join(BASE_DIR, 'budget/static'),
    os.path.join(BASE_DIR, "static"),
    )

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

1 个答案:

答案 0 :(得分:0)

可能会有一些不同的因素导致您的配置无法正常工作。首先,我会确保您确实正在修改正确的Apache配置文件。您可以运行此命令来检查:

/usr/sbin/apachectl -V | grep SERVER_CONFIG_FILE | awk '{split($0,a,"="); print a[2]}' | sed s/\"//g

然后,要通过WSGI将其他API请求委托给django,您还应该为wsgi文件提供正确的权限(这可能不是绝对需要静态服务才能工作):

<Directory /path/to/django/project/project>
   <Files wsgi.py>
       Require all granted
   </Files>
</Directory>

接下来,设置Apache使用的流程信息以及项目的绑定URL。

WSGIDaemonProcess myproject python-path=/path/to/django/project python-home=/path/to/your/venv
WSGIProcessGroup mydjangoproject
WSGIScriptAlias /binding/url /path/to/django/project/project/wsgi.py

最后,您可能需要设置一些权限以允许www-data读取您的媒体和静态文件,您应该全部设置。不要忘记重启Apache以应用修改。