如何将 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
Elastic Beanstalk > 环境 > Flaskwebproject1-env 点击上传并部署

【讨论】:

以上是关于如何将 Visual Studio Flask 应用程序部署到 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

visualstudioinstaller有病毒吗

visual Studio .NET 安装

如何将visual studio卸载干净

将 Visual Studio 项目保存在网络驱动器上

Visual Studio 将项目发布到一个简单的安装程序中

在visual studio中如何将if,while之类的长语句折叠起来?