暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Flask 用户指南 - 教程(9)- 部署到生产环境中

数据库杂货铺 2022-02-28
1324

部署到生产环境中


教程的这一部分假设有一个需要部署应用程序的服务器,概述了如何创建和安装分发文件,但不会详细介绍要使用的服务器或软件。你可以在开发计算机上设置一个新的环境来尝试下面的说明。

 

构建并安装

 

当想将应用程序部署到其他地方时,需要构建一个分发文件。Python 分发的当前标准是 wheel 格式,带有 .whl 扩展名。确保首先安装了 wheel 库:

 

> pip install wheel
复制

 

运行 Python setup.py 提供了一个命令行工具,用于处理与构建相关的命令。bdist_wheel 命令将生成一个 wheel 分发文件。

 

> python setup.py bdist_wheel
复制

 

该文件位于 dist/flaskr-1.0.0-py3-none-any.whl。文件名的格式为 {project name}-{version}-{python tag}-{abi tag}-{platform tag}

 

将此文件复制到其他机器,设置新的虚拟环境,然后使用 pip 安装该文件。

 

> pip install flaskr-1.0.0-py3-none-any.whl
复制

 

pip 将安装项目及其依赖项。

 

因为这是另一台机器,所以需要再次运行 init-db 以在 instance 文件夹中创建数据库。

 

Windows 下命令为:

 

> set FLASK_APP=flaskr
> flask init-db
复制

 

Flask 检测到它已安装(不是可编辑模式)时,它会为实例文件夹使用不同的目录,位于 venv/var/flaskr-instance

 

配置密钥

 

在本教程的开头,为 SECRET_KEY 指定了一个默认值。在生产环境中这应该更改为随机字节。否则,攻击者可以使用公开的 'dev' 密钥修改会话 cookie,或任何使用该密钥的其他内容。

 

可以使用以下命令输出随机密钥:

 

> python -c "import secrets; print(secrets.token_hex())"
复制

 

在实例文件夹中创建 config.py,如果存在,工厂将从此文件中读取。将生成的值复制到 config.py 中。

 

venv/var/flaskr-instance/config.py

 

SECRET_KEY = '192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'
复制

 

也可以在此文件中设置任何其他必要的配置,目前 Flaskr 只需要 SECRET_KEY

 

在生产环境服务器中运行

 

在公共场景而不是在开发环境中运行时,不应使用内置的开发服务器(flask run)。Werkzeug 为方便起见提供了开发服务器,但其设计并非特别高效、稳定或安全。

 

请使用用于生产环境的 WSGI 服务器。例如,使用 Waitress,首先在虚拟环境中安装它:

 

> pip install waitress
复制

 

需要将应用程序通知给 Waitress,但它不像 flask run 那样使用 FLASK_APP。需要告诉它导入并调用应用程序工厂以获取应用程序对象。

 

> waitress-serve --call flaskr:create_app
复制

 

 

 

原文:

https://flask.palletsprojects.com/en/2.0.x/tutorial/deploy/


文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论