如何将 Visual Studio Flask 应用程序部署到 Elastic Beanstalk
Posted
技术标签:
【中文标题】如何将 Visual Studio Flask 应用程序部署到 Elastic Beanstalk【英文标题】:How to deploy Visual Studio Flask app to Elastic Beanstalk 【发布时间】:2020-11-14 21:36:03 【问题描述】:我正在使用 Visual Studio 2019 Flask Web Project 模板。它在我的本地 Python 环境中运行,是一个好的开始(非常类似于标准的 Asp.net)模板。我创建了一个 Python Elastic Beanstalk 应用程序来托管它。我正在尝试在 AWS Elastic Beanstalk 上部署它。我在以下位置创建了一个存储库:https://github.com/jlongo62/Flask-Web-Project
我认为这些文件之一(或丢失的文件)需要命名 application.py(它可能还需要一些特殊的内容)。我包括一个 目录列表。
看来我需要压缩并上传它 通过门户/ cli。我不确定 zip 应该是什么样子,但是 我怀疑 requirements.txt 需要位于根目录。)。如果 AWS 工具包 扩展不能处理这个工作,它应该很容易编写脚本。
在 GitHub 中有更好的模板或示例项目吗?
修复简单吗?
\FlaskWebProject1\FlaskWebProject1
\FlaskWebProject1\FlaskWebProject1.pyproj
\FlaskWebProject1\FlaskWebProject1.pyproj.user
\FlaskWebProject1\requirements.txt
\FlaskWebProject1\runserver.py
\FlaskWebProject1\FlaskWebProject1\static
\FlaskWebProject1\FlaskWebProject1\templates
\FlaskWebProject1\FlaskWebProject1\views.py
\FlaskWebProject1\FlaskWebProject1\__init__.py
\FlaskWebProject1\FlaskWebProject1\__pycache__
\FlaskWebProject1\FlaskWebProject1\static\content
\FlaskWebProject1\FlaskWebProject1\static\fonts
\FlaskWebProject1\FlaskWebProject1\static\scripts
\FlaskWebProject1\FlaskWebProject1\static\content\bootstrap.css
\FlaskWebProject1\FlaskWebProject1\static\content\bootstrap.min.css
\FlaskWebProject1\FlaskWebProject1\static\content\site.css
\FlaskWebProject1\FlaskWebProject1\static\fonts\glyphicons-halflings-regular.eot
\FlaskWebProject1\FlaskWebProject1\static\fonts\glyphicons-halflings-regular.svg
\FlaskWebProject1\FlaskWebProject1\static\fonts\glyphicons-halflings-regular.ttf
\FlaskWebProject1\FlaskWebProject1\static\fonts\glyphicons-halflings-regular.woff
\FlaskWebProject1\FlaskWebProject1\static\scripts\bootstrap.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\bootstrap.min.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery-1.10.2.intellisense.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery-1.10.2.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery-1.10.2.min.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery-1.10.2.min.map
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery.validate-vsdoc.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery.validate.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery.validate.min.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery.validate.unobtrusive.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\jquery.validate.unobtrusive.min.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\modernizr-2.6.2.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\respond.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\respond.min.js
\FlaskWebProject1\FlaskWebProject1\static\scripts\_references.js
\FlaskWebProject1\FlaskWebProject1\templates\about.html
\FlaskWebProject1\FlaskWebProject1\templates\contact.html
\FlaskWebProject1\FlaskWebProject1\templates\index.html
\FlaskWebProject1\FlaskWebProject1\templates\layout.html
\FlaskWebProject1\FlaskWebProject1\__pycache__\views.cpython-37.pyc
\FlaskWebProject1\FlaskWebProject1\__pycache__\__init__.cpython-37.pyc
【问题讨论】:
【参考方案1】:您的应用程序在Python 3.7 running on 64bit Amazon Linux 2/3.0.3
EB 环境中运行。
只需将runserver.py
更改为application.py
。您也可以稍微修改(端口和名称)其内容,除非您想自定义 EB 环境以匹配您的应用程序的设置。
application.py
"""
This script runs the FlaskWebProject1 application using a development server.
"""
from os import environ
from FlaskWebProject1 import app as application
if __name__ == '__main__':
HOST = environ.get('SERVER_HOST', 'localhost')
try:
PORT = int(environ.get('SERVER_PORT', '8000'))
except ValueError:
PORT = 8000
application.run(HOST, PORT)
将其压缩成app.zip
(示例名称),内容为:
application.py
FlaskWebProject1
requirements.txt
部署app.zip
。
【讨论】:
【参考方案2】:感谢 Marcin。 AWS Toolkit for Visual Studio 不支持部署或环境创建。它仅适用于 .Net 环境。
我已更新 https://github.com/jlongo62/Flask-Web-Project 以反映这些说明
-
创建 AWS Elastic Beanstalk 环境。使用门户或 CLI。
环境 > 创建环境(Web 服务器环境)> 选择
设置:
平台:Python 平台分支:Python 3.7 平台版本:3.0.3-
在 application.py 中添加内容(端口 8000 似乎是关键成分):
"""
This script runs the FlaskWebProject1 application using a development server.
"""
from os import environ
from FlaskWebProject1 import app as application
if __name__ == '__main__':
HOST = environ.get('SERVER_HOST', 'localhost')
try:
PORT = int(environ.get('SERVER_PORT', '8000'))
except ValueError:
PORT = 8000
application.run(HOST, PORT)
-
使用以下根目录创建一个 zip。 Zip 文件名无关紧要:
application.py
FlaskWebProject1
requirements.txt
-
使用门户(或 cli)部署 zip
【讨论】:
以上是关于如何将 Visual Studio Flask 应用程序部署到 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章