使用Django 1.11.6,python 3.6.2
简短摘要:在服务器上正确收集静态文件,但只提供了一个应用程序的子目录,管理员的静态文件返回为404.
运行本地开发服务器一切正常。部署到我的EB实例后,管理员应用程序的所有静态文件都没有加载。如果我运行eb ssh
并在服务器上查看,我可以看到收集的静态文件夹以及所有不同应用程序的子文件夹。这些文件都在我期望的地方。 django前端映射上生成的链接以合理的方式映射到这些路径,只是静态/管理中的任何内容返回404,而静态/实体中的文件工作正常。
测试前端的路径:
/static/admin/css/base.css (404)
/static/entities/style.css (works)
在服务器上,静态的所有收集文件都可以正常显示:
/opt/python/current/app/static/admin/css
/opt/python/current/app/static/entities
不知道为什么一个子目录服务器正常,但其他子目录返回404。
来自我的django.config
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "spf.settings"
"PYTHONPATH": "/opt/python/current/app:$PYTHONPATH"
"ALLOWED_HOSTS": ".elasticbeanstalk.com"
"aws:elasticbeanstalk:container:python":
WSGIPath: spf/wsgi.py
NumProcesses: 3
NumThreads: 20
"aws:elasticbeanstalk:container:python:staticfiles":
"/static/": "static/"
...
03_collectstatic:
command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"
在本地运行collectstatic命令会生成每个应用程序具有相同子目录的正确静态文件夹。
答案 0 :(得分:2)
懦弱的自我回答: 在我的eb实例的AWS配置中,我设置了一些静态文件别名,以直接从我的一个子应用程序提供服务。 (在配置下看 - >软件配置 - >静态文件)。这些别名会覆盖您在django应用程序中可能具有的任何wsgi设置。 :)