部署产品

本文假设你要把应用部署到一个服务器上。本文只是给出如何创建发行文件并进行安装的概览,但是不会具体讨论使用哪种服务器或者软件。你可以在用于开发的电脑中设置一个新的虚拟环境,以便于尝试下面的内容。但是建议不要用于部署一个真正的公开应用。以多种不同方式部署应用的列表参见 部署方式 。

构建和安装

When you want to deploy your application elsewhere, you build a wheel (.whl) file. Install and use the build tool to do this.

$ pip install build
$ python -m build --wheel

You can find the file in dist/flaskr-1.0.0-py3-none-any.whl. The file name is in the format of {project name}-{version}-{python tag} -{abi tag}-{platform tag}.

复制这个文件到另一台机器, 创建一个新的虚拟环境,然后用 pip 安装这个文件。

$ pip install flaskr-1.0.0-py3-none-any.whl

PIP将安装相关项目及其依赖项。

因为这是一台不同的机器,你需要再次运行 init-db ,在实例文件夹中创建数据库。

$ flask --app flaskr init-db

当FlASK检测到它已安装(不可编辑模式)时,它会为实例文件夹使用不同的目录。您可以在以下位置找到它 .venv/var/flaskr-instance 取而代之的是。

配置密钥

在教程开始的时候给了 SECRET_KEY 一个默认值。在产品中我们应当设置一 些随机内容。否则网络攻击者就可以使用公开的 'dev' 键来修改会话 cookie ,或者其他任何使用密钥的东西。

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

$ python -c 'import secrets; print(secrets.token_hex())'

'192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

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

.venv/var/flaskr-instance/config.py
SECRET_KEY = '192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'

也可以在这里设置任何其他必要的配置,Flaskr 只需要 SECRET_KEY 即可。

运行产品服务器

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

相反,应当使用产品级的WSGI服务器。例如,使用 Waitress 。首先在虚拟环境中安装:

$ pip install waitress

你需要告诉女服务员你的应用程序,但它不使用 --app 喜欢 flask run 的确如此。您需要告诉它导入并调用应用程序工厂以获取应用程序对象。

$ waitress-serve --call 'flaskr:create_app'

Serving on http://0.0.0.0:8080

参见 部署方式,以获得许多不同的方式承载应用程序的列表。使用 Waitress 只是一个示例,因为它同时支持Windows和Linux。可以为项目选择更多的WSGI服务器和部署选项。

下面请阅读 继续开发.