静态资产不露面弹性魔豆烧瓶(Static assets don't show up for

2019-07-20 12:55发布

你如何获得AWS弹性青苗理解你的烧瓶应用的静态资产? 我做了标准/.ebextensions/python.config夫妇YAML线一拉:

option_settings:
  "aws:elasticbeanstalk:container:python:staticfiles":
    "/static/": "static/"

我所有的在模板资产的呼叫被包裹在“{{url_for(‘静’,文件名=‘IMG / office.jpg’)}}”类型的东西。

但是,没有图像,样式或JavaScript显示出来的页面加载。 下面是一个例子日志文件404 IP - - [25 /二月/ 2013:21:48:13 0000] “GET /static/css/bootstrap.css HTTP / 1.1” 404 328“ HTTP://xyz.elasticbeanstalk .COM / “

我失去了一些东西明显? 一切都运行在我的地方,只是静态的资产很大的不负载有一次,我的git aws.push

Answer 1:

我不知道,你把你的静态文件,但由于我的是典型的app/static ,我有:

[aws:elasticbeanstalk:container:python:staticfiles]
/static/=app/static/
/favicon.ico=app/static/favicon.ico

[aws:elasticbeanstalk:container:python]
StaticFiles=/static/=app/static/,/favicon.ico=app/static/favicon.ico

这两部分似乎是很重要的。 (后者部分有其他的东西在里面太多,但我已经离开了这一点。)其实我有两个资源的路径在这里,无论是/static/目录和顶层/favicon.ico文件哑巴老的浏览器总是要求。



Answer 2:

它也可以做到通过弹性魔豆面板:

配置- >软件配置- >静态文件

然后

只是作为一个替代方案



Answer 3:

在撰写本文时,花费很多时间与AWS EB的config战斗后,我放弃了试图使静态文件的工作,我们都期待并更新了我的瓶的应用程序创建的方式:

app = Flask(__name__, static_url_path='/s')

这使得像网址/s/scripts/my-script.js ,因为我总是使用url_for('static', ...)在我的代码和模板,一切都继续工作AWS之外也是如此。

在二零一三年九月三十日更新 :我几乎可以保证的是, staticFiles设置完全AWS EB的Python的容器忽略。

我上面建议的改变必须通过瓶路由的所有静态文件请求的不良缺点(也许更准确地说,WSGI。)这是不是很难解决,虽然。

在项目根目录下创建一个Apache conig文件,命名为APP-httpd.conf文件

Alias /s /opt/python/current/app/static
<Directory /opt/python/current/app/static>
Order allow,deny
Allow from all
</Directory>

这个配置告诉Apache接管的URL的任何请求开始/s ,我们选择了我们的静态文件的前缀相同,全心全意从我们的应用程序的静态文件夹中。

创建于.ebextensions /定制apache.config此文件:

container_commands:
  add_apache_conf:
    command: "cp app-httpd.conf /etc/httpd/conf.d"

该文件将应用程序部署过程中使用,并将在新的config文件复制到目录从Apache是​​配置加载它认为所有.config文件。



Answer 4:

4+年后的今天,我能够获得使用工作的静态文件:

(文件: .ebextensions/WHATEVER_NAME.config

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: StaticFiles
    value: /static/=PATH/FROM/MY/APP/BASE/DIR/TO/STATIC/DIR/

......在我的情况,这是

    value: /static/=distrib/static/

我发现我的变化

app = Flask(__name__)

app = Flask(__name__, static_url_path='/static')

既无必要,也不足够。 当我只设置static_url_path但不StaticFiles,它没有工作; 当我设置StaticFiles但不static_url_path,它工作得很好。

<讽刺>弹性魔豆是超级简单和有据可查!</讽刺>



Answer 5:

我有一个类似的问题在那里,奇怪的是,从所有文件static/img/在正在担任,但任何static/css/static/js/根本就没有被服务。

为了解决这个问题,我打开.elasticbeanstalk/optionsettings.app-env从烧瓶源的根目录和编辑的代码块是

[aws:elasticbeanstalk:container:python]
NumProcesses=1
NumThreads=15
StaticFiles=/static/.*=
WSGIPath=application.py

[aws:elasticbeanstalk:container:python:staticfiles]

需要注意的是StaticFiles实际上需要一个正则表达式,所以/static/.*.*允许任何路径后/static/



Answer 6:

我发现来解决这个问题一个奇怪的事情是编辑我的.gitignore文件。 它包括删除/ DIST文件夹和包括我的CSS生成到DIST的文件夹。 所以CSS文件实际上是缺少当我部署。

希望这可以帮助任何人谁可能是在同一条船上。



文章来源: Static assets don't show up for flask on elastic beanstalk