你如何获得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
我不知道,你把你的静态文件,但由于我的是典型的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
文件哑巴老的浏览器总是要求。
在撰写本文时,花费很多时间与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文件。
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,它工作得很好。
<讽刺>弹性魔豆是超级简单和有据可查!</讽刺>
我有一个类似的问题在那里,奇怪的是,从所有文件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/
我发现来解决这个问题一个奇怪的事情是编辑我的.gitignore文件。 它包括删除/ DIST文件夹和包括我的CSS生成到DIST的文件夹。 所以CSS文件实际上是缺少当我部署。
希望这可以帮助任何人谁可能是在同一条船上。