AWS elasticbean 不处理 Flask 静态资产

AWS elasticbean does not handles Flask static assets

我用 assets/static 个文件创建了简单的 flask 站点。上传到EC2,服务器正确渲染模板,但是静态文件绝对不可用。

我通过 SSH 连接并检查设置是否全部正确。应用程序根目录的路径是 /opt/python/current/app/,CSS 文件的完整路径 /opt/python/current/app/mysite/static/css/stylesheet.css.

在 web 控制台中指定的相应别名并传输到 Apache 的 wsgi.conf: Alias /static/ /opt/python/current/app/mysite/static <Directory /opt/python/current/app/mysite/static> Order allow,deny Allow from all </Directory> 尝试获取至少 CSS 个文件 (http://xxx.xxx.us-west-2.elasticbeanstalk.com/static/css/stylesheet.css) - 得到 404.

检查文件是否到位以及静态文件夹是否指向正确的位置:将Options + Indexes添加到上面的目录部分,打开urlhttp://xxx.xxx.us-west-2.elasticbeanstalk.com/static/,然后查看我的静态文件夹的内容: css, js, lib.

再检查一下:将文件 1.css 添加到静态根目录,在浏览器中作为目录打开,看到我的文件出现了。试图让它点击这个文件 - 再次得到 404!

既没有添加任何附加设置,也没有添加点文件。成功获取所有动态页面。

如何使用 EC2 处理静态文件?

Flask 提供到 (root_folder)/static 的路由,而您将 apache 配置指向 (root_folder)/mysite/static 的路由,而 Flask 找不到该位置的路由,因此 404'ing。

解决方案:

  1. 更改 Flask 的静态文件夹
  2. 将当前静态文件夹移动到 (root_folder)

解决方案简单而愚蠢:在定义 /static/ 别名的配置部分中,我错过了尾部斜杠。

不正确:mysite/static

正确:mysite/static/