部署到生产环境中
教程的这一部分假设有一个需要部署应用程序的服务器,概述了如何创建和安装分发文件,但不会详细介绍要使用的服务器或软件。你可以在开发计算机上设置一个新的环境来尝试下面的说明。
构建并安装
当想将应用程序部署到其他地方时,需要构建一个分发文件。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/