How to deploy structured Flask app on AWS elastic beanstalk
使用此处概述的步骤成功部署测试应用程序后:http://docs.aws.amazon.com/elasticbeanstack/latest/dg/create_deploy_python_flask.html
我尝试部署实际的烧瓶应用程序,其结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | myApp/ runServer.py requirements.txt myApp/ __init__.py helpers.py clean.sh static/ myApp.css handlers/ __init__.py views.py templates/ layout.html viewOne.html viewTwo.html |
其中
我尝试在根目录中以及在
如何将上述
我在将flask应用程序部署到具有类似目录结构的eb时遇到了类似的问题,必须做两件事:
更新my manage.py以创建名称为application,而不是app的对象
1 2 3 4 5 6 | import os from application import create_app, db from flask.ext.script import Manager, Shell application = create_app(os.getenv('FLASK_CONFIG') or 'default') manager = Manager(application) |
号
创建
1 2 3 4 5 | option_settings: "aws:elasticbeanstalk:container:python": WSGIPath: manage.py "aws:elasticbeanstalk:container:python:staticfiles": "/static/":"application/static/" |
这就让弹性豆茎找到了正确的应用调用。
这在官方文件中作了简要描述,并在本博客文章中作了更详细的描述。
编辑-参见下面的项目结构
- 项目根目录
- .E扩展
- application.config(应用程序配置)
- 应用
- 主要的
- 表格.py
- 视图.py
- 主要的
- 静止的
- 模板
- 测验
- 管理.py
- 要求.txt
- 配置PY
- 等等,等等
- .E扩展
在EDOCX1[0]中添加以下内容:
1 2 3 | option_settings: "aws:elasticbeanstalk:container:python": WSGIPath: myApp/handlers/views.py |
更新:
如果没有.ebextensions目录,请为项目创建一个。您可以在《自定义和配置AWS弹性Beanstalk环境指南》中找到关于容器配置的更多信息。
从awsebcli 3.0开始,您实际上可以编辑您的配置设置,通过
Your WSGIPath refers to a file that does not exist.
号
出现此错误是因为beanstalk在默认情况下查找application.py。检查Beanstack Web UI,
。
更新
当我遇到这个问题时,是因为我正在使用GUI上传我的项目文件的压缩包。最初,我正在压缩项目级目录并将该zip上载到eb。
然后我切换到简单地上载项目文件本身的zip,即选择所有文件并将其发送到一个zip,然后GUI上载实用程序能够找到我的application.py文件而没有问题,因为application.py文件不在子文件夹中。
wsgi配置对我来说很痛苦。我确实使用
1-将
2-也将
3-
4-使用
嗯,在我的例子中,我遵循了整个流程和约定,但仍然得到404。问题是我的虚拟环境。我忽略了.gitignore中所有与环境配置相关的文件夹/文件,而不是.ebignore中的文件夹/文件。创建.ebignore并忽略所有与项目代码无关的文件夹/文件后,修复了该问题。