AWS EB Flask无法识别静态文件
我在AWS上用Elastic Beanstalk托管Flask应用时遇到了问题。我按照AWS的文档(看起来有点旧?)做了一些操作,还参考了这里的建议。这样做的时候,如果我的文件夹结构是这样的,就能正常工作:
--application.py /static /templates requirements.txt .ebextensions .elasticbeanstalk
但是,我想让我的应用结构更清晰一些,所以我调整了文件夹结构,结果就不工作了。
--application.py --.ebxtensions --.elasticbeanstalk /app - __init__.py - /static - /templates
我尝试过修改optionsettings.myapp-env中的设置,参考了这里的建议,但还是没能解决问题。
(附注:应用运行得很好,只是无法识别静态文件夹)
任何帮助都会很感激!
2 个回答
3
这个问题似乎是最近的一个版本,我想说说我的经历,因为我花了好几个小时才搞明白到底出了什么问题。我的配置设置都没问题,错误日志和请求日志也没有显示任何问题。最后我打开了开发者控制台,发现我所有的静态资源都出现了ERR_BLOCKED_BY_CLIENT的错误。原来Ghostery把Elastic Beanstalk当成了跨域分析跟踪器,所以这是一个需要记录下来的小坑。关掉这个功能对我来说很简单,但我只是为了好玩而运行一个网站。如果你真的想把一个产品部署到Elastic Beanstalk上,而Ghostery又屏蔽了你所有的静态资源,那可就麻烦了。你的客户可能会觉得你的网站很糟糕,却不会想到去查找原因。我想,最好是把所有资源打包在一起,或者使用CDN。
5
看起来你需要把路径映射改成:
"/static/": "app/static/"
这个映射是把你在HTML中提到的虚拟路径和实际的文件夹结构对应起来。因为你已经改了文件夹,所以现在也得改这个映射。
另外,你也可以在AWS Beanstalk的网页控制台里做同样的设置,不一定要在配置文件里改。