elastic beanstalk - 应用程序返回 403 not found 静态文件错误

Posted

技术标签:

【中文标题】elastic beanstalk - 应用程序返回 403 not found 静态文件错误【英文标题】:elastic beanstalk - app is returning 403 not found error for static files 【发布时间】:2016-07-02 21:09:25 【问题描述】:

本周第一次将 Django 应用程序部署到 Beanstalk,我成功部署了该应用程序,但是一些 static 文件返回 403 禁止错误。我正在使用作为依赖项安装的Django Rest Framework。大多数 403 的静态文件都来自 Django Rest 包。

这是我在日志中看到的

[Wed Mar 16 18:37:03.034730 2016] [authz_core:error] [pid 8842] [client 172.31.40.112:57965] AH01630: client denied by server configuration: /static, referer: APPURL.elasticbeanstalk.com/

我在 settings.py 中的静态属性:

 STATIC_URL = '/static/'

django.config

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: hungryapp/wsgi.py   
  aws:elasticbeanstalk:container:python:staticfiles:
    /static/: /static/  

【问题讨论】:

【参考方案1】:

在 django 中,您可以对来自不同目录的所有静态文件进行分组,您可以在 STATICFILES_DIRS 变量中指定这些文件。

有一个名为python manage.py collectstatic 的命令,它完成了复制STATICFILES_DIRS 中所有静态文件的上述工作,以及与管理面板相关的静态文件,在这种情况下,是与Rest Framework 相关的静态文件。所有静态文件都被复制到您在 django 设置文件中提及为 STATIC_ROOT 的目录中。

现在你必须确定两件事:

1) You run the python manage.py collectstatic command
2) Do a chmod -R 777 /path/to/static_root

您收到 403 是因为 Web 服务器无法访问您的静态文件,因为它被拒绝读取该文件的权限。执行 chmod 777 授予读取(以及写入和执行)静态文件的权限,这应该可以解决您的问题。

【讨论】:

非常感谢。 chmod 命令使用静态文件创建了我的 www 目录,我将其压缩并重新部署。

以上是关于elastic beanstalk - 应用程序返回 403 not found 静态文件错误的主要内容,如果未能解决你的问题,请参考以下文章

在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应

AWS Elastic Beanstalk

如何在 elastic-beanstalk 中应用 ruby​​ 版本补丁

Elastic Beanstalk 无法从 DockerHub 拉取 docker 映像

503 服务器容量 Elastic Beanstalk

带有 docker 应用程序的 AWS Elastic Beanstalk 返回 502